Linux指令总结

    此篇文章内容是我很久以前在印象笔记中的一个知识总结,大概122个Linux指令。如今,写出来就当再回顾一遍了。若有错误的内容,请朋友们指出。



pwd   显示当前位置的路径

          参数:-P     显示真实路径,而非链接路径


mkdir 创建目录

          参数:-m     设置目录权限。eg:mkdir -m 777 /apps

                      -p     设定层级目录。 eg:mkdir -p /apps/nginx

          eg:mkdir -m 777 -p /tmp/test{1,2}


ls   列出文件或目录名称

          参数:-a     列出全部文件 包括.开头的文件(隐藏文件)

                     -A     列出全部文件 不包括.与..两个目录

                     -d     仅列出目录

                     -f      直接列出结果 ,不排序

                     -F     列出全部文件,并显示附加信息,如 *  /  =  |

                     -h     显示人类易读的文件容量

                     -l      长格式显示

                     -t      以时间排序

                     -r      反向输出

                     -i      显示inode

                     -Z     查看安全性文件(selinux需开启)

                     --time-style=long-iso  格式化时间

        eg:    ls -l --time-style=long-iso

        eg:    ls -lhi 

8599744978 drwxr-xr-x  3 stephenzhang  staff    96B  6 28 18:44 PycharmProjects

以上屏幕输出字段的解析:

第一列:inode 索引节点编号:是文件或目录所在磁盘中唯一标识,读取时先读取此索引节点。

第二列:

        第1个字符:文件类型,-普通文件;d目录;l链接文件;c字符文件

        第2-10字符:(rwxrwxrwx)文件权限

        第11个字符:.  selinux相关,当关闭selinux后,. 即消失。

第三列:文件硬链接数。相当于文件的另一个入口,同一个文件的对应的硬链接其对应相同的inode编号。

第四列:文件的属主(或用户)

第五列:文件所在的用户组(属组)

第六列:文件大小

第七列:文件改动日期/时间

第八列:文件名称或目录名称


du   统计文件或目录使用容量

          参数:-a     所有文件与目录

                      -s     只显示总数

                      -h     显示人类易读的文档容量


cp   复制文件或目录

          参数:-a    相当于-dr --preserve=all

                     -p    连同文件的属性(权限、用户、时间)一起复制。

                     -r     递归复制,层级目录复制,但不复制文件的权限。

                     -i      覆盖询问

                     -u     若复制的文件存在差异时才进行复制


rm   删除文件或目录

          参数:-f    强制删除

                     -i     删除提示

                     -r    递归删除


chgrp   改变文件所属组

          参数:-R   递归

          eg:chgrp -R python /tmp/test


chown   改变文件或目录拥有者

          参数:-R   递归

          eg:chown -R python.python  /tmp/test


chmod   改变文件权限   r:4 w:2 x:1

          参数:-R     递归

                       u g o a:   +加  -减 =设定   eg:u+r

          eg:chmod u=rwx,go=rx /tmp/test/test.txt

          eg:chmod a+r /tmp/test/test.txt

          eg:chmod 644 /tmp/test/test.txt

          setuid :针对程序或二进制文件(注意.sh文件无效) eg: -rwsr--r--      

          有s或S位时,普通用户具有该文件的属主权限并可通过属主权限创建进程。

          eg:chmod 4644 file  或 chmod u+s file

          setgid : 多用户共享目录的权限 chmod g+s /directory  


useradd   创建用户

          参数:-M     不建立家目录

                      -s      shell

                      -g      group

                      -G     补充group

                      -m     建立家目录

                      -D     查看预设值

                      -u      指定uid号

                      -e      过期时间

               eg:useradd  -g new1 -s /sbin/nologin -M  mysql

                       useradd -D -e ""   取消过期时间默认设定 


more   翻页查看文件


less     翻页查看文件


head   从文件头部查看

             eg:head  -10  test.txt


tail   从文件尾部查看

          参数:-f     追踪文本变化并显示

             eg:tail -10 test.txt

                     tail -f test.txt


umask   默认权限

          参数:-S     显示ugo权限


lsattr   查询文件或目录隐藏属性

          参数:-a:显示隐藏文件的属性

                       -d:仅列出目录本身的属性而非目录内的文件名

                       -R:连同子目录的文件一并列出


chattr   设定文件或目录隐藏属性

          参数:-i     禁止删除或更改等任何操作

                     -a    只能添加内容


which   查找指定指令信息

          参数:-a     将所有path目录中找到的指令列出

            eg:which ll


find   查找文件或目录

          参数:-name    查找名字

                      -type      类型  f(文件) d(目录)

                      -mtime   修改的时间。find / -mtime +4  五天之前修改不包括第四天

                                                             find / -mtime 4  第四天修改

                                                             find / -mtime -4 四天内修改

                      -perm     权限

                      -size       文档大小       find / -size +1M 大于1M文档

           eg: 条件匹配查找find . \( -name "*.sh" -o -name "*.txt" \) -print

                  匹配并执行cmd,find / -name '*.sh' -exec cat -n {} \;


cat   查看文件内容

          参数:-n     显示行号

                     -A     


df   查看磁盘或目录容量

          参数:-h     以人类易读的方式显示

                     -T     显示文件系统名称

                     -i      显示inode


ln   链接

          参数:-s     软链接或标记链接。 生成新的inode文件

          不带s参数时,为硬链接。且硬链接产生的文件 inode 是一样的


