我常用的一些linux命令小结

之前做过两年的运维,用过很多命令,深切体会到某些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命令会把整个文件输出到终端了,如果文件内容非常多,建议使用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'\t' '{print $1,$3}' 把每行数据按tab分列,并输出1 3列

参考资料
阮一峰 awk介绍

sort

对标准内容做排序,

基本用法
cat file|sort 把file里的数据排序,注意是按字典序排的,如果想按数值排,需要能够加-n参数
cat file|sort -k2 -n -r 按第二列 数值 倒序 排序,-k指定第几列,-r是翻转reverse的意思

uniq

对排序好的内容去重,注意它只是把相邻且相同的去重,所以如果想要全局去重,需要先用sort排序。

基本用法
cat file|sort|uniq 把file里的文件排序并去重
cat file|sort|uniq -c 把file里的文件排序并去重,且输出每行出现的次数

wc

我都是用wc来数有多上行,其实wc不仅仅能数多少行,还可以数多少单词,多少字符。

基本用法
wc -l file 数下file里有多少行
wc -w file 多少个单词
wc -c file 多少个字节
wc -m file 多少个字符

参考资料
https://www.jb51.net/LINUXjishu/62056.html

sed

parallel

linux大部分命令都是单进程的,这个命令可以让其他命令多进程执行。

参考资料
15分钟神器gnu parallel 入门观止

scp

之前运维大量机器的时候,通常需要批量修改某个配置文件,都是在一台机器上改好,然后用scp脚本分发到其他机器上去的,大大提高效率。

基本用法
scp aaa.txt test@192.168.1.3:/tmp/ 把当前目录下的aaa.txt文件通过192.168.1.3上的test账号放到/tmp目录下
scp test@192.168.1.3:/tmp/aaa.txt . 和上一条相反

磁盘及IO

du

查看目录大小

基本用法
du -h --max-depth=1 输出最深1层的目录,然后文件大小用人类可读的方式,比如1K 234M 2G

df

查看磁盘大小和占用情况

基本用法
df -h 查看各个分区的大小和使用情况

iostat

查看磁盘的io状态

iotop

可以类似于top目录一样,实时显示各个进程的io状态。

find

查找文件,查找条件可以是文件名,文件日期,文件大小,很强大。 我们之前服务器上有个磁盘满就强制删除服务器某个目录下大于1g,且时间大于2天,且文件名是*.log的文件,就是用find加xargs命令做的

基本用法

find /home/test -iname "test.txt 在/home/test/下找文件名为test.txt的文件,也支持通配符
find /home/test -isize +100M 查找/home/test下大于100M的文件

参考资料
wikipedia unix find

locate

定位某个具体文件的位置,locate命令要比find -name快得多,原因是它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db,这个数据库会通过一个cron定时更新,所以有可能新建的文件会检索不到。

基本用法
locate a.txt 定位a.txt的位置,如果系统中有多个a.txt,会全部显示出来。

tree

可以看到树状目录结构,

基本用法
tree -L 2 只显示两层树状结构

网络

ping

查看网络是否通

基本用法
ping www.baidu.com

nc

netcat,可以用来看远程某个端口是否打开,功能很强大,但是我用到的不多。

基本用法
nc -z xindoo.me 443 检测我服务器上的443端口是否开放(当然是开的)

参考资料
linux nc命令介绍

route

查看和操作本机路由表

基本用法
route 列出本地路由表

参考资料
route命令

netstat

查看本机的网络状态,可以看到端口占用情况和网络链接情况。

基本用法
netstat -antp

traceroute

查看一个请求到目标服务器所经过的所有路由节点,一般用来排查网络问题。

基本用法
traceroute www.baidu.com

参考资料

netstat命令

iftop

查看实时网络io情况

lsof

查看端口占用

dig

查看域名的信息,之前做运维的时候,经常需要验证某个域名解析改动是否生效,因为一般一个域名会-A到多个ip上,用ping命令只能看到一个ip,这个时候我就会用dig来看域名解析信息了。

基本用法
dig www.baidu.com

参考资料
dig 命令介绍

curl

发起一个http请求,我一般都是用这个命令来验证服务是否能正常访问的,它有获取html源码的功能。

基本用法
curl www.baidu.com
curl -I www.baidu.com 获取请求baidu.com的请求头

参考资料
curl的用法(英文)

wget

下载网络上一个文件,基本上就是有个命令行版的下载工具了。

基本用法
wget xindoo.me/test.txt 把我服务器上test.txt文件下载到本地

其他

yum|apt install

很多时候服务器上没有我们想要的工具,可以用这个命令安装下,yum是Fedora和RedHat以及CentOS中的Shell前端软件包管理器, apt是ubuntu平台上的。

基本用法
yum install curl
apt install curl

man

这个命令是用来查看其它命令手册的,可以看到具体某个命令的详细作用,和具体参数。这个是个很重要的命令了,一般他会比各命令自带的–help详细很多。

