之前做过两年的运维,用过很多命令,深切体会到某些linux命令熟练掌握后对效率提升有多大。举个简单的例子,在做了研发后经常会有跑一些数据,对于结果数据的处理,我们的产品同学一般都习惯于用excel做统计,把数据复制到excel里,然后数据分列,排序………… 最后得出某些简单的结论,我只需要cat, sort, uniq, awk, grep 这几个命令挥手间完成相同的操作。
这里我总结下我工作这几年用过的一些命令,当然,这里就不提那些vim cd ls mv cp 这种简单的命令了,如果你都不会这些命令的话,建议你先学习下。这里命令很多,我只简单列出几个我常用的参数。其实很多命令我也用的不是特别多,这篇文章我也只是希望能让大家知道有这样一个工具,但具体用如果想继续深入了解的话建议查看下手册,部分比较命令我也列出了有些参考资料。
服务器运行状态相关命令
ps
查看系统进程线程,我一般都是用这个命令查看进程pid的,然后用pid做更深入的排查。
基本用法
ps -aux 查看所有进程ps -T -p ${pid} 查看某个进程的线程
参考资料10个重要的Linux ps命令实战
pstree
查看系统进程树,他可以把各个进程之间的关系用树形结构标识出来。
基本用法pstree
top
查看系统进程线程运行情况,包裹资源的使用情况,系统负载等。我的用法是看下服务器上负载是否很高,然后看具体是哪个进程,哪个线程占用cpu比较多。
基本用法top 列出所有线程负载信息top -H 列出所有线程的负载信息top -H -p ${pid} 列出某个pid下所有线程的负载信息
free
查看内存及使用情况
基本用法free
文件操作相关
cat
我都是用这个命令查看配置文件,或者是日志文件,但是有点需要注意,cat命令会把整个文件输出到终端了,如果文件内容非常多linux命令,建议使用grep进行过滤,或者直接用less或more命令。
基本用法cat file.txt
tail查看某个文件的尾部,或者查看标准出入的最末尾,默认值显示10行,可以用-n参数来指定输出多少行。
基本用法tail -n 100 file.txt 输出最末尾的100行tail -f file.txt 随着文件新增,持续输出新增的内容,一般用来看实时日志
head
和tail命令很相似,不过head是输出头部内容,个人感觉head远没有tail命令用的多。
基本用法head -n 100 file.txt 输出最开始的100行
more
也是用来查看文件,但more命令只加载一屏的内容,可以向下翻动,因为加载的内容少,所以比cat快多了。
基本用法more file.txt
less和more很像,但是可以上下翻动,感觉less和more只需要less就可以了,完全可以去掉more啊
基本用法less file.txt
grep这个是我非常常用的一个命令了,尤其是在问题排查的时候,需要用grep从大量的数据中筛选出一些我想要的。 grep也支持正则表达式匹配。
基本用法grep "abc" file 从file中筛选出包含 abc的行。
awk
开头我也说过,这个命令是我最常用的命令之一,比如在文件有多列的时候,我可以用awk输出具体某几列,或者做一些简单的统计 求和,求平均值啊,再或者做一下简单的数据格式化。
基本用法cat data | awk "{print $1,$3,$5}" 输出第1 3 5列,注意下标是从1开始cat data | awk "{ sum += $1 } END { print sum }" 对第一列求和cat data | awk -F"" "{print $1,$3}" 把每行数据按tab分列,并输出1 3列