lsblk   列出所有磁盘

          参数:-f     列出文件系统名称

                     -m   列出设备权限


blkid   查存储设备UUID


mount   挂载

          参数:-a     挂载stab中未挂载的设备

                      -l      显示Label列

                      -t      制定挂载类型,如xfs,ext3,ext4,iso9660,nfs

                      -o     参数,async,sync:同步写入或异步写入。默认为async

                                        atime,noatime:更改访问时间

                                        ro,rw:只读或读写

                                        auto,noauto:允许自动挂载或不自动挂载

                                        suid,nosuid:是否允许suid/sgid的档案格式

                                        exec,noexec:是否可以执行二进制档案

                                        user,nouser:一般用户是否可以mount

                                        defaults:预设值为rw,suid,dev,exec,auto,nouser,async

                                        remount:重新挂载


swapon   设置交换空间

          参数:-s     查询所有交换空间


swapoff   取消交换空间


mkswap   格式化交换空间


parted   分区

          参数:print     显示所有分区。例:parted /dev/sdb print

                      gpt       转换mbr到gpt

                      mbr      转换gpt到mbr


cpio   数据处理

          参数:-ovcB 备份

                                        例:cpio  -ovcB> filename|device 

                     -ivcdu 还原

                                        例:cpio -ivcdu

                     -ivct    查看

                                        例:cpio -ivct

                     -o     拷贝,将数据拷贝到档案或设备中

                     -B     Blocks大小增加到5120bytes,默认为512bytes

                     -i      将数据从档案或设备中拷贝到系统中

                     -d     还原时,建立目录

                     -u     自动覆盖旧档案

                     -v     显示存储过程


vim   文本编辑(vim功能十分强大,以后单独写关于其的文章)

          多行复制:ma  y’a

          显示行号: :set nu

          替换: :%s#内容1#内容2#g


alias   设置别名

          例:alias la=‘ls -al'


set   查看自定义变量


unset   取消自定义变量


env   查看环境变量


read   读取键盘输入

          参数:-p     输入提示文本


declare   声明变量

          参数:-a:将变量定义为阵列array类型

                      -i:将变量定义为整数类型

                      -x:将变量导出为环境变量

                      -r:将变量设置为readonly类型

                      eg:declare -i sum=100+200


ulimit   限制关系(修改文件描述符)

          参数:-H:hard。严格限制

                      -S:soft。警告限制

                      -a:列出所有限制

                      -f:可建立的最大文件大小

                      -t:可以是用的最大CPU时间(单位s)

                      -u:单一用户可以使用的最大程序数量


echo   显示

          参数:-e:解释“\”跳脱符  (\t tab;\b 退格;\n 回车)

                      -n:  不换行

          例:echo -e “hello\n”


type   查询指令类型

          参数:-t:类型。file:为外部指令;alias:表示别名;builtin:内建指令


cut   截取

          参数:-d     分隔符 如’:'

                      -f      取第几字段

                      -c     取第几个字符 如 取第12-15的字符

          eg:echo ${PATH}|cut -d ‘:’ -f 2


grep   内容过滤 善于取行

          参数:-a     将二进制文档以test文档方式搜索

                      -c     计算找到的字符数

                      -i      忽略大小写

                      -n     顺便输出行号

                      -v     反向选择

                      -o     只显示筛选的文字

                      -E     扩展模式

        eg:egrep '(TOM|DAN)’ 或 grep -E ‘(a|b)'


sort   排序

          参数:-f     忽略大小写的差异

                     -b    忽略前面的空白字符部分

                     -M   以月份来排序

                     -r     反向排序

                     -u     去重,相同数据 仅列一行

                     -t      分隔符

                     -n     指定按数字大小排序。默认是以ascll码排

           eg:cat /etc/passwd|sort -t: -k3 -n


wc   统计行数

          参数:-l     统计总行数

                     -w   仅列出使用多少不同的字符数

                     -m   列出使用字符的总数


uniq   将上下连续重复字符显示为一行

          参数:-i     忽略大小写

                     -c     进行统计数量

          例:last|cut -d ' ' -f 1|sort|uniq -c

           统计单词数量:

                        egrep -o "[a-zA-Z]+" /tmp/test.1 |sort|uniq -c


awk   格式化输出

区域与记录

field域,区域,字段  (eg: $1,$2…$NF)。FS 为切割区域的标识符

record记录,默认一整行,并以换行符结束

          参数:-F     分隔符,如”:”或“[ :]”

                     NR   逐行记录行号

                     NF    显示每行的段数(区域数量)

                     FS   字段分隔符,默认为空格

                     $NF   显示最后一个区域

                     RS     记录的分隔符,可以指定每个记录的结尾标志

           特殊操作符号:

                    ~ :用于对记录或字段的表达式进行匹配

                    !~:用于表达与~相反的意思

           引用外部变量:"'"$i"'"

           eg:awk '$1~/^root/{print $0}'  file

                   gawk --posix '$1~/o{1,2}/{print $NF}' test.1

           eg:awk -F '[ :]' '{print $2}' new

                  awk -F '[ :]' '{print NF}' new 显示每行的段数

                  awk -F '[ :]' '{print NR}' new 显示 行号

                  last -n 5|awk '{print $1 "\t lines:" NR "\t columns:" NF}'

                  cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t " $3}

           eg:统计文件空行总和

                  awk '/^$/{a=a+1}END{print a}' /etc/services

           eg: 统计所有环境变量的目录中的三个字母指令的个数

                  find $(echo $PATH|tr ":" " ") -type f -name "???"|awk '{a+=1}END{print a}'

            eg:for i in `seq $(wc -l host|awk '{print $1}')`;do ssh admin@$(awk 'NR=="'"$i"'"{print $1} ' host) /sbin/ifconfig;done


