一个Java工程师的入门级Linux命令集

0、前言   
网上介绍linux的命令的文章一大堆,可是大部分都是流于命令介绍,把命令的全部参数都介绍一遍,可是其实在真正的工做中,不少参数都不会用到。本文总结了我本身经常使用的一些命令,这些命令都比较简单,运维大神应该看不上,可是,做为一个开发工程师,这些命令每每是平常用的最频繁的,并且命令与命令之间每每是组合着使用的,根据不一样场景组合都不一样。
 
一、基础命令
1.一、ssh
咱们要去线上机器,ssh命令必定绕不过,虽然如今有不少ssh命令客户端,可是知道一下原理也是有好处的,万一哪天就要你敲命令行呢?ssh用来链接到远程服务器,通常都是 ssh xxx@192.168.0.1 这种方式去链接,其中xxx是你登陆机器的身份,通常是本身的用户名,或者时root,192.168.0.1则是须要登陆的机器IP。除了通常的ssh用法,有些开发可能会使用私钥文件去链接,这时候就能够用ssh -i kesin.pem xxx@192.168.0.1,其中 kesin.pem是你的私钥。
 
1.二、cd/pwd
cd用来切换目录,最基础的命令,没啥好说的,注意使用的时候“.” 表示当前目录, “..” 表示上一个目录,“~”表示系统登陆时的默认目录。pwd是用来显示当前目录的。
 
1.三、ls
ls是用来显示当前目录的文件的命令。我通常用ls -lk列出目录下全部文件,而且打印详细信息,其中文件大小用KB表示,也就是-k这个参数的做用。若是嫌麻烦,能够直接用ll,ll是ls -l的别名或者本身定义别名。有时候我须要找一个目录下的某些文件,这时候就会用 ls -l -R /xxx | grep "xxx" 去递归搜索。
 
1.四、mkdir/rm
mkdir用来建立一个文件夹。rm用来删文件,通常是rm xxx,若是要递归删除文件夹下的全部文件,则用 rm -r /xxx,切记不要在root权限下用rm -r /,会把整个Linux文件所有删掉的。
 
1.五、cp
cp用来在本机复制文件 通常用法是 cp a.txt /temp/b.txt 将a.txt拷贝到temp目录下而且命名为b.txt
 
1.六、scp
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它相似的命令是cp,不过cp只是在本机进行拷贝不能跨服务器,并且scp传输是加密的。通常用法是 scp a.txt root@11.189.78.21:/usr/local 做用是把a.txt拷贝到11.189.78.21机器上的/usr/local文件夹下。
 
二、文本处理命令
2.一、grep
通常在排查业务问题的时候,grep "xxx" biz.log 最经常使用,它的做用是在biz.log中查找全部含有XXX关键词的行。若是想知道关键词出现了多少次,那么就用grep -c "xxx" biz.log或者用grep "xxx" biz.log | wl -c 其中 wl -c就是用来统计次数的。有时候为了对日志异常作全局监控,我会用到grep -e "[a-Z]*Exception" *.log | sort | uniq -c ,它的做用是查询全部日志中带有Exception关键词的日志,而且去重后进行排序。grep实际上是个很是强大的命令,能够经过管道和不少命令结合,开发出强大的脚本,你们能够结合实际场景慢慢摸索。
 
2.二、head/tail
有时候grep出来的日志比较多,你只想看前5行,那么你能够用 grep "xxx" biz.log | head -5,当你应用发布完成之后,你想看下新功能打印的日志有没有出现,以此来判断新功能是否正常,但又不想一直手工grep,你能够用到tail -f biz.log | grep "xxx",这个命令比较强大,只要日志一直在打印,它就一直读取日志文件最后一行同时去搜索关键词。
 
2.三、cat/more/less
cat比较简单,主要三个用法,cat filename 直接读取并显示整个文件,cat 1.txt 2.txt > 3.txt 将几个文件的内容合并到一个文件,cat > filename从键盘建立文件。
more filename会加载文件,可是和cat不同的地方是,more是一行一行显示,你能够按空格键进行翻页,能够ctrl+B往前翻页,ctrl+F日后翻页,能够用/xxx进行全局匹配,找到第一次出现xxx的那一行.
less和more的用法差很少,区别在于less不会在一开始就加载整个文件,在一些大文件日志分析的时候,尽可能用less。
 
2.四、awk
awk自己是一个很强大的工具,咱们能够为awk工具传递一个字符串,该字符串的内容相似一种编程语言的语法,咱们能够称其为Awk语言,而awk工具自己则能够看做是Awk语言的解析器。就比如python解析器与Python语言的关系。咱们通常使用awk对文件中文本分列进行处理,因此若是一个文件中的每行都被特定的分隔符(常见的是空格)隔开,咱们能够将这个文件当作是由不少列的文本组成,这样的文件最适合用awk进行处理。
一个完整的awk命令形式以下:
awk [options] 'BEGIN{ commands } pattern{ commands } END{ commands }' file
我通常常到的就两种:
一、awk '{print$1}' a.txt 意思是对a.txt文本进行处理,按照空格(默认就是空格)分割,而后打印出第一个字符串,好比a.txt的内容是aaa bbb ccc 通过上面的命令处理后输出的就是aaa
二、awk -F "," '{print$2}' a.txt 意思是对a.txt进行文本处理,按照","分割,而后打印出第二个字符串,好比a.txt的内容是
aaa,bbb,ccc 通过上面的命令处理后输出的就是bbb
 
其实awk在工做中不少时候被用来进行log分析的, 咱们在打印业务日志的时候须要规范日志格式,好比:OrderService.create#param1,param2,param3#errorCode=xxx,errorMsg=yyy这样的日志,这时候若是要对errorCode进行监控,就只能靠awk了,脚本相似于:
cat biz.log | awk -F "#" '{print$3}' | awk -F "," '{print$1}' | awk -F "=" 'print{$2}'| sort | uniq -c| > errorCode.txt
脚本先加载 biz.log,而后按照"#"分割,取出第三个字符串 “errorCode=xxx,errorMsg=yyy”,而后经过管道再调用一次awk,按照“,”分割,取出第一个字符串“errorCode=xxx”,而后再用一次awk按照=分割,取出xxx,最后进行去重排序后写入errorCode.txt
上面只是一个例子而已,具体须要根据日志分析的需求去定制化脚本,若是想详细了解awk,推荐一本书《sed与awk》
 
2.五、sed
sed是一个很好的文件处理工具,自己是一个管道命令,主要是以行为单位进行处理,能够将数据行进行替换、删除、新增、选取等特定工做。我在工做中用到sed比较少,主要是用它作全局替换,好比上面用awk处理获得的errorCode.txt,假设它的原文以下:
1 P001
2 P009
13 P102
其中数字是该errorCode出现的次数,P001/P009这些就是具体的errorCode,若是这时候我须要将P替换成字符串ERROR,以便后续的处理,那么我就能够用sed "s/P/ERROR" errorCode.txt进行全局替换。
若是要深刻学习sed,一样推荐看《sed与awk》这本书。
 
三、小结
Linux命令最好的学习方式不是看书,也不是死记硬背每一个命令的参数,而是不断地使用,而后总结出一套属于本身的脚本,每一个开发都应该维护好本身的一套脚本,不断地用脚本把一些能够自动化的工做用脚本代替,从而提升本身的工做效率!
 

========================================================python

若是以为还不错,请随意打赏linux

相关文章
相关标签/搜索