基本用法
man curl 查看curl命令的手册

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Linux加载vmlinux调试

    使用gdb加载内核符号表 arm-eabi-gdb out/target/product/msm8625/obj/KERNEL_OBJ/vmlinux 在内核的.config里面要打开 DEBUG_INFO和DEBUG_VM 定位故障代码 (gdb) l * qrd7627a_add_io_devices+0x100 0xc07cd05c is in qrd7627a_add_io_devices (/home/yejialong/GH700C/kernel/arch/arm/mach-msm/

  • Linux下redis的持久化、主从同步与哨兵详解

    1.0 redis持久化 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. 1|1RDB持久化 redis提供了RDB持久化的功能,在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)这个功能可以将redis在内存中的的状态保存到硬盘中,RDB持久化产生的RDB文件是一个经过压缩的二进制文件,这个文件被保存在硬盘中,redis可以通过这个文件

  • linux 搭建svn服务器的方法步骤

    一:安装svn yum install -y subversion 二:创建仓库 1:创建仓库目录 mkdir -p /var/project/test 2:创建仓库 svnadmin create /var/project/test 创建成功后,在/var/project/test目录下如下目录: drwxr-xr-x. 2 root root 51 1月 30 13:26 conf drwxr-sr-x. 6 root root 4096 1月 30 13:26 db -r--r--r--.

  • linux中各种锁机制的使用与区别详解

    前言: 相信需要了解这方面的知识的小伙伴,已经基本对进程间通信和线程间通信有了一定了解.例如,进程间通信的机制之一:共享内存(在这里不做详解):多个进程可同时访问同一块内存.如果不对访问这块内存的临界区进行互斥或者同步,那么进程的运行很可能出现一些不可预知的错误和结果. 接下来我们了解三种常见的Linux下的互斥操作->锁. 1.互斥锁(mutex) 特点:对于读者和写者来说.只要有一方获取了锁,另一方则不能继续获取,进而执行临界区代码. 创建锁: 有两种方法创建互斥锁,静态方式和动态方式.PO

  • linux Bash脚本判别使用者的身份方法示例

    经常要在bash脚本里面或者直接对脚本本身加上sudo运行命令,但是这引发了一系列的问题. 比如用sudo的时候,脚本里的~或$HOME指代用户文件夹的这个变量,到底是应该指向我真正的用户文件夹如/home/pi呢,还是指向了超级管理员的用户文件夹/root/呢? 实际上它指向了/root/文件夹,这是我们绝对不想要的.但是很多命令如安装个程序,都不得不用sudo,那怎么办? 首先要说下经验:命令行的权限执行,从表现上来看,可以分为以下5种情况: admin-manual: 普通用户手敲命令 s

  • linux中shell的变量的数值计算

    1.expr命令 a=123 expr $a + 10 ##加法 expr $a - 10 ##减法 expr $a \* 10 ##乘法 expr $a / 10 ##除法 expr $a % 10 ##取余 2.$[]和$(())表达式 echo $[a+10] echo $[a-10] echo $[a*10] echo $[a/10] echo $[a%10] echo $((a+10)) echo $((a-10)) 3.let命令(let命令在执行后会保存新的值) let a+=10

  • Linux中查看指定文件夹内各个子文件夹内的文件数量

    count脚本 #!/bin/sh numOfArgs=$# if [ $numOfArgs -ne 1 ]; then echo -e "Usage: \nbash $0 dirForCount" exit -1 fi # args ROOTDIR=$1 # core part find $ROOTDIR -maxdepth 1 -type d | sort | while read dir; do count=$(find "$dir" -type f | wc

  • linux中gdb的入门使用教程

    前言 gdb是linux下非常好用的一个调试工具,虽然它是命令行模式的调试工具,但是它的功能强大到你无法想象,这里简单介绍下gdb的使用方法,需要的朋友们下面来一起看看详细的介绍吧. 断点 在代码的指定位置中断,使程序在此中断. break <function> 在进入指定函数时停住 break <linenum> 在指定行号停住. break +/-offset 在当前行号的前面或后面的offset行停住.offiset为自然数. break filename:linenum 在

  • Linux内核宏container_of的深度剖析

    1.前面说的 我在好几年前读linux 驱动代码的时候看到这个宏,百度了好久,知道怎么用了,但是对实现过程和原理还是一知半解. container_of宏 在linux内核代码里面使用次数非常非常多,对于喜欢linux编程的同学来说,了解其实现方法,对以后看内核代码,写内核驱动的帮助都非常大,当然,我不是说了解这个就可以为所欲为了,内核博大精深,先宏观再微观去学习,不积跬步何以致千里,不要想着一口就能吃成一个胖子,我这篇文章主要剖析一下这个函数的实现原理,希望对大家学习过程中有所帮助. andr

  • Jupyter notebook在mac:linux上的配置和远程访问的方法

    upyter Notebook已经逐渐取代IDE成为了多平台上写简单Python脚本或应用的几家选择. Jupyter Notebook可以通过pip/pip3安装: pip3 install jupyter 然后在目标文件夹目录下,输入指令jupyter notebook开启服务,可在浏览器地址localhost:8888中访问主页 允许远程访问 在本地,我们访问localhost:8888就能看到Jupyter Notebook的本地主页,但是在远程访问中,并不能直接这么做.因此需要以下一些

随机推荐