setfacl   设置文件或文件夹访问控制

          参数:-m     修改文件或文件夹访问选项

                      -x      移除文件或文件夹访问选项

          eg:setfacl -m u:lisa:r file

                 setfacl -m m::rx file

                 setfacl -x g:staff file

                             u:账号:权限

                             g:组名:权限

                             m:权限


getfacl   查看文件或文件夹访问控制级别


tr   取代或替换文本中的字符

          参数:-d     删除文本中相应的字符

                      -s     取代重复的字符

          eg:last | tr '[a-z]' '[A-Z]’ 将字母小写变为大写

                  cat /etc/passwd | tr -d ':'


join   将两个文本内容拼接到一起

          参数:-t     分隔符,两个进行对比如果相同则连成一行

                      -i     忽略大小写


paste   将两个文本内容简单拼接     默认以tab间隔

          参数:-d     分隔符


sed   文本中字符处理

          参数:-i      编辑文本  eg:sed -i ’s/xx/**/g’ new 将new中xx替换为** ,可以把编辑的文件生成新的文件名,如:  -i.bak

                     -n     取消默认输出   eg:sed -n '2,5p’ new 显示new中 2-5行内容

                     -r      采用正则表达式

                               a   :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)

                               c   :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!

                               d   :刪除,因為是刪除啊,所以 d 後面通常不接任何咚咚;

                                i   :插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);

                               p   :列印,亦即將某個選擇的資料印出。通常 p 會与参数sed -n 一起运作~

                               s   :取代,可以直接進行取代的工作哩!通常這個 s 的动作可以搭配正则表示法

            eg:替换文件里面内容,并生成新的文件

                     sed -ri.bak 's#\:# #g' /tmp/test.1 

            eg:后向引用

                     sed -nr 's#(.*) (.*)#ping \1#gp' hosts


kill   杀进程 (kill -signal PID)

          -l      显示所有signal

          -9     强制关闭,不推荐。原因是无法进行程序的善后,如,临时文件、socket链接

          -15   正常请求关闭进程

          -2     中断程序

信号量:

SignalDescriptionSignal number on Linux x86

SIGABRTProcess aborted6

SIGALRMSignal raised by alarm14

SIGBUSBus error: "access to undefined portion of memory object"7

SIGCHLDChild process terminated, stopped (or continued*)17

SIGCONTContinue if stopped18

SIGFPEFloating point exception: "erroneous arithmetic operation"8

SIGHUPHangup1

SIGILLIllegal instruction4

SIGINTInterrupt2

SIGKILLKill (terminate immediately)9

SIGPIPEWrite to pipe with no one reading13

SIGQUITQuit and dump core3

SIGSEGVSegmentation violation11

SIGSTOPStop executing temporarily19

SIGTERMTermination (request to terminate)15

SIGTSTPTerminal stop signal20

SIGTTINBackground process attempting to read from tty ("in")21

SIGTTOUBackground process attempting to write to tty ("out")22

SIGUSR1User-defined 110

SIGUSR2User-defined 212

SIGPOLLPollable event29

SIGPROFProfiling timer expired27

SIGSYSBad syscall31

SIGTRAPTrace/breakpoint trap5

SIGURGUrgent data available on socket23

SIGVTALRMSignal raised by timer counting virtual time: "virtual timer expired"26

SIGXCPUCPU time limit exceeded24

SIGXFSZFile size limit exceeded25


printf   格式化输出

          参数:

               关于格式方面的几个特殊格式:

                 \a    警告声音输出

                 \b    退格键(backspace)

                 \f     清楚屏幕 (form feed)

                 \n    输出新的一行

                 \r    亦即Enter按键

                 \t    水平的[tab]按键

                 \v    垂直的[tab]按键

                 \xNN  NN 为两位数的数字,可以转换数字成为字符。

       关于C语言内,常见的变量格式

       %ns   那个n是数字, s 代表 string ,亦即多少个字元;

       %ni   那个n是数字, i 代表 integer ,亦即多少整数位数;

       %N.nf 那个n与N都是数字,f 代表floating (浮点),如果有小数位数,

        假设我共要十位数,但小数点有两位,即为%10.2f


test   检查文件类型与匹配

          参数:-n     字符串非零

                     -z     字符串为零

                     -b     文件存在且是块类型

                     -c     文件存在且为字符类型

                     -d     文件存在切位文件夹类型

                     -e     文件存在

                     -f      文件存在且是规范文件

                     -g     文件存在且设置有组ID

                     -r      文件存在且可读

                     -w    文件存在且为可写

                     -x     文件存在且为可执行

                     -s     文件存在且文件大于0

                     -S     文件存在且为socket类型


date   时间

          参数:-d (或--date)      显示日期 如:date -d yesterday +%d ;date --date(1 day ago)+%Y%m%d

                                                                            date +F -d “+2day” ;date +F %H:%M  -d “+2min”  

                     -s     设置时间         date -s 14:36:00;date -s 2012-08-02;date -s "2012-05-18 04:53:00"

                      +%F    年月日长格式

                      +%y-%m-%d    年月日短格式

                      +%H:%M:%S     时分秒

                      +%w                 星期     0 - 6  (周日-周六)

          eg:for n in `seq 30`;do date -s "2017/03/$n";touch access_www_`(date +%F)`.log;done


chage    密码失效是通过此命令来管理的。

  参数:

  -m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。

  -M 密码保持有效的最大天数。

  -W 用户密码到期前,提前收到警告信息的天数。

  -E 帐号到期的日期。过了这天,此帐号将不可用。

  -d 上一次更改的日期

  -I 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。

  -l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

      例:chage -d 0 用户登录时需要重新修改密码


sh   执行script

          参数:-n     不执行script,仅查询语法的问题

                     -v     执行script前,先将script内容输出屏幕

                     -x     将使用到的script内容显示到屏幕上


usermod   修改用户属性

           参数:

           -c  :说明,即 /etc/passwd 第五字段的说明。

           -d  :设置家目录,即修改 /etc/passwd 的第六字段。

           -g  :设置组,修改 /etc/passwd 的第四字段。


xfs_quota    配额

             xfs_quota -x -c     “指令” 挂载点   

              参数:-x:专家模式,后续才能加-c的指令参数

                          -c:后续加的就是指令

              指令:

                         print:单纯的列出目前主机内的档案系统参数等参数

                         df:与原本的df一样的功能,可以加上-b -i -h等

                         report:列出目前的quota项目,有-ugr(user/group/project)及-bi等

                         state:说明目前支持quota的档案系统的资料,有没有启动等相关信息

                         limit :实际限制的项目,可以针对 user/group 来限制,限制的项目有

                                     bsoft/bhard : block 的 soft/hard 限制值,可以加单位

                                     isoft/ihard : inode 的 soft/hard 限制值

                                     name : 就是用户/群组的名称

                         timer :用來设定 grace time 的项目,也是可以针对 user/group 以及 block/inode 设定

               eg:   xfs_quota -x -c "df -h" /home

                          xfs_quota -x -c "state"

                          xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota1" /home


mdadm   软RAID管理

               参数:--create:为建立RAID的选项;

                          --auto=yes:决定建立后面接的软RAID设备,如 /dev/md0, /dev/md1

                          --chunk=Nk:决定这个设备的 chunk 大小,也可以当成 stripe 大小,一般是64K或 512K。

                          --raid-devices=N:使用几个分区(partition) 作为RAID的设备

                          --spare-devices=N:使用几个分区作为备用 (spare) 设备

                          --level=[015] :设定这组RAID的等级。支持很多,不过建议只要用 0, 1, 5 即可

                          --detail:后面所接的那个RAID设备的详细资讯

              专用选项:

                        -l 级别

                        -n 设备个数

                        -a {yes|no} 自动为其创建设备文件

                        -c 指定数据块大小(chunk)

                        -x 指定空闲盘(热备磁盘)个数,空闲盘(热备磁盘)能在工作盘损坏后自动顶替

                        -D 查看raid细节

            eg:

                    创建raid0:

                            mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}

                    创建raid1:

                            mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sdb{5,6}


lvm   逻辑卷管理器(XFS / EXT4)

PV/VG/LV

        查询(scan)pvscanvgscanlvscanlsblk, blkid

        创建(create)pvcreatevgcreatelvcreatemkfs.xfsmkfs.ext4

        显示(display)pvdisplayvgdisplaylvdisplaydf, mount

        增加(extend) vgextendlvextend (lvresize)xfs_growfsresize2fs

        减少(reduce) vgreducelvreduce (lvresize) ,不支持resize2fs

        刪除(remove)pvremovevgremovelvremoveumount, 重新格式化

        调整尺寸大小(resize)  lvresizexfs_growfsresize2fs

        更改属性(attribute)pvchangevgchangelvchange/etc/fstab, remount


at   一次工作计划  (at [-mldv] TIME)

           参数:-m:当at的工作完成后,即使没有输出信息,也email通知使用者该工作已完成

                      -l:at -l相当于atq,列出目前系统上面的所有该使用者的at计划

                      -d:at -d相当于atrm,可以取消一个在at计划中的工作

                      -v:可以使用较明显的时间格式列出at计划中的工作列表

                      -c:可以列出后面接的该项工作的实际指令内容

                      TIME:时间格式,这里可以定义“什么时候要进行at工作计划”的时间,格式有:HH:MM(例如:05:00)

                      或 04:00 2015-07-30

                      或 04pm July 30

                      或now + 5 minutes、04pm + 3 days

        eg:

                at now + 5 minutes  <==单位要加 s !

                at> /bin/mail -s "testing at job" root < /root/.bashrc


atq    查询有哪些工作计划


atrm    删除工作计划  如:atrm 3


cron    循环工作计划(crontab [-u username] [-l|-e|-r])

            /var/spool/cron/$username  <<配置文件

           参数:-u:只有root才能进行这种计划,即帮助其他使用者建立或删除crontab工作计划 

                             ex:crontab -u new -l    ,crontab -u new -e

                      -e:编辑模式

                      -l:查询crontab中的计划

                      -r:移除所有的crontab的工作内容

            eg:crontab -e

                    0  12  *  *  * mail -s "at 12:00" dmtsai < /home/dmtsai/.bashrc


ps    报告进程状态

          查看每个进程(标准语法):ps -e    ps -ef

          查看每个进程(BSD语法):ps ax   ps aux

USER:该process是那个用户创建的?

PID :process的id。

%CPU:process占用的CPU资源的百分比;

%MEM:process 占用的内存的百分比;

VSZ :process 占用的虚拟内存 (Kbytes)

RSS :process 占用的固定内存大小(Kbytes)

TTY :process 是运行在哪个虚拟终端。另外,tty1-tty6 是本机上面的登录,若为pts/0等,则表示通过网络连接主机

STAT:process 目前的状况

START:process 建立时间

TIME : process 实际运行时间

COMMAND:显示process 发起的实际指令


nice    新执行的指令即给新的nice值 (nice [-n 数字] command)

          参数:-n:后面接一个整数,范围-20~19

          eg:nice -n -5 vim


renice    已有的进程的nice重新调整 (renice [number] PID)

          eg:renice -5 14836


jobs    后台进程状态

           参数:-l:除了列出job number与指令之外,同时显示PID

                      -r:仅列出后台运行的工作

                      -s:仅列出后台中监听的工作

ctrl z     将前台工作扔到后台

fg          将后台工作扔到前台

eg:     fg  %1

bg          让工作在后台的状态变为运行中

eg:     bg %2


nohup   离线进程管理

       nohup  “指令与参数”        在终端机前台中工作

       nohup  “指令与参数” &     在终端机后台中工作


top    动态进程状态

          参数:-d  :后面可以接秒,预设是 5 秒

                     -b  :以批次的方式執行 top

                     通常会搭配数据流重定向将批次的結果输出成为档案。

                     -n  :与-b 搭配,意义是,需要進行几次 top 的输出結果。

                     -p  :指定某些个PID 来进行观察检测而已。

                    在 top执行过程当中可以使用的按键指令:

                        ? :显示在 top 当中可以输入的按键指令;

                        P :以 CPU 的使用资源排序显示;

                        M :以 Memory 的使用字元排序显示;

                        N :以 PID 来排序

                        T :由该 Process 使用的 CPU 时间积累(TIME+) 排序。

                        k :给予某个 PID 一个信号  (signal)

                        r :给予某个 PID 重新制订一个nice 值。     

                        q :离开 top 软件的按键。


pstree    进程相关性查看

               参数:

                          -p  :显示每个 process 的 PID;

                          -u  :显示每个 process 的所属用户名


free    查看内存使用情况

          参数:-b  :直接输入 free 时,显示的单位是 Kbytes,可以使用 b(bytes), m(Mbytes)

                              k(Kbytes), 及 g(Gbytes) 来显示单位。也可以直接让系统自己指定单位 (-h)

                     -t  :在输出的最终結果,显示实体内存与 swap 的总量。

                     -s  :可以让系统每几秒输出一次


uptime    显示系统启动时间与工作负载(1,5,15分钟的平均负载)


netstat    跟踪网络或socket文件

               参数:-a  :将目前系统上所有的连接、监听、Socket 资料都列出来

                          -t  :列出 tcp 网络封包的资料

                          -u  :列出 udp 网络封包的资料

                          -n  :不以程序的服务名称,以端口号 (port number) 来显示;

                          -l  :列出目前正在网络监听 (listen) 的服务;

                          -p  :列出该网络服务的程序 PID

Proto :网络的封包协议,主要分为 TCP 与 UDP 封包;

Recv-Q:非由使用者程式连接到此 socket 的复制的总 bytes 数;

Send-Q:非由远程主机传送过来的 acknowledged 总 bytes 数;

Local Address :本地端的 IP:port 情況

Foreign Address:远程主机的 IP:port 情況

State :链接状态,主要有建立(ESTABLISED)及监听(LISTEN);


dmesg    分析核心产生的信息


vmstat    检测系统资源变化

          参数:-a  :使用 inactive/active(是否活跃) 取代 buffer/cache 的内存输出信息;

                     -f  :开机到目前为止,系统复制 (fork) 的程序数;

                     -s  :将一些事件 (开机至目前为止) 导致的内存变化情況列表说明;

                     -S  :后面可以接单位,让显示的信息有单位。例如 K/M 取代 bytes 的容量;

                     -d  :列出磁盘的读写总量统计表

                     -p  :后面列出分割槽,可显示该分割槽的读写总量统计表

程序栏(procs) 的項目分別为:

r :等待运作中的程序数量;b:不可被唤醒的程序数量。這两个项目越多,代表系统越忙碌 (因为系统太忙,所以很多程序就无法被执行或一直在等待而无法被唤醒的原因)

内存栏 (memory) 项目分別为:

swpd:虚拟内存被使用的容量; free:未被使用的内存容量; buff:用于缓冲内存; cache:用于缓存。 这部份与free是相同的。

内存交行空间 (swap) 的项目分別为:

si:由磁盘中将程序取出的量; so:由于内存不足而将没用到的程序写入到磁盘的swap的空间。 如果 si/so 的数值太大,表示内存的数据常常得在磁盘与主内存之间传输

磁盘读写 (io) 的项目分別为:

bi:由磁盘读写 的区块数量; bo:写入到磁盘去的区块数量。如果這部份的值越高,代表系統的 I/O 非常忙碌

系统 (system) 的项目分別为:

in:每秒被终端的程序次数; cs:每秒进行的事件切换次数;這两个数值越大,代表系通与周边设备的沟通非常频繁,这些周边设备包括磁盘、网卡、时钟等。

CPU的项目分別为 :

us:非核心层的 CPU 使用状态; sy:核心层所使用的 CPU状态; id:限制的状态; wa:等待 I/O 所消耗的 CPU 状态;st:被虚拟机 (virtual machine) 所使用的CPU使用状态 (2.6.11 以后才支持)


lsof   列出被程序所开启的文档名,与fuser相反,是通过文件或设备的程序找到相应的档案或设备

               参数:

                         -U  :仅列出 Unix like 系统的 socket 档案类型

                         -u  :后面接username,列出该使用者相关程序所开启的文件

                         +d  :后面接目录,亦即找出某个目录底下已经被开启的文件

已知端口查服务:

例:lsof  -i:80


pidof   找出某个正在执行的进程PID

          参数:-s:仅列出一个PID而不是列出所有PID

                      -x:同时列出该程序名称可能的PPID那个程序的PID

例:pidof systemd


selinux    安全上下文

getsebool [-a] [规则的名称]    查询各个规则的布尔值

            参数:-a:列出目前系统上的所有selinux规则的布尔值(on|off)

setsebool     修改selinux规则的布尔值

               参数:-P:直接将设定值写入配置文档,该设定资料未来会生效


depmod    自动建立内核模块的依赖关系

               参数:-A:不加参数时,depmod会主动分析当前内核模块,并重新写入/lib/modules/$(uname -r)/modules.dep当中。若加入-A参数,则depmod会去搜索比modules.dep内还新的模块,若找到新模块,才会更新。

                          -n:不写入modules.dep,而是将结果输出到屏幕。

                          -e:显示出当前已经加载的不可执行的模块名称。

               例:#cp a.ko /lib/modules/$(uname -r)/kernel/drivers/net

                      #depmod


lsmod    查询所有内核加载的模块


modinfo   模块名称或文件名

               参数:-a:仅列出所有者名称

                          -d:仅列出该modules的说明

                          -l:仅列出授权(license)

                          -n:仅列出该模块的详细路径


insmod    加载内核模块

                [/fullpath/module_name] [parameters]

               例:insmod /lib/modules/$(uname -r)/kernel/fs/cifs/cifs.ko

                      lsmod |grep cifs


rmmod    删除内核模块

                [-fw] module_name

               参数:-f:强制将该模块删除,不论是否在使用

                          -w:若该模块正被使用,则rmmod会等待该模块使用完毕后,才移除。


modprobe   [-lcfr] module_name     智能加载内核模块

                参数:-c :列出目前系统所有的模块

                           -l:列出当前在/lib/modules/`uname -r`/kernel当中的所有模块完整的文件名

                           -f:强制加载该模块

                           -r:移除模块


dmidecode   查看硬件配置情况

                 参数:-t:类型type

                                   1:详细系统信息,包括主板型号与硬件信息

                                   4:cpu相关信息

                                   9:系统相关插槽信息,pci、pci-e

                                   17:每个内存插槽信息与内存信息


lspci    查看PCI设备信息

                参数:-v:显示更多的PCI设备的信息

                           -vv:更详细的信息

                           -n:直接观察PCI的ID,没有厂商名称


iostat     [-c|-d] [-k|-m] [-t] [间隔秒数] [侦测次数]          查看CPU与周边设备I/O状态

                 参数:-c:仅显示CPU状态

                            -d:仅显示存储设备状态

                            -k:预设显示为block

                            -m:显示以MB单位的结果

                            -t:显示日期

#tps       :平均每秒的传输次数!

#kB_read/s :开机到现在平均读取的单位;

#kB_wrtn/s :开机到现在平均写入的单位;

#kB_read   :开机到现在,总共读出来的单位;

#kB_wrtn   :开机到现在,总共写入的单位;


dd    转换与复制文件

                  例:dd if=/dev/sda  of=/dev/sdb      将sda复制到sdb


cpio    文件复制与归档

                  例:find / -print|cpio -covB > /dev/st0     备份到磁带

                         cpio -iduv < /dev/st0     从磁带还原


xfsdump    备份

                   例:xfsdump -l 0 -L 'full' -M 'full' -f /backupdata/home.dump /home     将/home中的数据 完整备份到/backupdata/home.dump中

                          xfsdump -l 1 -L 'full-1' -M 'full-1' -f /backupdata/home.dump1 /home  将/home中的数据进行一次增量备份到/backupdata/home.dump1中


rsync    远程文件复制

             参数:

-v, --verbose 详细模式输出 

-q, --quiet 精简输出模式 

-c, --checksum 打开校验开关,强制对文件传输进行校验 

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD 

-r, --recursive 对子目录以递归模式处理 

-R, --relative 使用相对路径信息 

-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。 

--backup-dir 将备份文件(如~filename)存放在在目录下。 

-suffix=SUFFIX 定义备份文件前缀 

-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件) 

-l, --links 保留软链结 

-L, --copy-links 想对待常规文件一样处理软链结 

--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结 

--safe-links 忽略指向SRC路径目录树以外的链结 

-H, --hard-links 保留硬链结 

-p, --perms 保持文件权限 

-o, --owner 保持文件属主信息 

-g, --group 保持文件属组信息 

-D, --devices 保持设备文件信息 

-t, --times 保持文件时间信息 

-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间 

-n, --dry-run现实哪些文件将被传输 

-W, --whole-file 拷贝文件,不进行增量检测 

-x, --one-file-system 不要跨越文件系统边界 

-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节 

-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步 

--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息 

-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件 

--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件 

--delete 删除那些DST中SRC没有的文件 

--delete-excluded 同样删除接收端那些被该选项指定排除的文件 

--delete-after 传输结束以后再删除 

--ignore-errors 及时出现IO错误也进行删除 

--max-delete=NUM 最多删除NUM个文件 

--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输 

--force 强制删除目录,即使不为空 

--numeric-ids 不将数字的用户和组ID匹配为用户名和组名 

--timeout=TIME IP超时时间,单位为秒 

-I, --ignore-times 不跳过那些有同样的时间和长度的文件 

--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间 

--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0 

-T --temp-dir=DIR 在DIR中创建临时文件 

--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份 

-P 等同于 --partial 

--progress 显示备份过程 

-z, --compress 对备份的文件在传输时进行压缩处理 

--exclude=PATTERN 指定排除不需要传输的文件模式 

--include=PATTERN 指定不排除而需要传输的文件模式 

--exclude-from=FILE 排除FILE中指定模式的文件 

--include-from=FILE 不排除FILE指定模式匹配的文件 

--version 打印版本信息 

--address 绑定到特定的地址 

--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件 

--port=PORT 指定其他的rsync服务端口 

--blocking-io 对远程shell使用阻塞IO 

-stats 给出某些文件的传输状态 

--progress 在传输时现实传输过程 

--log-format=formAT 指定日志文件格式 

--password-file=FILE 从FILE中得到密码 

--bwlimit=KBPS 限制I/O带宽,KBytes per second 

-h, --help 显示帮助信息 

             本地:  rsync [OPTION...] SRC... [DEST]

                    例:rsync -av /home /backupdata/

             远程

                       Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

                       Push: rsync [OPTION...] SRC... [USER@]HOST:DEST 

例:1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup 

  2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src 

  3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data 

  4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack 

  5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www 

  6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www


file    查看文件类型


gcc    编译

          参数:-c     产生object对象文件,不加参数生成*.out二进制文件。

                     -O     产生最佳化参数

                     -Wall     产生编译细节信息

                     -o      将所有对象文件(*.o)连接输出一个编译文件

                     -l       加入某个函数库

                     -m     libm.so 函数库连接

                     -L     后面接函数库路径

                     -I     后面接include文档路径

                    例: gcc -O -c thanks.c thanks_2.c

                            gcc -o thanks thanks.o thanks_2.o

                            gcc sin.c -lm -L/lib -L/lib64

                            gcc sin.c -lm -I/usr/include


ldconfig    把动态函数库加载到内存中缓存起来

               参数:-p     显示所有已加载的动态函数库

               例:#vim /etc/ld.so.conf

                      /usr/lib64/mysql          <==添加新的库

                      #ldconfig

                      #ldconfig -p


ldd    解析程序的动态函数库

               参数:-v     列出所有内容信息

                          -d     重新将信息中有丢失的link点列出来

                          -r     将ELF有关的错误列出来

               例:ldd /usr/bin/passwd


md5sum    验证软件的正确性

               参数:-b     使用二进制的读取方式,预设为windows/dos档案形态的读取方式

                          -c     检验档案指纹

                          -t     以文字形式来读取档案指纹

               例:md5sum ntp-**.tar.gz

               例:#ls /etc/{passwd,shadow,group} > important.file

                      #find /usr/sbin /usr/bin -perm /6000 >> important.file

                      #vim md5.checkfile.sh

                              #!/bin/bash

                              for filename in $(cat important.file)

                              do

                                      md5sum $filename >> finger1.file

                              done

                       #sh md5.checkfile.sh

                       #chattr +i finger1.file


rpm    软件包管理器

               参数:-i     install

                          -v    查看更多安装细节

                          -h    显示安装进度

                          -e     删除

                          --nodeps     忽略软件的依赖性强行安装

                          --replacefiles     覆盖原来的已安装的软件

                          --force          覆盖安装

                          --prefix         指定新的安装路径

                          --noscripts     不想让软件在安装过程中自动执行某些系统指令

                          -Uvh               更新软件

                          -Fvh               修复与升级

                          -q     查询

                          -qa     列出所有已安装的软件

                          -qi     列出该软件的详细信息

                          -ql     列出该软件所有的档案与目录所在的完成文档名

                          -qc     列出该软件的所有参数档案名称(/etc/下的)

                          -qd     列出该软件所有说明档案

                          -V     验证该软件是否被更改过,如果有被列出

                          --rebuilddb     重建信息库(由于删除、安装更新时产生/var/lib/rpm/内的文件破坏)

                          provides     列出该指令所有的软件


yum    安装管理

               选项 -y     自动跳过yes确认

               参数:install     安装

                          remove     删除

                         list              列出当前yum所管理的软件名称

                         search     搜索某个软件名称或描述

                         info          列出yum所有软件名称

                         update     软件升级

                         repolist  all     目前使用的软件库

                         clean all     将所有软件库信息删除

                         makecache     创建软件库信息

                         grouplist     列出所有可用的软件组

                         groupinstall     安装软件组

                         groupremove     删除软件组


iptables   防火墙

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

iptables -L     列出所有规则

iptables -D     删除一条规则


rpmbuild      对srpm进行编译与打包或安装(*.src.rpm)

                参数:--rebuild 对srpm包进行编译与打包,最后产生rpm包

                           --recompile  直接编译、打包、并安装

                           --showrc   查看默认配置

                         编译后的rpm软件包会被防止到/root/rpmbuild/RPMS/中         

根据spec文件产生rpm、srpm包

例:

rpmbuild -ba ntp.spec          <==编译并同时产生rpm与srpm包 

rpmbuild -bb ntp.spec          <==仅编译成rpm包

                         #yum install rpmdevtools     

                         #rpmdev-setuptree                   建立rpmbuild目录

                         #rpmdev-newspec


diff     比较两个文件或目录里文件的区别

               参数:

-a或--text  diff预设只会逐行比较文本文件。

-b或--ignore-space-change  不检查空格字符的不同。

-B或--ignore-blank-lines  不检查空白行。

-c  显示全部内文,并标出不同之处。

-C或--context  与执行"-c-"指令相同。

-d或--minimal  使用不同的演算法,以较小的单位来做比较。

-D或ifdef  此参数的输出格式可用于前置处理器巨集。

-e或--ed  此参数的输出格式可用于ed的script文件。

-f或-forward-ed  输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。

-H或--speed-large-files  比较大文件时,可加快速度。

-l或--ignore-matching-lines  若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。

-i或--ignore-case  不检查大小写的不同。

-l或--paginate  将结果交由pr程序来分页。

-n或--rcs  将比较结果以RCS的格式来显示。

-N或--new-file  在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。

-p  若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。

-P或--unidirectional-new-file  与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。

-q或--brief  仅显示有无差异,不显示详细的信息。

-r或--recursive  比较子目录中的文件。

-s或--report-identical-files  若没有发现任何差异,仍然显示信息。

-S或--starting-file  在比较目录时,从指定的文件开始比较。

-t或--expand-tabs  在输出时,将tab字符展开。

-T或--initial-tab  在每行前面加上tab字符以便对齐。

-u,-U或--unified=  以合并的方式来显示文件内容的不同。

-v或--version  显示版本信息。

-w或--ignore-all-space  忽略全部的空格字符。

-W或--width  在使用-y参数时,指定栏宽。

-x或--exclude  不比较选项中所指定的文件或目录。

-X或--exclude-from  您可以将文件或目录类型存成文本文件,然后在=中指定此文本文件。

-y或--side-by-side  以并列的方式显示文件的异同之处。

--help  显示帮助。

--left-column  在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。

--suppress-common-lines  在使用-y参数时,仅显示不同之处。

          例:diff -uNr nginx1/ nginx2/   >nginx.patch     <==生成补丁


wget 网络工具

        参数 -O 指定路径与名称

        例:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo


tree  列出树状结构

        参数 -L  显示层级

                -d  显示目录

        例:tree  -Ld  1   /


tar   归档

        参数:

               -c:创建  create

               -v:显示 verbose

               -z:压缩 gunzip   gz格式

               -f:文件

               -x:解压

               -C:指定位置解压

               -t: list 列出

               --exclude :排除 --exclude=file

               -X:排除列表文件   ex: tar -zcvfX  file.tar.gz  file  /tmp/*

               -j:压缩 bz格式


seq   显示序列数

           参数:

                -s :间隔符号

                -w :显示0

            eg:

                 seq  100

                 seq   1  2  100

                 seq -s ';' 100


dumpe2fs   查看文件系统信息 支持ext2、ext3、ext4文件系统

       exg:dumpe2fs  /dev/sda1|grep -i "Inode size"


stat   查看文件或文件夹的状态信息

Access: 访问时间,find -atime

Modify: 修改时间,内容发生变化  find -mtime

Change: 变化时间,包含Modify,权限、属主、用户组 find -ctime


w    查看谁登录,做了什么


lastlog   查看所有创建用户登录信息

            /var/log/lastlog


su    切换用户

         - 切换用户环境变量

         -c   后面接 ‘命令’ 。以某用户身份执行命令

         ex:su - new -c ‘/tmp/new.sh’ 

                 su - new -c “pwd”

          /var/db/sudo/  存放用户时间戳信息


sudo   其他用户执行

         -l  查询该用户下权限信息

         -c  检查sudoer语法问题

          vi /etc/sudoers == visudo


dig    DNS解析指令

    dig @114.114.114.114 www.baidu.com +trace   以114.114.114.114 来跟踪解析www.baidu.com过程


ip    ip地址设置

    查看ip信息:ip addr

    添加辅助ip地址(虚拟ip):ip addr add 192.168.0.12/24  dev eth1:1 up


partprobe   通知内核分区表变化

     做完分区后(例如用fdisk工具),需要告诉内核你做的分区调整,不然需要重启系统。

               ex: partprobe  /dev/sdb


tcpdump    抓包

      tcpdump -n icmp -i eth0

      eg:针对22端口抓3个包

            tcpdump port 22 -Stn -c 3


cp   拷贝

            eg:  备份文件   cp  /data/file{,.bak}


expr   表达式求值


scp   安全远程拷贝

参数    -P  端口号

            -r   递归目录(可以拷贝目录)

            -p  保持属性

            -l    限速

        eg:  scp -P 22 -rp  /tmp  root@$IP:/tmp

推荐阅读更多精彩内容