Linux基础命令必学

本文最后更新于:2022年6月1日 下午

BIN

  • awk 文本分析工具

    参数 注释
    -F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
    -v var=value 赋值一个用户定义变量,将外部变量传递给awk
    -f scripfile 从脚本文件中读取awk命令
    m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

    语法格式

    1
    2
    # awk [选项参数] 'script' var=value file(s)
    # awk [选项参数] -f scriptfile var=value file(s)

    显示/etc/passwd的账户

    1
    # awk -F : '{ print $1 }' /etc/passwd

    显示/etc/passwd的第1列和第7列,用逗号分隔显示

    1
    # awk -F ':' '{print $1 "," $7}' /etc/passwd

    只筛选显示free -m命令里的free一列

    1
    # free -m | awk '{if(NR>=2) print $4;else print $3}'

  • sh 运行shell脚本是shell的解释器

    运行该目录下的test.sh脚本

    1
    # sh test.sh

  • cat 连接文件并打印到标准输出设备上

    参数 注释
    -n 或 –number 由 1 开始对所有输出的行数编号
    -b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
    -s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
    -v 或 –show-nonprinting 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外
    -E 或 –show-ends 在每行结束处显示 $
    -T 或 –show-tabs 将 TAB 字符显示为 ^I
    -A, –show-all 等价于 -vET
    -e 等价于”-vE”选项
    -t 等价于”-vT”选项

    语法格式

    1
    # cat [-AbeEnstTuv] [--help] [--version] fileName

    查看test.sh

    1
    # cat test.sh

    查看test.sh并且加上行号

    1
    # cat -n test.sh

    查看test.sh并且加上行号(空白行不加)

    1
    # cat -b test.sh

  • chown 设置文件所有者和文件关联组

    参数 注释
    user 新的文件拥有者的使用者 ID
    group 新的文件拥有者的使用者组(group)
    -c 显示更改的部分的信息
    -f 忽略错误信息
    -h 修复符号链接
    -v 显示详细的处理信息
    -R 处理指定目录以及其子目录下的所有文件

    语法格式

    1
    # chown [-cfhvR] [--help] [--version] user[:group] file...

    把 /root/test.sh 的所有者设置 root

    1
    # chown root /root/test.sh

    将文件 test.sh 的拥有者设为 root,群体的使用者 rootgroup

    1
    # chown root:rootgroup test.sh

    将当前目录下的所有文件与子目录的拥有者都设为 root,群体的使用者 rootgroup

    1
    # chown -R root:rootgroup *

    把 /home/test 的关联组设置为 666 (关联组ID),不改变所有者

    1
    # chown :666 /home/test

  • date 显示或设定系统的日期与时间

    参数 注释
    -d datestr 显示 datestr 中所设定的时间 (非系统时间)
    -s datestr 将系统时间设为 datestr 中所设定的时间
    -u 显示目前的格林威治时间

    语法格式

    1
    # date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

    显示当前时间

    1
    # date

    显示完整时间

    1
    # date '+%c'

    显示数字日期,年份两位数表示

    1
    # date '+%x'

    显示日期,年份用四位数表示

    1
    # date '+%T'

    显示24小时的格式

    1
    # date '+%X'

    显示时间后,跳行,再显示目前日期

    1
    # date '+%T%n%D'

    显示月份与日数

    1
    # date '+%B %d'

  • dmesg 显示开机信息

    参数 注释
    -c 显示信息后,清除ring buffer中的内容
    -s<缓冲区大小> 预设置为8196,刚好等于ring buffer的大小
    -n 设置记录信息的层级

    语法格式

    1
    # dmesg [-cn][-s <缓冲区大小>]

    显示开机信息

    1
    # dmesg |less

    将开机信息保存到 boot.msg文件中

    1
    # dmesg > boot.msg

  • find 在指定目录下查找文件

    参数 注释
    -type 查找某一类型文档
    -b 查找某一类型文档
    -d 目录
    -c 字符设备文档
    -p 管道文档
    -l 符号链接文档
    -f 普通文档

    语法格式

    1
    # find path -option [-print] [-exec -ok command] {} \

    将当前目录及其子目录下所有文件后缀为 .sh 的文件列出来

    1
    # find . -name "*.sh"

    将目前目录其其下子目录中所有一般文件列出

    1
    # find . -type f

    将当前目录及其子目录下所有最近 3 天内更新过的文件列出

    1
    # find . -ctime -3

    查找 /var/log 目录中更改时间在 3 日以前的普通文件,并在删除之前询问它们

    1
    # find /var/log -type f -mtime +3 -ok rm {} \;

    查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件

    1
    # find . -type f -perm 644 -exec ls -l {} \;

  • env 显示系统中已存在的环境变量

    参数 注释
    -i 开始一个新的空的环境
    -u 从当前环境中删除指定的变量

    语法格式

    1
    # env [参数]

    显示系统的环境变量

    1
    # env

    从当前环境中删除指定的变量

    1
    # env -u LOGNAME

    定义指定的环境变量

    1
    # env LOGNAME=root

  • hostname 显示和设置系统的主机名称

    参数 注释
    -a, –alias 显示主机别名
    -A, –all-fqdns 显示所有FQDN名称
    -b, –boot 如果没有可用的主机名,则设置默认主机名
    -d, –domain 显示DNS域名
    -f, –fqdn, –long 显示FQDN名称
    -F, –file 从给定文件中读取主机名或NIS域名
    -i, –ip-address 显示主机的ip地址
    -I, –all-ip-addresses 显示主机所有的ip地址
    -s, –short 显示短主机名称,在第一个点处截断
    -y, –yp, –nis 显示NIS域名

    语法格式

    1
    2
    3
    #hostname [-b] {hostname|-F file}
    #hostname [-a|-A|-d|-f|-i|-I|-s|-y]
    #hostname -V|--version|-h|--help

    显示主机名

    1
    # hostname

    临时改变主机名

    1
    # hostname newname

    显示主机的所有ip地址

    1
    # hostname -I

  • hostnamectl centos7更改hostname立即生效

    参数 注释
    status 显示当前主机名设置
    set-hostname NAME 设置系统主机名
    set-icon-name NAME 为主机设置icon名
    set-chassis NAME 设置主机平台类型名

    语法格式

    1
    # hostnamectl set-hostname name [option...]

    查看状态

    1
    # hostnamectl status

    修改主机名称为test

    1
    # hostnamectl set-hostname TEST --staic

    远程更改主机名test

    1
    # hostnamectl set-hostname -H [username]@test
  • ln 为某一个文件在另外一个位置建立一个同步的链接

    必要参数 注释
    -b 删除,覆盖以前建立的链接
    -d 允许超级用户制作目录的硬链接
    -f 强制执行
    -i 交互模式,文件存在则提示用户是否覆盖
    -n 把符号链接视为一般目录
    -s 软链接(符号链接)
    -v 显示详细的处理过程
    选择参数 注释
    -S “-S<字尾备份字符串> “或 “–suffix=<字尾备份字符串>”
    -V “-V<备份方式>”或”–version-control=<备份方式>”
    • 软连接
      • 软链接以路径的形式存在。类似于Windows操作系统中的快捷方式
      • 软链接可以跨文件系统 ,硬链接不可以
      • 软链接可以对一个不存在的文件名进行链接
      • 软链接可以对目录进行链接
    • 硬链接
      • 硬链接以文件副本的形式存在。但不占用实际空间。
      • 不允许给目录创建硬链接
      • 硬链接只有在同一个文件系统中才能创建

        语法格式

        1
        # ln [参数][源文件或目录][目标文件或目录]

        给文件创建软链接,为test.log文件创建软链接linktest,如果test.log丢失,linktest将失效

        1
        # ln -s test.log linktest

        给文件创建硬链接,为test.log文件创建硬链接linktest,test.log与linktest的各项属性相同

        1
        # ln test.log linktest

  • mkdir 创建目录

    参数 注释
    -p 确保目录名称存在,不存在的就建一个

    语法格式

    1
    # mkdir [-p] dirName

    在工作目录下,建立一个名为 test 的子目录

    1
    # mkdir test

    在工作目录下的 test 目录中,建立一个名为 test2 的子目录。
    若 test 目录原本不存在,则建立一个。(注:本例若不加 -p 参数,且原本 test 目录不存在,则产生错误。)

    1
    # mkdir -p test/test2

  • mktemp 建立暂存文件

    参数 注释
    -q 执行时若发生错误,不会显示任何信息
    -u 暂存文件会在mktemp结束前先行删除
    [文件名参数] 文件名参数必须是以”自订名称.XXXXXX”的格式

    语法格式

    1
    # mktemp [-qu][文件名参数]

    使用mktemp 命令生成临时文件时,文件名参数应当以”文件名.XXXX”的形式给出,mktemp 会根据文件名参数建立一个临时文件。
    生成临时文件

    1
    # mktemp tmp.XXXX

  • more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h

    参数 注释
    -num 一次显示的行数
    -d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声
    -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
    -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
    -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
    -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
    -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
    -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
    +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
    +num 从第 num 行开始显示
    fileNames 欲显示内容的文档,可为复数个数
    • 常用操作命令
      • [Enter] 向下n行,需要定义。默认为1行
      • [空格键] 向下滚动一屏
      • [Ctrl+F] 向下滚动一屏
      • [Ctrl+B] 返回上一屏
      • [=] 输出当前行的行号
      • [:f] 输出文件名和当前行的行号
      • [V] 调用vi编辑器
      • [!命令] 调用Shell,并执行命令
      • [q] 退出more

        语法格式

        1
        # more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]

        逐页显示 test 文档内容,如有连续两行以上空白行则以一行空白行显示

        1
        # more -s test

        从第 10 行开始显示 test 文档内容

        1
        # more +10 test

  • netstat 显示网络状态

    参数 注释
    -a或–all 显示所有连线中的Socket
    -A <网络类型>或–<网络类型> 列出该网络类型连线中的相关地址
    -c或–continuous 持续列出网络状态
    -C或–cache 显示路由器配置的快取信息
    -e或–extend 显示网络其他相关信息
    -F或–fib 显示路由缓存
    -g或–groups 显示多重广播功能群组组员名单
    -h或–help 在线帮助
    -i或–interfaces 显示网络界面信息表单
    -l或–listening 显示监控中的服务器的Socket
    -M或–masquerade 显示伪装的网络连线
    -n或–numeric 直接使用IP地址,而不通过域名服务器
    -N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称
    -o或–timers 显示计时器
    -p或–programs 显示正在使用Socket的程序识别码和程序名称
    -r或–route 显示Routing Table
    -s或–statistics 显示网络工作信息统计表
    -t或–tcp 显示TCP传输协议的连线状况
    -u或–udp 显示UDP传输协议的连线状况
    -v或–verbose 显示指令执行过程
    -V或–version 显示版本信息
    -w或–raw 显示RAW传输协议的连线状况
    -x或–unix 此参数的效果和指定”-A unix”参数相同
    –ip或–inet 此参数的效果和指定”-A inet”参数相同

    语法格式

    1
    # netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

    显示tcp和udp端口的连接状况(常用)

    1
    # netstat -utlnp

    显示详细的网络状况

    1
    # netstat -a

    显示当前户籍UDP连接状况

    1
    # netstat -nu

    显示UDP端口号的使用情况

    1
    # netstat -apu

    显示网卡列表

    1
    # netstat -i

    显示组播组的关系

    1
    # netstat -g

    显示网络统计信息

    1
    # netstat -s

    显示监听的套接口

    1
    # netstat -l

  • pwd 显示工作目录

    语法格式

    1
    #pwd [--help][--version]

    查看当前所在目录

    1
    # pwd

  • stty 修改终端命令行的相关设置(基本不会用上)

    禁用大写

    1
    #stty iuclc

    恢复可使用大写

    1
    #stty -iuclc

    禁用小写

    1
    #stty olcuc

    恢复可使用小写

    1
    # stty -olcuc   

    打印出终端的行数和列数

    1
    # stty size 

    禁止回显

    1
    # stty -echo

    打开回显

    1
    # stty echo

    禁用回车

    1
    # stty igncr 

    恢复回车

    1
    # stty -igncr

  • touch 修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。ls -l 可以显示档案的时间记录。

    参数 注释
    -a 改变档案的读取时间记录
    -m 改变档案的修改时间记录
    -c 假如目的档案不存在,不会建立新的档案。与 –no-create 的效果一样
    -f 不使用,是为了与其他 unix 系统的相容性而保留
    -r 使用参考档的时间记录,与 –file 的效果一样
    -d 设定时间与日期,可以使用各种不同的格式
    -t 设定档案的时间记录,格式与 date 指令相同
    –no-create 不会建立新档案

    语法格式

    1
    # touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]

    使用指令”touch”修改文件”test”的时间属性为当前系统时间

    1
    # touch test

    使用指令”touch”时,如果指定的文件不存在,则将创建一个新的空白文件

    1
    # touch file

  • uname 显示系统信息

    参数 注释
    -a或–all 显示全部的信息
    -m或–machine 显示电脑类型
    -n或–nodename 显示在网络上的主机名称
    -r或–release 显示操作系统的发行编号
    -s或–sysname 显示操作系统名称
    -v 显示操作系统的版本

    语法格式

    1
    # uname [-amnrsv][--help][--version]

    显示系统信息

    1
    # uname -a

    显示计算机类型

    1
    # uname -m

    显示计算机名

    1
    # uname -n

    显示操作系统发行编号

    1
    # uname -r

    显示操作系统名称

    1
    # uname -s

    显示系统版本与时间

    1
    # uname -v

  • chgrp 变更文件或目录的所属群组

    参数 注释
    -c或–changes 效果类似”-v”参数,但仅回报更改的部分
    -f或–quiet或–silent 不显示错误信息
    -h或–no-dereference 只对符号连接的文件作修改,而不更动其他任何相关文件
    -R或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理
    -v或–verbose 显示指令执行过程

    语法格式

    1
    2
    # chgrp [-cfhRv][--help][--version][所属群组][文件或目录...]
    # chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]

    把test.log的群组改为bin

    1
    # chgrp -v bin test.log

    改变文件test2.log 的群组属性,使得文件test2.log的群组属性和参考文件test.log的群组属性相同

    1
    # chgrp --reference=test.log test2.log 

  • cp 复制文件或目录

    参数 注释
    -a 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合
    -d 复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式
    -f 覆盖已经存在的目标文件而不给出提示
    -i 与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖
    -p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
    -r 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
    -l 不复制文件,只是生成链接文件

    语法格式

    1
    2
    # cp [options] source dest
    # cp [options] source... directory

    将当前目录 test/ 下的所有文件复制到新目录 newtest 下

    1
    # cp –r test/ newtest    

  • df 显示目前在 Linux 系统上的文件系统磁盘使用情况统计

    参数 注释
    -a, –all 包含所有的具有 0 Blocks 的文件系统
    –block-size={SIZE} 使用 {SIZE} 大小的 Blocks
    -h, –human-readable 使用人类可读的格式(预设值是不加这个选项)
    -H, –si 很像 -h, 但是用 1000 为单位而不是用 1024
    -i, –inodes 列出 inode 资讯,不列出已使用 block
    -k, –kilobytes 就像是 –block-size=1024
    -l, –local 限制列出的文件结构
    -m, –megabytes 就像 –block-size=1048576
    –no-sync 取得资讯前不 sync (预设值)
    -P, –portability 使用 POSIX 输出格式
    –sync 在取得资讯前 sync
    -t, –type=TYPE 限制列出文件系统的 TYPE
    -T, –print-type 显示文件系统的形式
    -x, –exclude-type=TYPE 限制列出文件系统不要显示 TYPE
    -v (忽略)

    语法格式

    1
    # df [选项]... [FILE]...

    显示文件系统的磁盘使用情况统计

    1
    # df    

    显示磁盘使用的文件系统信息

    1
    # df test  

    输出显示inode信息而非块使用量

    1
    # df -i    

    显示所有的信息

    1
    # df --total   

    产生可读的格式df命令的输出

    1
    # df -h

  • grep 查找文件里符合条件的字符串

    参数 注释
    -a 或 –text 不要忽略二进制的数据。
    -A<显示行数> 或 –after-context=<显示行数> 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
    -b 或 –byte-offset 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
    -B<显示行数> 或 –before-context=<显示行数> 除了显示符合样式的那一行之外,并显示该行之前的内容。
    -c 或 –count 计算符合样式的列数。
    -C<显示行数> 或 –context=<显示行数>或-<显示行数> 除了显示符合样式的那一行之外,并显示该行之前后的内容。
    -d <动作> 或 –directories=<动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
    -e<范本样式> 或 –regexp=<范本样式> 指定字符串做为查找文件内容的样式。
    -E 或 –extended-regexp 将样式为延伸的正则表达式来使用。
    -f<规则文件> 或 –file=<规则文件> 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
    -F 或 –fixed-regexp 将样式视为固定字符串的列表。
    -G 或 –basic-regexp 将样式视为普通的表示法来使用。
    -h 或 –no-filename 在显示符合样式的那一行之前,不标示该行所属的文件名称。
    -H 或 –with-filename 在显示符合样式的那一行之前,表示该行所属的文件名称。
    -i 或 –ignore-case 忽略字符大小写的差别。
    -l 或 –file-with-matches 列出文件内容符合指定的样式的文件名称。
    -L 或 –files-without-match 列出文件内容不符合指定的样式的文件名称。
    -n 或 –line-number 在显示符合样式的那一行之前,标示出该行的列数编号。
    -o 或 –only-matching 只显示匹配PATTERN 部分。
    -q 或 –quiet或–silent 不显示任何信息。
    -r 或 –recursive 此参数的效果和指定”-d recurse”参数相同。
    -s 或 –no-messages 不显示错误信息。
    -v 或 –invert-match 显示不包含匹配文本的所有行。
    -V 或 –version 显示版本信息。
    -w 或 –word-regexp 只显示全字符合的列。
    -x –line-regexp 只显示全列符合的列。
    -y 此参数的效果和指定”-i”参数相同。

    语法格式

    1
    # grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

    在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行

    1
    # grep test *file 

    查找指定目录/root/testlog 及其子目录(如果存在子目录的话)下所有文件中包含字符串”test”的文件

    1
    # grep -r test /root/testlog 

    查找文件名中包含 test 的文件中不包含 test 的行

    1
    # grep -v test *test*

    在fdisk命令下,筛选出 Disk /dev 的显示输出

    1
    # fdisk -l 2> null | grep 'Disk /dev'

  • ipcalc 一种计算主机IP信息的简单方法

    参数 注释
    -c –check 检测ip地址
    -4 指定ipv4
    -6 指定ipv6
    -b –broadcast 显示指定ip的广播地址和网络掩码
    -h –hostname 显示指定ip的主机名
    -m –netmask 计算给定地址的掩码
    -p –prefix 显示给定掩码或者ip的前缀
    -n –network 显示给定ip和掩码的网络地址
    -s –slient 不显示任何错误信息

    语法格式

    1
    # ipcalc [OPTION]... <IP address>[/prefix] [netmask]

    计算网络地址

    1
    # ipcalc -n  192.168.1.9/24

    计算广播地址

    1
    # ipcalc -b  192.168.1.9/24

    计算子网掩码

    1
    # ipcalc -4 -m  192.168.1.9

  • mount 挂载Linux系统外的文件

    参数 注释
    -V 显示程序版本
    -h 显示辅助讯息
    -v 显示较讯息,通常和 -f 用来除错。
    -a 将 /etc/fstab 中定义的所有档案系统挂上。
    -F 这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
    -f 通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
    -n 一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
    -s-r 等于 -o ro
    -w 等于 -o rw
    -L 将含有特定标签的硬盘分割挂上。
    -U 将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
    -t 指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
    -o async 打开非同步模式,所有的档案读写动作都会用非同步模式执行。
    -o sync 在同步模式下执行。
    -o atime、-o noatime 当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
    -o auto、-o noauto 打开/关闭自动挂上模式。
    -o defaults 使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
    -o dev、-o nodev-o exec、-o noexec 允许执行档被执行。
    -o suid、-o nosuid 允许执行档在 root 权限下执行。
    -o user、-o nouser 使用者可以执行 mount/umount 的动作。
    -o remount 将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
    -o ro 用唯读模式挂上。
    -o rw 用可读写模式挂上。
    -o loop= 使用 loop 模式用来将一个档案当成硬盘分割挂上系统。

    语法格式

    1
    2
    3
    4
    # mount [-hV]
    # mount -a [-fFnrsvw] [-t vfstype]
    # mount [-fnrsvw] [-o options [,...]] device | dir
    # mount [-fnrsvw] [-t vfstype] [-o options] device dir

    将 /dev/hda1 挂在 /mnt 之下

    1
    # mount /dev/hda1 /mnt

    将 /dev/hda1 用唯读模式挂在 /mnt 之下

    1
    # mount -o ro /dev/hda1 /mnt

    将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光 碟 ISO 档在不烧录成光碟的情况下检视其内容。

    1
    # mount -o loop /tmp/image.iso /mnt/cdrom

  • ping 用于检测主机,执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

    参数 注释
    -d 使用Socket的SO_DEBUG功能。
    -c <完成次数> 设置完成要求回应的次数。
    -f 极限检测。
    -i<间隔秒数> 指定收发信息的间隔时间。
    -I<网络界面> 使用指定的网络接口送出数据包。
    -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
    -n 只输出数值。
    -p<范本样式> 设置填满数据包的范本样式。
    -q 不显示指令执行过程,开头和结尾的相关信息除外。
    -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
    -R 记录路由过程。
    -s<数据包大小> 设置数据包的大小。
    -t<存活数值> 设置存活数值TTL的大小。
    -v 详细显示指令的执行过程。
    -w 在 deadline 秒后退出。
    -W 在等待 timeout 秒后开始执行。

    语法格式

    1
    # ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]

    检测是否与主机连通

    1
    # ping www.baidu.com

    指定接收2次包,自动退出

    1
    # ping -c 2 www.baidu.com

    间隔3秒,发送数据包1024大小,指定ttl值255,ping百度

    1
    # ping -i 3 -s 1024 -t 255 www.baidu.com

  • rm 删除一个文件或者目录

    参数 注释
    -i 删除前逐一询问确认。
    -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
    -r 将目录及以下之档案亦逐一删除。

    语法格式

    1
    # rm [options] name...

    删除test.txt

    1
    # rm  test.txt 

    删除homework目录(删除文件可以直接使用rm命令,若删除目录则必须配合选项”-r”)

    1
    # rm  -r  homework  

    删除当前目录下的所有文件及目录且不提醒【一般用于删库跑路】

    1
    # rm  -rf  * 

    shred会用一些随机内容覆盖文件所在的节点和数据块,并删除文件(-u参数) 如果想清除的更彻底一点可以加(-z 参数),意思是先用随机数据填充,最后再用0填充。【搭配删库跑路用】

    1
    #shred -u -z test.sh

  • sleep 将目前动作延迟一段时间可以精确到小数,usleep 可以精确到微秒

    参数 注释
    number 时间长度,后面可接 s、m、h 或 d 其中 s 为秒,m 为 分钟,h 为小时,d 为日数

    语法格式

    1
    # sleep [--help] [--version] number[smhd]

    休眠5分钟

    1
    # sleep 5m

    休眠1000毫秒

    1
    # usleep 1000

    显示目前时间后延迟 30 秒,之后再次显示时间

    1
    # date;sleep 30s;date

  • chmod 控制用户对文件的权限的命令

    Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • +表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
    参数 注释
    -c 若该文件权限确实已经更改,才显示其更改动作
    -f 若该文件权限无法被更改也不要显示错误讯息
    -v 显示权限变更的详细资料
    -R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

    语法格式

    1
    # [ugoa...][[+-=][rwxX]...][,...]

    把test文件设置成755权限

    1
    # chmod 755 test

  • cut 显示每行从开头算起 num1 到 num2 的文字

    参数 注释
    -b 以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了
    -c 以字符为单位进行分割。
    -d 自定义分隔符,默认为制表符。
    -f 与-d一起使用,指定显示哪个区域。
    -n 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
    范围之内,该字符将被写出;否则,该字符将被排除

    语法格式

    1
    2
    3
    # cut [-bn] [file]
    # cut [-c] [file]
    # cut [-df] [file]

    提取 free -m 的第三列字节

    1
    # free -m | cut -b 3

  • echo 是 Shell 的一个内部指令,用于在屏幕上打印出指定的字符串

    语法格式

    1
    # echo string

    显示普通字符串

    1
    2
    # echo "It is a test"
    # echo It is a test

    显示转义字符,将会输出’'

    1
    # echo "\"It is a test\""

    read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量

    1
    2
    3
    #!/bin/sh
    read name
    echo "$name It is a test"

    显示换行, -e 开启转义

    1
    2
    # echo -e "OK! \n" 
    echo "It is a test"

    显示不换行, -e 开启转义 \c 不换行

    1
    2
    3
    #!/bin/sh
    echo -e "OK! \c"
    echo "It is a test"

    显示结果定向至 test 文件

    1
    # echo "It is a test" > test

    原样输出字符串,不进行转义或取变量(用单引号)

    1
    # echo '$name\"'

    显示命令执行结果,用的是反引号( ` )

    1
    # echo `date`

  • gzip 用于压缩文件

    参数 注释
    -a或–ascii 使用ASCII文字模式。
    -c或–stdout或–to-stdout 把压缩后的文件输出到标准输出设备,不去更动原始文件。
    -d或–decompress或—-uncompress 解开压缩文件。
    -f或–force 强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
    -h或–help 在线帮助。
    -l或–list 列出压缩文件的相关信息。
    -L或–license 显示版本与版权信息。
    -n或–no-name 压缩文件时,不保存原来的文件名称及时间戳记。
    -N或–name 压缩文件时,保存原来的文件名称及时间戳记。
    -q或–quiet 不显示警告信息。
    -r或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
    -S<压缩字尾字符串>或—-suffix<压缩字尾字符串> 更改压缩字尾字符串。
    -t或–test 测试压缩文件是否正确无误。
    -v或–verbose 显示指令执行过程。
    -V或–version 显示版本信息。
    -<压缩效率> 压缩效率是一个介于1-9的数值,预设值为”6”,指定愈大的数值,压缩效率就会愈高。
    –best 此参数的效果和指定”-9”参数相同。
    –fast 此参数的效果和指定”-1”参数相同。

    语法格式

    1
    2
    # gzip [-acdfhlLnNqrtvV][-S &lt;压缩字尾字符串&gt;][-&lt;压缩效率&gt;][--best/fast][文件...] 
    # gzip [-acdfhlLnNqrtvV][-S &lt;压缩字尾字符串&gt;][-&lt;压缩效率&gt;][--best/fast][目录]

    压缩当前目录下的所有文件

    1
    # gzip *

    解压当前目录下所有文件,并列出详细信息

    1
    # gzip -dv *

    显示当前目录下所有压缩文件的信息

    1
    # gzip -l *

  • kill 删除执行中的程序或工作

    参数 注释
    -l <信息编号> 若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
    -s <信息名称或编号> 指定要送出的信息。
    [程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
  • 使用 kill -l 命令列出所有可用信号。

  • 最常用的信号是:

    参数 注释
    1 (HUP) 重新加载进程。
    9 (KILL) 杀死一个进程。
    15 (TERM) 正常停止一个进程。

    语法格式

    1
    2
    # kill [-s <信息名称或编号>][程序] 
    # kill [-l <信息编号>]

    杀死123号进程

    1
    # kill 123

    显示信号

    1
    # kill -l

    强制杀死123号进程

    1
    # kill 123

    发送SIGHUP信号,可以使用一下信号

    1
    # kill -HUP pid

    杀死指定用户 test 的所有进程

    1
    2
    # kill -9 $(ps -ef | grep test)
    # kill -u test

  • pkill 杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程,类似于 killall 命令

    参数 注释
    name 进程名
    -o 仅向找到的最小(起始)进程号发送信号 -n 仅向找到的最大(结束)进程号发送信号
    -P 指定父进程号发送信号
    -g 指定进程组
    -t 指定开启进程的终端

    语法格式

    1
    # pkill [选项] name

    结束所有的 php-fpm 进程

    1
    # pkill -9  php-fpm

  • killall5 是SystemV killall命令。它向所有进程发送一个信号,除了内核线程和它自己会话中的进程,所以它不会杀死运行脚本的shell

    参数 注释
    -o 指定不杀死的进程pid

    语法格式

    1
    # killall5 [参数]

    杀死除3333外外的所有进程

    1
    # killall5 -o 3333

  • ls 显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)

    参数 注释
    -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
    -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
    -r 将文件以相反次序显示(原定依英文字母次序)
    -t 将文件依建立时间之先后次序列出
    -A 同 -a ,但不列出 “.” (目前目录) 及 “..” (父目录)
    -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/“
    -R 若目录下有文件,则以下之文件亦皆依序列出

    语法格式

    1
    # ls [-alrtAFR] [name...]

    列出根目录( / )下的所有目录

    1
    # ls /

    列出目前工作目录下所有名称是 a 开头的文件,新的排后面

    1
    # ls -ltr a*

    将 /etc 目录以下所有目录及文件详细资料列出

    1
    # ls -lR /etc

    列出目前工作目录下所有文件及目录;目录名称后加 “/“, 可执行名称后加 “*”

    1
    # ls -AF

  • mv 将文件或目录改名、或将文件或目录移入其它位置

    参数 注释
    -b 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
    -i 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
    -f 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
    -n 不要覆盖任何已存在的文件或目录。
    -u 当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

    语法格式

    1
    2
    # mv [options] source dest
    # mv [options] source... directory

    将当前目录下文件 test 改名为 test2

    1
    # mv test test2

    将 info 目录放入 logs 目录中,如果logs目录不存在,则info会改名为logs

    1
    # mv info/ logs 

    将 /usr/test 下的所有文件和目录移到当前目录下

    1
    # mv /usr/test/* .

  • ps 显示当前进程的状态

    参数 注释
    ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
    -A 列出所有的进程
    -w 显示加宽可以显示较多的资讯
    -au 显示较详细的资讯
    -aux 显示所有包含其他使用者的行程

    语法格式

    1
    # ps [options] [--help]

    显示 php 的进程

    1
    # ps -ef | grep php

    显示进程信息

    1
    # ps -A 

    显示root进程用户信息

    1
    # ps -u root

    显示所有命令,连带命令行

    1
    # ps -ef 

  • sed 利用脚本来处理文本文件

    参数 注释
    -e或–expression 以选项中指定的script来处理输入的文本文件。
    -f或–file> 以选项中指定的script文件来处理输入的文本文件。
    -h或–help 显示帮助。
    -n或–quiet或–silent 仅显示script处理后的结果。
    -V或–version 显示版本信息。
    动作 说明
    a 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
    c 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
    d 删除,因为是删除,所以 d 后面通常不接任何东西;
    i 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    p 打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
    s 取代,可以直接进行取代的工作,通常这个 s 的动作可以搭配正规表示法,例如 1,20s/old/new/g

    语法格式

    1
    # sed [-hnV][-e<script>][-f<script文件>][文本文件]

    在test文件的第4行后添加一行,并输出

    1
    # sed -e 4a\newLine test 

    将 /etc/passwd 的内容列出并且列印行号,同时,将第 4~6 行删除

    1
    # nl /etc/passwd | sed '4,6d'

    将 /etc/passwd 的内容列出并且列印行号,同时,在第二行后加上『testword』字样

    1
    # nl /etc/passwd | sed '2a testword'

    将 /etc/passwd 的内容列出并且列印行号,同时,在第二行前加上『testword』字样

    1
    # nl /etc/passwd | sed '2i testword' 

    将 /etc/passwd 的内容列出并且列印行号,同时,在第二行后面加入两行字(单引号结束)

    1
    2
    # nl /etc/passwd | sed '2a test\
    > test2'

    将 /etc/passwd 的内容列出并且列印行号,同时,将第2-5行的内容取代成为『test』

    1
    # nl /etc/passwd | sed '2,5c test'

    搜索 /etc/passwd有root关键字的行,使用-n的时候将只打印包含模板的行

    1
    # nl /etc/passwd | sed -n '/root/p'

    删除/etc/passwd所有包含root的行,其他行输出

    1
    # nl /etc/passwd | sed  '/root/d'

    搜索/etc/passwd,找到root对应的行,把bash替换为test

    1
    # nl /etc/passwd | sed -n '/root/{s/bash/test/;p;q}'

    仅列出 free -m 命令内的free,删除前面和后面

    1
    # free -m | grep 'free'| sed 's/^.*used//g'| sed 's/shared.*$//g'

    删除/etc/passwd第三行到末尾的数据,并把bash替换为test

    1
    # nl /etc/passwd | sed -e '3,$d' -e 's/bash/test/'

    利用 sed 将 test.txt 内每一行结尾若为 . 则换成 ! (危险动作)

    1
    # sed -i 's/\.$/\!/g' test.txt

    利用 sed 直接在 test.txt 最后一行加入 # This is a test: (危险动作) $ 代表最后一行

    1
    # sed -i '$a # This is a test' test.txt

    筛选出ip addr命令里面的ip和mask【截掉inet之前,截到brd(\1和\2代表前面括号的内容,最后p输出)】

    1
    2
    # ip a | sed -r -n 's@inet(.*)/(.*)brd.*@ ip:\1 mask:\2 @p'
    输出:>ip: 192.168.229.33 mask:24

  • sort 将文本文件内容加以排序

    参数 注释
    -b 忽略每行前面开始出的空格字符。
    -c 检查文件是否已经按照顺序排序。
    -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
    -f 排序时,将小写字母视为大写字母。
    -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
    -m 将几个排序好的文件进行合并。
    -M 将前面3个字母依照月份的缩写进行排序。
    -n 依照数值的大小排序。
    -u 意味着是唯一的(unique),输出的结果是去完重了的。
    -o<输出文件> 将排序后的结果存入指定的文件。
    -r 以相反的顺序来排序。
    -t<分隔字符> 指定排序时所用的栏位分隔字符。
    +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

    语法格式

    1
    # sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]

    将test.txt文件以开头az或19的升序输出,并-u去除重复行

    1
    # sort -u test.txt

    将test.txt文件以开头az或19的降序输出

    1
    # sort -r test.txt

    将test.txt文件以开头az或19的升序输出,-n不会出现2比10大的情况

    1
    # sort -n test.txt

  • tar 用于打包或者备份

    参数 注释
    -A或–catenate: 新增文件到以存在的 备份文件;
    -B: 设置区块大小;
    -c或–create: 建立新的备份文件;
    -C <目录>: 这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
    -d: 记录文件的差别;
    -x或–extract或–get: 从备份文件中还原文件;
    -t或–list: 列出备份文件的内容;
    -z或–gzip或–ungzip: 通过gzip指令处理备份文件;
    -Z或–compress或–uncompress: 通过compress指令处理备份文件;
    -f<备份文件>或–file=<备份文件>: 指定备份文件;
    -v或–verbose: 显示指令执行过程;
    -r: 添加文件到已经压缩的文件;
    -u: 添加改变了和现有的文件到已经存在的压缩文件;
    -j: 支持bzip2解压文件;
    -v: 显示操作过程; -l:文件系统边界设置;
    -k: 保留原有文件不覆盖;
    -m: 保留文件不被覆盖;
    -w: 确认压缩文件的正确性;
    -p或–same-permissions: 用原来的文件权限还原文件;
    -P或–absolute-names: 文件名使用绝对名称,不移除文件名称前的“/”号;
    -N <日期格式> 或 –newer=<日期时间>: 只将较指定日期更新的文件保存到备份文件里; –exclude=<范本样式>:排除符合范本样式的文件。

    语法格式

    1
    # tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<范本样式>][--force-local][--group=<群组名称>][--help][--ignore-failed-read][--new-volume-script=<Script文件>][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<区块数目>][--recursive-unlink][--remove-files][--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>][--totals][--use-compress-program=<执行指令>][--version][--volno-file=<编号文件>][文件或目录...]

    压缩 a.c文件为test.tar.gz

    1
    # tar -czvf test.tar.gz a.c

    列出压缩文件 test.tar.gz 的内容

    1
    # tar -tzvf test.tar.gz 

    解压 test.tar.gz

    1
    # tar -xzvf test.tar.gz 

  • umount 可卸除目前挂在Linux目录中的文件系统

    参数 注释
    -a 卸除/etc/mtab中记录的所有文件系统。
    -n 卸除时不要将信息存入/etc/mtab文件中。
    -r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。
    -t<文件系统类型> 仅卸除选项中所指定的文件系统。
    -v 执行时显示详细的信息。

    语法格式

    1
    # umount [-ahnrvV][-t <文件系统类型>][文件系统]

    通过设备名卸载

    1
    # umount -v /dev/sda1 

    通过挂载点卸载

    1
    # umount -v /mnt/mymount/

  • vi/vim 编辑器

    语法格式

    1
    # vim [文件]
  • 基本上 vi/vim 共分为三种模式,分别是命令模式,输入模式,底线命令模式。
    这三种模式的作用分别是:

    • 命令模式:
      参数 注释
      i 切换到输入模式,以输入字符。
      x 删除当前光标所在处的字符。
      : 切换到底线命令模式,以在最底一行输入命令。
    • 输入模式:
      键入 注释
      字符按键以及Shift组合 输入字符
      ENTER 回车键,换行
      BACK SPACE 退格键,删除光标前一个字符
      DEL 删除键,删除光标后一个字符
      方向键 在文本中移动光标
      HOME/END 移动光标到行首/行尾
      Page Up/Page Down 上/下翻页
      Insert 切换光标为输入/替换模式,光标将变成竖线/下划线
      ESC 退出输入模式,切换到命令模式
    • 底线命令模式:
      键入 注释
      q 退出程序
      w 保存文件

    删除空行

    1
    esc: g/^$/d

    删除空行以及只有空格的行

    1
    esc: g/^\s*$/d

  • dd 读取、转换并输出数据

    参数 注释
    if=文件名 输入文件名,默认为标准输入。即指定源文件。
    of=文件名 输出文件名,默认为标准输出。即指定目的文件。
    ibs=bytes 一次读入bytes个字节,即指定一个块大小为bytes个字节。
    obs=bytes 一次输出bytes个字节,即指定一个块大小为bytes个字节。
    bs=bytes 同时设置读入/输出的块大小为bytes个字节。
    cbs=bytes 一次转换bytes个字节,即指定转换缓冲区大小。
    skip=blocks 从输入文件开头跳过blocks个块后再开始复制。
    seek=blocks 从输出文件开头跳过blocks个块后再开始复制。
    count=blocks 仅拷贝blocks个块,块大小等于ibs指定的字节数。
    conv=<关键字> 关键字可以有以下11种:
    conversion 用指定的参数转换文件。
    ascii 转换ebcdic为ascii
    ebcdic 转换ascii为ebcdic
    ibm 转换ascii为alternate ebcdic
    block 把每一行转换为长度为cbs,不足部分用空格填充
    unblock 使每一行的长度都为cbs,不足部分用空格填充
    lcase 把大写字符转换为小写字符
    ucase 把小写字符转换为大写字符
    swap 交换输入的每对字节
    noerror 出错时不停止
    notrunc 不截短输出文件
    sync 将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

    在Linux 下制作启动盘

    1
    # dd if=boot.img of=/dev/sda bs=1440k  

    将test_1文件中的所有英文字母转换为大写,然后转成为test_2文件

    1
    # dd if=test_1 of=test_2 conv=ucase 

    进入输入模式Ctrl+D退出,将键入文本转换成大写结果

    1
    # dd conv=ucase 

    新建一个命令窗口,会在原窗口会刷新进度

    1
    # watch -n 1 pkill -USR1 -x dd

  • traceroute 显示数据包到主机间的路径

    参数 注释
    -d 使用Socket层级的排错功能。
    -f<存活数值> 设置第一个检测数据包的存活数值TTL的大小。
    -F 设置勿离断位。
    -g<网关> 设置来源路由网关,最多可设置8个。
    -i<网络界面> 使用指定的网络界面送出数据包。
    -I 使用ICMP回应取代UDP资料信息。
    -m<存活数值> 设置检测数据包的最大存活数值TTL的大小。
    -n 直接使用IP地址而非主机名称。
    -p<通信端口> 设置UDP传输协议的通信端口。
    -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
    -s<来源地址> 设置本地主机送出数据包的IP地址。
    -t<服务类型> 设置检测数据包的TOS数值。
    -v 详细显示指令的执行过程。
    -w<超时秒数> 设置等待远端主机回报的时间。
    -x 开启或关闭数据包的正确性检验。

    语法格式

    1
    # traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

    显示到达目的地的数据包路由

    1
    # traceroute www.google.com

  • zcat 查看压缩文件(gzip 压缩的 .gz 文件)

    参数 注释
    -S 指定gzip格式的压缩包的后缀。当后缀不是标准压缩包后缀时使用此选项;
    -c 将文件内容写到标注输出;
    -d 执行解压缩操作;
    -l 显示压缩包中文件的列表;
    -L 显示软件许可信息;
    -q 禁用警告信息;
    -r 在目录上执行递归操作;
    -t 测试压缩文件的完整性;
    -V 显示指令的版本信息;
    -l 更快的压缩速度;
    -9 更高的压缩比。

    语法格式

    1
    # zcat <fileName> 

    查看压缩包 test.gz 的内容

    1
    # zcat test.gz

SBIN


  • arp 显示和修改 IP 到 MAC 转换表

    参数 注释
    -a 主机 :显示 arp 缓冲区的所有条目
    -H 地址类型 :指定 arp 指令使用的地址类型
    -d 主机 :从 arp 缓冲区中删除指定主机的 arp 条目
    -D 使用指定接口的硬件地址
    -e 以 Linux 的显示风格显示 arp 缓冲区中的条目
    -i 接口 :指定要操作 arp 缓冲区的网络接口
    -s 主机 MAC 地址 :设置指定的主机的 IP 地址与 MAC 地址的静态映射
    -n 以数字方式显示 arp 缓冲区中的条目
    -v 显示详细的 arp 缓冲区条目,包括缓冲区条目的统计信息
    -f 文件 :设置主机的 IP 地址与 MAC 地址的静态映射

    语法格式

    1
    # zarp(选项)(参数)

    显示arp 缓冲区内容

    1
    # arp -v

    添加静态 arp 映射

    1
    # arp -s 192.168.1.1 00:b1:b2:b3:b4:b5

    删除 arp 缓存条目

    1
    # arp -d 192.168.1.1

  • ansible 提供两种方式去完成任务,一是 ad-hoc 命令,一是写 Ansible playbook.前者可以解决一些简单的任务, 后者解决较复杂的任务.(ad-hoc 命令和 ansible playbook 的关系类似于在命令行敲入shell命令和 写shell scripts两者之间的关系)

    参数 注释
    -f forks: 启动的并发线程数;
    -m module_name: 要使用的模块;
    -a args: 模块特有的参数;

    语法格式

    1
    2
    3
    4
    5
    6
    7
    # ansible <host-pattern> [-f forks] [-m module_name] [-a args]

    以指定用户名运行
    # ansible atlanta -a "/usr/bin/foo" -u username

    以sudo 运行
    # ansible atlanta -a "/usr/bin/foo" -u username --sudo [--ask-sudo-pass]

    ping: 模块

    1
    # ansible all -m ping

    service: 模块

    1
    # ansible webservs -m service -a 'enabled=true name=httpd state=started'

    command: 模块

    1
    # ansible 192.168.1.101 -m command -a 'date'

    shell:用到管道复杂命令功能时建议用shell

    1
    # ansible all -m shell -a 'echo 123..com | passwd --stdin user1'

    script:在远程主机执行脚本

    1
    # ansible all -m script -a "/root/1.sh"

    yum:安装程序包 卸载的话 state=absent

    1
    # ansible all -m yum -a "name=zsh"

    file: 更改文件的属主、group

    1
    # ansible all -m file -a 'owner=mysql group=mysql mode=644 path=/tmp/fstab.ansible'

    copy: src=: 定义本地源文件路径; dest=: 定义远程目标文件路径; content=: 取代src=,表示直接用此处指定的信息生成为目标文件

    1
    # ansible all -m copy -a 'src=/etc/fstab dest=/tmp/fstab.ansible owner=root mode=640'

    user: 创建用户, 删除用户后面跟上 state=absent

    1
    # ansible all -m user -a 'name="user1"' 

    cron模块: 让被管理节点生成定期自动运维计划

    1
    2
    2台主机每10分钟运行一次echo hell
    #ansible webservs -m cron -a 'minute="*/10" job="/bin/echo hell" name="test cron job"'

    git 模块: 使用 git 部署 webapp

    1
    # ansible webservers -m git -a "repo=git://foo.example.org/repo.git dest=/srv/myapp version=HEAD"

  • ethtool 获取以太网卡的配置信息,或者修改这些配置

    参数 注释
    -a 查看网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。
    -A 修改网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。
    -c display the Coalesce information of the specified ethernet card。
    -C Change the Coalesce setting of the specified ethernet card。
    -g Display the rx/tx ring parameter information of the specified ethernet card。
    -G change the rx/tx ring setting of the specified ethernet card。
    -i 显示网卡驱动的信息,如驱动的名称、版本等。
    -d 显示register dump信息, 部分网卡驱动不支持该选项。
    -e 显示EEPROM dump信息,部分网卡驱动不支持该选项。
    -E 修改网卡EEPROM byte。
    -k 显示网卡Offload参数的状态:on 或 off,包括rx-checksumming、tx-checksumming等。
    -K 修改网卡Offload参数的状态。
    -p 用于区别不同ethX对应网卡的物理位置,常用的方法是使网卡port上的led不断的闪;N指示了网卡闪的持续时间,以秒为单位。
    -r 如果auto-negotiation模块的状态为on,则restarts auto-negotiation。
    -S 显示NIC- and driver-specific 的统计参数,如网卡接收/发送的字节数、接收/发送的广播包个数等。
    -t 让网卡执行自我检测,有两种模式:offline or online。
    -s 修改网卡的部分配置,包括网卡速度、单工/全双工模式、mac地址等。

    语法格式

    1
    # ethtool [-a|-c|-g|-i|-d|-k|-r|-S|] [网卡]

    查看ens33网卡speed信息

    1
    # ethtool ens33 | grep -i 'speed'

    查看eth0网卡基本设置,内容包括网卡速率、网卡的工作模式等

    1
    # ethool eth0

    查看eth0网卡的驱动信息,内容包括驱动的型号、驱动的版本等

    1
    # ethool -i eth0

    设置eth1网卡的速率,单位是:Mb/s

    1
    # ethtool -s eth1 speed [10|100|1000]

    设置eth1网卡的速率,单位是:Mb/s

    1
    # ethtool -s eth1 speed [10|100|1000]

    设置eth1网卡的工作模式,可设置为半双工或全双工

    1
    # ethtool -s eth1 duplex [half|full] 

    设置eth1网卡,不自动协商,网卡速率100mb/s,流控全双工

    1
    # ethtool -s eth1 autoneg off speed 100 duplex full

  • e2label 用来设置第二扩展文件系统的卷标

    参数 注释
    文件系统 指定文件系统所对应的设备文件名
    新卷标 为文件系统指定新卷标

    语法格式

    1
    # e2label [盘符] [标签]

    下次重新起动机器的时候,就会把卷标为/new的分区挂接到/new上

    1
    2
    3
    # mkdir /new 
    # e2label /dev/hda2 /new
    # echo "label=/new /new ext3 defaults 1 1" >> /etc/fstab

  • halt 用来关闭正在运行的Linux操作系统。halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统

    参数 注释
    -d 不要在wtmp中记录;
    -f 不论目前的runlevel为何,不调用shutdown即强制关闭系统;
    -i 在halt之前,关闭全部的网络界面;
    -n halt前,不用先执行sync;
    -p halt之后,执行poweroff;
    -w 仅在wtmp中记录,而不实际结束系统;

    语法格式

    1
    # halt(选项)

    关闭系统后,关闭电源

    1
    # halt -p  

    关闭系统,但不留下纪录

    1
    # halt -d

  • ifup/ifdown 启动和关闭网卡

    语法格式

    1
    # ifup/down interface

    启用ens33网卡

    1
    # ifup ifcfg-ens33

    关闭ens33网卡

    1
    # ifdown ifcfg-ens33

  • ifenslave 负载均衡工具

    建一个组,把eth0和eth1加进去,然后给bond0配置

    1
    2
    3
    # ifenslave bond0 eth0
    # ifenslave bond0 eth1
    # ifconfig bond0 [ip] [submark]
  • 配置文件中有一句:options bond0 miimon=100 mode=1,miimon= 是毫秒数,每100毫秒触发检测线路稳定性的事件,mode= 是ifenslave的工作状态。
    一共有7种模式:
    • =0: (balance-rr) Round-robin policy: (平衡抡循环策略):传输数据包顺序是依次传输,直到最后一个传输完毕, 此模式提供负载平衡和容错能力。
    • =1: (active-backup) Active-backup policy:(主-备份策略):只有一个设备处于活动状态。 一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。 此模式提供了容错能力。
    • =2:(balance-xor) XOR policy:(广播策略):将所有数据包传输给所有接口。 此模式提供了容错能力。
    • =3:(balance-xor) XOR policy:(平衡策略): 传输根据原地址布尔值选择传输设备。 此模式提供负载平衡和容错能力。
    • =4:(802.3ad) IEEE 802.3ad Dynamic link aggregation.IEEE 802.3ad 动态链接聚合:创建共享相同的速度和双工设置的聚合组。
    • =5:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡):没有特殊策略,第一个设备传不通就用另一个设备接管第一个设备正在处理的mac地址,帮助上一个传。
    • =6:(balance-alb) Adaptive load balancing:(适配器传输负载均衡):大致意思是包括mode5,bonding驱动程序截获 ARP 在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。

  • partx 告诉内核当前磁盘的分区情况

    参数 注释
    -a 增加制定的分区或读磁盘新增的分区
    -d 删除制定或所有的分区
    -l 列出分区
    –type 指定分区类型。dos,bsd,solaris,unix,或者gpt
    –nr M-N 指定分区范围

    语法格式

    1
    # partx [-a|-d|-l] [--type TYPE] [--nr M-N] [partition] disk

    让内核重读/dev/sdb分区表

    1
    # partx -a /dev/sdb

    列出sda这块硬盘的分区

    1
    # partx --show /dev/sda

  • partprobe 重读分区表

    参数 注释
    -d 不更新内核
    -s 显示摘要和分区
    -h 显示帮助信息
    -v 显示版本信息

    语法格式

    1
    # partprobe [参数]

    在安装Linux系统之后,创建分区并且在不重新启动机器的情况下让系统识别这些分区(sdb6为新创建的分区)

    1
    # partprobe /dev/sdb6

  • runlevel 打印当前Linux系统的运行等级

    参数 注释
    0 停机
    1 单用户模式
    2 多用户,没有 NFS
    3 完全多用户模式
    4 没有用到
    5 图形界面
    6 重新启动
    S s Single user mode

    查看当前运行等级,无图形化一般运行输出为N 3

    1
    # runlevel

  • rmmod 删除模块

    参数 注释
    -a 删除所有目前不需要的模块。
    -s 把信息输出至syslog常驻服务,而非终端机界面。

    语法格式

    1
    # rmmod [-as][模块名称...]

    显示已安装的模块

    1
    # lsmod

    卸载模块pppoe

    1
    # rmmod -v pppoe

  • insmod 载入模块

    参数 注释
    -f 不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入。
    -k 将模块设置为自动卸除。
    -m 输出模块的载入信息。
    -o<模块名称> 指定模块的名称,可使用模块文件的文件名。
    -p 测试模块是否能正确地载入kernel。
    -s 将所有信息记录在系统记录文件中。
    -v 执行时显示详细的信息。
    -x 不要汇出模块的外部符号。
    -X 汇出模块所有的外部符号,此为预设置。

    语法格式

    1
    # insmod [-fkmpsvxX][-o <模块名称>][模块文件][符号名称 = 符号值]

    向内核加载led.o模块

    1
    # insmod led.o 
  • modprobe 自动处理可载入模块

    参数 注释
    -a或–all 载入全部的模块
    -c或–show-conf 显示所有模块的设置信息
    -d或–debug 使用排错模式
    -l或–list 显示可用的模块
    -r或–remove 模块闲置不用时,即自动卸载模块
    -t或–type 指定模块类型
    -v或–verbose 执行时显示详细的信息

    语法格式

    1
    # modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值]

    安装软驱模块

    1
    # modprobe -v floppy 

    卸载软驱模块

    1
    # modprobe -v -r floppy 

  • arping 向邻近主机发送ARP请求

    参数 注释
    -A ARP回复模式,更新邻居
    -b 保持广播
    -D 复制地址检测模式
    -f 得到第一个回复就 退出
    -q 不显示警告信息
    -U 主动的ARP模式,更新邻居
    -c <数据包的数目> 发送的数据包的数目
    -w <超时时间> 设置超时时间
    -I <网卡> 使用指定的以太网设备,默认情况下使用eth0
    -s 指定源IP地址

    语法格式

    1
    # arping [参数]

    测试目标主机的存活状态

    1
    # arping -f 192.168.66.66

    向目标主机发送3次(指定次数)ARP请求

    1
    # arping -c 3 192.168.66.66

    使用指定ens33网口发送指定2次数ARP请求后自动退出命令

    1
    # arping -I ens33 -c 2 192.168.60.1

  • hdparm 显示与设定硬盘的参数

    参数 注释
    -a<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。
    -A<0或1> 启动或关闭读取文件时的快取功能。
    -c<I/O模式> 设定IDE32位I/O模式。
    -C 检测IDE硬盘的电源管理模式。
    -d<0或1> 设定磁盘的DMA模式。
    -f 将内存缓冲区的数据写入硬盘,并清楚缓冲区。
    -g 显示硬盘的磁轨,磁头,磁区等参数。
    -i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。
    -I 直接读取硬盘所提供的硬件规格信息。
    -k<0或1> 重设硬盘时,保留-dmu参数的设定。
    -K<0或1> 重设硬盘时,保留-APSWXZ参数的设定。
    -m<磁区数> 设定硬盘多重分区存取的分区数。
    -n<0或1> 忽略硬盘写入时所发生的错误。
    -p<PIO模式> 设定硬盘的PIO模式。
    -P<磁区数> 设定硬盘内部快取的分区数。
    -q 在执行后续的参数时,不在屏幕上显示任何信息。
    -r<0或1> 设定硬盘的读写模式。
    -S<时间> 设定硬盘进入省电模式前的等待时间。
    -t 评估硬盘的读取效率。
    -T 评估硬盘快取的读取效率。
    -u<0或1> 在硬盘存取时,允许其他中断要求同时执行。
    -v 显示硬盘的相关设定。
    -W<0或1> 关闭/开启磁盘的写入缓存,每个盘都有读取缓存和写入缓存,有时我们关闭磁盘写入缓存的效率高于开启磁盘写入缓存的效率,那当然选择前者了。
    -X<传输模式> 设定硬盘的传输模式。
    -y 使IDE硬盘进入省电模式。
    -Y 使IDE硬盘进入睡眠模式。
    -Z 关闭某些Seagate硬盘的自动省电功能。

    语法格式

    1
    # hdparm [-CfghiIqtTvyYZ][-a <快取分区>][-A <0或1>][-c <I/O模式>][-d <0或1>][-k <0或1>][-K <0或1>][-m <分区数>][-n <0或1>][-p <PIO模式>][-P <分区数>][-r <0或1>][-S <时间>][-u <0或1>][-W <0或1>][-X <传输模式>][设备]

    显示硬盘的相关设置

    1
    # hdparm /dev/sda

    显示硬盘的柱面、磁头、扇区数

    1
    # hdparm -g /dev/sda

    评估硬盘的读取效率

    1
    # hdparm -t /dev/sda

  • init Linux下的进程初始化工具,init进程是所有Linux进程的父进程,它的进程号为1

    参数 注释
    -b 不执行相关脚本而直接进入单用户模式
    -s 切换到单用户模式

    语法格式

    1
    # init(选项)(参数)

    关机,千万不能设id:0:default:

    1
    # init 0

    重启

    1
    # init 6

  • ldconfig 通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令

    参数 注释
    -v或–verbose 用此选项时,ldconfig将显示正在扫描的目录及搜索到的动态链接库,还有它所创建的连接的名字
    -n 用此选项时,ldconfig仅扫描命令行指定的目录,不扫描默认目录(/lib,/usr/lib),也不扫描配置文件/etc/ld.so.conf所列的目录
    -N 此选项指示ldconfig不重建缓存文件(/etc/ld.so.cache).若未用-X选项,ldconfig照常更新文件的连接
    -X 此选项指示ldconfig不更新文件的连接.若未用-N选项,则缓存文件正常更新
    -f CONF 此选项指定动态链接库的配置文件为CONF,系统默认为/etc/ld.so.conf
    -C CACHE 此选项指定生成的缓存文件为CACHE,系统默认的是/etc/ld.so.cache,此文件存放已排好序的可共享的动态链接库的列表
    -r ROOT 此选项改变应用程序的根目录为ROOT(是调用chroot函数实现的).选择此项时,系统默认的配置文件 /etc/ld.so.conf,实际对应的为 ROOT/etc/ld.so.conf.如用-r /usr/zzz时,打开配置文件 /etc/ld.so.conf时,实际打开的是/usr/zzz/etc/ld.so.conf文件.用此选项,可以大大增加动态链接库管理的灵活性
    -l 通常情况下,ldconfig搜索动态链接库时将自动建立动态链接库的连接.选择此项时,将进入专家模式,需要手工设置连接.一般用户不用此项
    -p或–print-cache 此选项指示ldconfig打印出当前缓存文件所保存的所有共享库的名字
    -c FORMAT 或 –format=FORMAT 此选项用于指定缓存文件所使用的格式,共有三种

    语法格式

    1
    # ldconfig [-v|--verbose] [-n] [-N] [-X] [-f CONF] [-C CACHE] [-r ROOT] [-l] [-p|--print-cache] [-c FORMAT] [--format=FORMAT] [-V] [-?|--help|--usage] path... 

  • shutdown 进行关机程序

    参数 注释
    -t seconds 设定在几秒钟之后进行关机程序
    -k 并不会真的关机,只是将警告讯息传送给所有使用者
    -r 关机后重新开机
    -h 关机后停机
    -n 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
    -c 取消目前已经进行中的关机动作
    -f 关机时,不做 fsck 动作(检查 Linux 档系统)
    -F 关机时,强迫进行 fsck 动作
    time 设定关机的时间
    message 传送给所有使用者的警告讯息

    语法格式

    1
    # shutdown [-t seconds] [-rkhncfF] time [message]

    立即关机

    1
    # shutdown -h now

    指定 10 分钟后关机

    1
    # shutdown -h 10

    重新启动服务器

    1
    # shutdown -r now

  • tune2fs 调整“ext2/ext3”文件系统中的可该参数

    参数 注释
    -c 调整最大加载次数
    -C 设置文件系统已经被
    -e 设置内核代码检测到错误时的
    -f 强制执行修改,即使发生错误
    -i 设置相邻两次文件系统检查
    -j 为“ext2”文件系统添加日志功能,将
    -l 显示文件超级块内容
    -L 设置文件系统卷标
    -m 显示文件保留块
    -M 设置文件系统最后被加
    -o 设置或清除文件系统加载的特性
    -O 设置或清除文件系统的特性或选项
    -r 设置文件系统保留块的大小
    -T 设置文件系统上次被检查
    -u 设置可以使用文件系统保留块
    -U 设置文件系统的UUID

    语法格式

    1
    # tune2fs(选项)(参数)

    设置强制检查前文件系统可以挂载的次数

    1
    # tune2fs -c 30 /dev/hda1

    关闭强制检查挂载次数限制

    1
    # tune2fs -c -l /dev/hda1

    10天后检查

    1
    # tune2fs -i 10 /dev/hda1

    禁用时间检查

    1
    # tune2fs -i 0 /dev/hda1  

    添加日志功能,将ext2转换成ext3文件系统

    1
    # tune2fs -j /dev/hda1

    调整/dev/hda1分区的保留空间为40000个磁盘块

    1
    # tune2fs -r 40000 /dev/hda1

  • fdisk 创建和维护分区表的程序

    必要参数 注释
    -l 列出素所有分区表
    -u 与”-l”搭配使用,显示分区数目
    选择参数 注释
    -s<分区编号> 指定分区
    -v 版本信息
    菜单操作说明
    m 显示菜单和帮助信息
    a 活动分区标记/引导分区
    d 删除分区
    l 显示分区类型
    n 新建分区
    p 显示分区信息
    q 退出不保存
    t 设置分区号
    v 进行分区检查
    w 保存修改
    x 扩展应用,高级功能

    语法格式

    1
    # fdisk [必要参数][选择参数]

    显示当前分区情况

    1
    # fdisk -l

    显示SCSI硬盘的每个分区情况

    1
    # fdisk -lu   

  • 硬件时钟访问工具

    参数 注释
    –adjust hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用–adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟
    –debug 显示hwclock执行时详细的信息
    –directisa hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟
    –hctosys 将系统时钟调整为与目前的硬件时钟一致
    –set –date=<日期与时间> 设定硬件时钟
    –show 显示硬件时钟的时间与日期
    –systohc 将硬件时钟调整为与目前的系统时钟一致
    –test 仅测试程序,而不会实际更改硬件时钟
    –utc 若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作

    语法格式

    1
    # hwclock(选项)

    设置硬件时间要依赖于操作系统时间

    1
    2
    # hwclock –systohc
    # hwclock --systohc –-utc

    hwclock无参数可以查看当前的硬件日期和时间

    1
    # hwclock

  • swapon 激活Linux系统中交换空间

    参数 注释
    -s 显示简短的装置讯息
    -a 自动启动所有SWAP装置
    -p 设定优先权,你可以在0到32767中间选一个数字给他。或是在 /etc/fstab 里面加上 pri=[value] ([value]就是0~32767中间一个数字),然后你就可以很方便的直接使用 swapon -a 来启动他们,而且有优先权设定。

    语法格式

    1
    2
    3
    # /sbin/swapon -a [-v]
    # /sbin/swapon [-v] [-p priority] specialfile ...
    # /sbin/swapon [-s]

  • swapoff 关闭系统交换区

    参数 注释
    -a 将/etc/fstab文件中所有设置为swap的设备关闭

    语法格式

    1
    # swapoff [设备]

    关闭交换分区

    1
    # swapoff /dev/sda2

  • dhclient 动态获取或释放IP地址

    参数 注释
    0 指定dhcp客户端监听的端口号
    -d 总是以前台方式运行程序
    -q 安静模式,不打印任何错误的提示信息
    -r 释放ip地址

    语法格式

    1
    # dhclient(选项)(参数)

    释放IP

    1
    # dhclient -r

    获取IP

    1
    # dhclient

  • fsck 检查与修复 Linux 档案系统

    参数 注释
    filesys device 名称(eg./dev/sda1),mount 点 (eg. / 或 /usr)
    -t 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
    -s 依序一个一个地执行 fsck 的指令来检查
    -A 对/etc/fstab 中所有列出来的 partition 做检查
    -C 显示完整的检查进度
    -d 列印 e2fsck 的 debug 结果
    -p 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
    -R 同时有 -A 条件时,省略 / 不检查
    -V 详细显示模式
    -a 如果检查有错则自动修复
    -r 如果检查有错则由使用者回答是否修复

    语法格式

    1
    # fsck [-sACVRP] [-t fstype] [--] [fsck-options] filesys [...]

    检查 msdos 档案系统的 /dev/hda5 是否正常,如果有异常便自动修复

    1
    # fsck -t msdos -a /dev/hda5

  • fsck.ext4 只针对ext4型文件系统进行检测

    参数 注释
    -a 非互交模式,自动修复
    -c 检查是否存在有损坏的区块。
    -C<反叙述器> fsck.ext3命令会把全部的执行过程,都交由其逆向叙述,便于监控程序
    -d 详细显示命令执行过程
    -f 强制进行检查
    -F 检查文件系统之前,先清理该保存设备块区内的数据
    -l<损坏区块文件> 把文件中所列出的损坏区块,加入标记
    -L<损坏区块文件> 清除所有损坏标志,重新标记
    -n 非交互模式,把欲检查的文件系统设成只读
    -P<数字> 设置fsck.ext2命令所能处理的inode大小为多少
    -r 交互模式
    -R 忽略目录
    -s 顺序检查
    -S 效果和指定“-s”参数类似
    -t 显示fsck.ext2命令的时序信息。
    -v 显示详细的处理过程
    -y 关闭互动模式
    -b<分区第一个磁区地址> 指定分区的第一个磁区的起始地址/SuperBlock
    -B<区块大小> 设置该分区每个区块的大小
    -I 设置欲检查的文件系统,其inode缓冲区的区块数目
    -V 显示版本信息

    语法格式

    1
    # fsck.ext4[必要参数][选择参数][设备代号]

    检查ext4 类型的分区/dev/sda2

    1
    # fsck.ext4 -ft /dev/sda2

  • ifconfig 显示或设置网络设备

    参数 注释
    add<地址> 设置网络设备IPv6的IP地址。
    del<地址> 删除网络设备IPv6的IP地址。
    down 关闭指定的网络设备。
    <hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
    io_addr<I/O地址> 设置网络设备的I/O地址。
    irq<IRQ地址> 设置网络设备的IRQ。
    media<网络媒介类型> 设置网络设备的媒介类型。
    mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
    metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
    mtu<字节> 设置网络设备的MTU。
    netmask<子网掩码> 设置网络设备的子网掩码。
    tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
    up 启动指定的网络设备。
    -broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
    -pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
    -promisc 关闭或启动指定网络设备的promiscuous模式。
    [IP地址] 指定网络设备的IP地址。
    [网络设备] 指定网络设备的名称。

    语法格式

    1
    # ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<I/O地址>][irq<IRQ地址>][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]

    显示网络设备信息

    1
    # ifconfig 

    启动关闭指定网卡

    1
    2
    # ifconfig eth0 down
    # ifconfig eth0 up

    为网卡配置和删除IPv6地址

    1
    2
    # ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 
    # ifconfig eth0 del 33ffe:3240:800:1005::2/ 64

    修改eth0 MAC地址

    1
    # ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

    给eth0网卡配置IP地址

    1
    # ifconfig eth0 192.168.1.56 

    启用和关闭ARP协议

    1
    2
    # ifconfig eth0 arp  
    # ifconfig eth0 -arp

    设置能通过的最大数据包大小为 1500 bytes

    1
    # ifconfig eth0 mtu 1500 

  • ip 显示或设置网络设备

    参数 注释
    -V 显示命令的版本信息
    -s 输出更详细的信息
    -f 强制使用指定的协议族
    -4 指定使用的网络层协议是IPv4协议
    -6 指定使用的网络层协议是IPv6协议
    -0 输出信息每条记录输出一行,即使内容较多也不换行显示
    -r 显示主机时,不使用IP地址,而使用主机的域名
    常用对象取值
    link 网络设备
    address 设备上的协议(IP或IPv6)地址
    addrlabel 协议地址选择的标签配置
    route 路由表条目
    rule 路由策略数据库中的规则

    语法格式

    1
    # ip [OPTIONS] OBJECT {COMMAND | help}

    显示网络接口信息

    1
    # ip link show 

    开启网卡、关闭网卡

    1
    2
    # ip link set eth0 up 
    # ip link set eth0 down

    开启、关闭网卡的混合模式

    1
    2
    # ip link set eth0 promisc on   
    # ip link set eth0 promisc offi

    设置网卡队列长度1200

    1
    # ip link set eth0 txqueuelen 1200

    设置网卡最大传输单元1400

    1
    # ip link set eth0 mtu 1400

    显示网卡IP信息

    1
    # ip addr show

    设置eth0网卡IP地址192.168.0.1,和删除eth0网卡IP地址

    1
    2
    #ip addr add 192.168.0.1/24 dev eth0 
    #ip addr del 192.168.0.1/24 dev eth0

    显示系统路由

    1
    # ip route show

    设置系统默认路由192.168.1.254

    1
    # ip route add default via 192.168.1.254

    查看路由信息

    1
    # ip route list

    删除默认路由

    1
    # ip route del default

    删除路由

    1
    # ip route delete 192.168.1.0/24 dev eth0

    用 ip 命令显示网络设备详细的运行状态

    1
    # ip -s link list

    显示邻居表

    1
    # ip neigh list

    获取主机所有网络接口

    1
    # ip link | grep -E '^[0-9]' | awk -F: '{print $2}'

  • mke2fs 建立ext2文件系统

    参数 注释
    -b<区块大小> 指定区块大小,单位为字节
    -c 检查是否有损坏的区块
    -f<不连续区段大小> 指定不连续区段的大小,单位为字节
    -F 不管指定的设备为何,强制执行mke2fs
    -i<字节> 指定”字节/inode”的比例
    -N<inode数> 指定要建立的inode数目
    -l<文件> 从指定的文件中,读取文件西中损坏区块的信息
    -L<标签> 设置文件系统的标签名称
    -m<百分比值> 指定给管理员保留区块的比例,预设为5%
    -M 记录最后一次挂入的目录
    -q 执行时不显示任何信息
    -r 指定要建立的ext2文件系统版本
    -R=<区块数> 设置磁盘阵列参数
    -S 仅写入superblock与group descriptors,而不更改inode able inode bitmap以及block bitmap
    -v 执行时显示详细信息
    -V 显示版本信息

    语法格式

    1
    # mke2fs [-cFMqrSvV][-b <区块大小>][-f <不连续区段大小>][-i <字节>][-N <inode数>][-l <文件>][-L <标签>][-m <百分比值>][-R=<区块数>][ 设备名称][区块数]

    把该设备格式化成ext2文件系统

    1
    # mke2fs /dev/sda6

  • poweroff 关闭计算器并切断电源

    参数 注释
    -n 在关机前不做将记忆体资料写回硬盘的动作
    -w 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
    -d 不把记录写到 /var/log/wtmp 文件里
    -i 在关机之前先把所有网络相关的装置先停止
    -p 关闭操作系统之前将系统中所有的硬件设置为备用模式

    语法格式

    1
    # poweroff [-n] [-w] [-d] [-f] [-i] [-h]

    关闭系统

    1
    # poweroff

  • iptables Linux上常用的防火墙软件,是netfilter项目的一部分

    参数 注释
    -t<表> 指定要操纵的表
    -A 向规则链中添加条目
    -D 从规则链中删除条目
    -i 向规则链中插入条目
    -R 替换规则链中的条目
    -L 显示规则链中已有的条目
    -F 清楚规则链中已有的条目
    -Z 清空规则链中的数据包计算器和字节计数器
    -N 创建新的用户自定义规则链
    -P 定义规则链中的默认目标
    -h 显示帮助信息
    -p 指定要匹配的数据包协议类型
    -s 指定要匹配的数据包源ip地址
    -j<目标> 指定要跳转的目标
    -i<网络接口> 指定数据包进入本机的网络接口
    -o<网络接口> 指定数据包要离开本机所使用的网络接口

    语法格式

    1
    # iptables(选项)(参数)

    iptables命令选项输入顺序

    1
    # iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
  • 表名包括:
    • raw:高级功能,如:网址过滤。
    • mangle:数据包修改(QOS),用于实现服务质量。
    • net:地址转换,用于网关路由器。
    • filter:包过滤,用于防火墙规则。
  • 规则链名包括:
    • INPUT链:处理输入数据包。
    • OUTPUT链:处理输出数据包。
    • PORWARD链:处理转发数据包。
    • PREROUTING链:用于目标地址转换(DNAT)。
    • POSTOUTING链:用于源地址转换(SNAT)。
  • 动作包括:
    • accept:接收数据包。
    • DROP:丢弃数据包。
    • REDIRECT:重定向、映射、透明代理。
    • SNAT:源地址转换。
    • DNAT:目标地址转换。
    • MASQUERADE:IP伪装(NAT),用于ADSL。
    • LOG:日志记录。

      清除已有iptables规则

      1
      2
      3
      # iptables -F
      # iptables -X
      # iptables -Z

      查看已添加的iptables规则

      1
      # iptables -L -n -v

      将所有iptables以序号标记显示

      1
      # iptables -L -n --line-numbers

      比如要删除INPUT里序号为8的规则

      1
      # iptables -D INPUT 8

  • mkfs.ext3/mkfs.ext4同理一样

    要使用一块新的硬盘,必须将它格式化建立合适的文件系统(linux:ext2,ext3等,windows:ntsf,fat32),并挂载到相应的目录下才可以使用。

    比如有一块新硬盘/dev/sda:

    1
    2
    3
    # mkfs.ext3 /dev/sda    提示按'y'
    # mkdir /data 建立挂载目录
    # mount /dev/sda /data 把/dev/sda这个盘挂载到/data目录下

  • reboot 重新启动计算机

    参数 注释
    -n 在重开机前不做将记忆体资料写回硬盘的动作
    -w 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
    -d 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
    -f 强迫重开机,不呼叫 shutdown 这个指令
    -i 在重开机之前先把所有网络相关的装置先停止

    语法格式

    1
    # reboot [-n] [-w] [-d] [-f] [-i]

    重启

    1
    # reboot

  • sysctl 在内核运行时动态地修改内核的运行参数

    参数 注释
    -n 打印值时不打印关键字
    -e 忽略未知关键字错误
    -N 仅打印名称
    -w 当改变sysctl设置时使用此项
    -p 从配置文件“/etc/sysctl.conf”加载内核参数设置
    -a 打印当前所有可用的内核参数变量和值
    -A 以表格方式打印当前所有可用的内核参数变量和值

    语法格式

    1
    # sysctl(选项)(参数)

    查看所有可读变量

    1
    # sysctl -a

    读一个指定的变量,例如kern.maxproc:

    1
    # sysctl kern.maxproc kern.maxproc: 1044

    置一个指定的变量,直接用variable=value语法:

    1
    2
    # sysctl kern.maxfiles=5000
    # kern.maxfiles: 2088 -> 5000

  • mkswap 设置交换区,可将磁盘分区或文件设为Linux的交换区

    参数 注释
    -c 建立交换区前,先检查是否有损坏的区块。
    -f 在SPARC电脑上建立交换区时,要加上此参数。
    -v0 建立旧式交换区,此为预设值。
    -v1 建立新式交换区。
    [交换区大小] 指定交换区的大小,单位为1024字节。

    语法格式

    1
    # mkswap [-cf][-v0][-v1][设备名称或文件][交换区大小]

    查看当前的swap空间(file(s)/partition(s))

    1
    2
    # swapon -s
    # cat /proc/swaps

    添加一个交换分区步骤

    1
    2
    3
    4
    5
    6
    使用fdisk来创建交换分区(假设 /dev/sdb2 是创建的交换分区),使用 mkswap 命令来设置交换分区:
    # mkswap /dev/sdb2
    启用交换分区:
    # swapon /dev/sdb2
    写入/etc/fstab,以便在引导时启用:
    # /dev/sdb2 swap swap defaults 0 0

    添加一个交换文件步骤

    1
    2
    3
    4
    5
    6
    7
    8
    9
    创建大小为512M的交换文件:
    # dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
    使用mkswap命令来设置交换文件:
    # mkswap /swapfile1
    启用交换分区:
    # swapon /swapfile1
    写入/etc/fstab,以便在引导时启用:
    # /swapfile1 swap swap defaults 0 0
    新添了交换分区并启用它之后,查看cat /proc/swaps或free命令的输出来确保交换分区已被启用了。

    删除或禁用交换空间

    1
    # swapoff /dev/sdb2

  • route 显示和操作IP路由表

    说明:
    要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是 为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路由。要注意的是,直接在命令行下执行route命令

    选项 说明
    -A 设置地址类型
    -C 打印将Linux核心的路由缓存
    -v 详细信息模式
    -n 不执行DNS反向查找,直接显示数字形式的IP地址
    -e netstat格式显示路由表
    -net 到一个网络的路由表
    -host 到一个主机的路由表
    参数 注释
    Add 增加指定的路由记录
    Del 删除指定的路由记录
    Target 目的网络或目的主机
    gw 设置默认网关
    mss 设置TCP的最大区块长度(MSS),单位MB
    window 指定通过路由表的TCP连接的TCP窗口大小
    dev 路由记录所表示的网络接口

    语法格式

    1
    # route(选项)(参数)

    显示当前路由

    1
    2
    # route
    # route -n
  • 其中Flags为路由标志,标记当前网络节点的状态,
    Flags标志说明:
    • U Up表示此路由当前为启动状态。
    • H Host,表示此网关为一主机。
    • G Gateway,表示此网关为一路由器。
    • R Reinstate Route,使用动态路由重新初始化的路由。
    • D Dynamically,此路由是动态性地写入。
    • M Modified,此路由是由路由守护程序或导向器动态修改。
    • ! 表示此路由当前为关闭状态。

      添加设置网关,增加一条到达244.0.0.0的路由

      1
      # route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

      增加一条屏蔽的路由,目的地址为224.x.x.x将被拒绝

      1
      # route add -net 224.0.0.0 netmask 240.0.0.0 reject

      删除路由记录

      1
      2
      # route del -net 224.0.0.0 netmask 240.0.0.0
      # route del -net 224.0.0.0 netmask 240.0.0.0 reject

      删除和添加设置默认网关

      1
      2
      # route del default gw 192.168.120.240
      # route add default gw 192.168.120.240

  • MAKEDEV 新增 /dev/ 下的装置档案,多数分区已经将所有的档案都产生,一般用不上这个命令

    参数 注释
    -v 显示出执行的每一个动作
    -n 并不做真正的更新, 只是显示一下它的执行效果
    -d 删除设备文件

    语法格式

    1
    2
    3
    # MAKEDEV -V
    # MAKEDEV [ -n ] [ -v ] update
    # MAKEDEV [ -n ] [ -v ] [ -d ] device ...

    显示出执行的每一个动作

    1
    # ./MAKEDEV -v update

    删除设备

    1
    # ./MAKEDEV -d device

USR_BIN


  • bc 任意精度计算器语言,需要安装:yum install bc

    参数 注释
    -i 强制进入交互式模式
    -l 定义使用的标准数学库
    -w 对POSIX bc的扩展给出警告信息
    -q 不打印正常的GNU bc环境信息
    -v 显示指令版本信息
    -h 显示指令的帮助信息
  • 常用的运算符号:
    • [ + ] 加法
    • [ - ] 减法
    • [ * ] 乘法
    • [ / ] 除法
    • [ ^ ] 指数
    • [ % ] 余数

      语法格式

      1
      # bc(选项)(参数)

      打开计算器并且输入运算,输入 quit 退出

      1
      # bc

      scale=2 设小数位,2 代表保留两位

      1
      2
      # echo 'scale=2; (2.777 - 1.4744)/1' | bc
      输出:1.30

      bc 除了 scale 来设定小数位之外,还有 ibase 和 obase 来其它进制的运算

      1
      2
      # echo "ibase=2;111" |bc
      输出:7

      计算平方和平方根

      1
      2
      3
      4
      # echo "10^10" | bc 
      输出:10000000000
      # echo "sqrt(100)" | bc
      输出:10

  • bzip2 是.bz2文件的压缩程序

    参数 注释
    -c或–stdout 将压缩与解压缩的结果送到标准输出。
    -d或–decompress 执行解压缩。
    -f或–force bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,使用此参数。
    -k或–keep bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。
    -s或–small 降低程序执行时内存的使用量。
    -t或–test 测试.bz2压缩文件的完整性。
    -v或–verbose 压缩或解压缩文件时,显示详细的信息。
    -z或–compress 强制执行压缩。
    –repetitive-best 若文件中有重复出现的资料时,可利用此参数提高压缩效果。
    –repetitive-fast 若文件中有重复出现的资料时,可利用此参数加快执行速度。
    -压缩等级 压缩时的区块大小。

    语法格式

    1
    # bzip2 [-cdfhkLstvVz][--repetitive-best][--repetitive-fast][- 压缩等级][要压缩的文件]

    解压test.bz2文件显示详细处理信息

    1
    # bzip2 -v test.bz2

    压缩文件

    1
    # bzip2 -c a.sh b.sh c.sh

    检查test.bz2文件完整性

    1
    # bzip2 -t test.bz2

  • chage 修改帐号和密码的有效期限

    参数 注释
    -m 密码可更改的最小天数。为零时代表任何时候都可以更改密码
    -M 密码保持有效的最大天数
    -w 用户密码到期前,提前收到警告信息的天数
    -E 帐号到期的日期过了这天,此帐号将不可用
    -d 上一次更改的日期
    -i 停滞时期如果一个密码已过期这些天,那么此帐号将不可用
    -l 例出当前的设置由非特权用户来确定他们的密码或帐号何时过期

    语法格式

    1
    # chage [选项] 用户名

    编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准

    1
    2
    3
    4
    PASS_MAX_DAYS   99999
    PASS_MIN_DAYS 0
    PASS_MIN_LEN 5
    PASS_WARN_AGE 7

    root帐户密码策略信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # chage -l root
    输出:
    最近一次密码修改时间 3 12, 2013
    密码过期时间 :从不
    密码失效时间 :从不
    帐户过期时间 :从不
    两次改变密码之间相距的最小天数 :0
    两次改变密码之间相距的最大天数 :99999
    在密码过期之前警告的天数 :7

    root帐户密码过期时间

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # chage -M 60 root
    # chage -l root
    输出:
    最近一次密码修改时间 3 12, 2013
    密码过期时间 :从不
    密码失效时间 :从不
    帐户过期时间 :从不
    两次改变密码之间相距的最小天数 :0
    两次改变密码之间相距的最大天数 :60
    在密码过期之前警告的天数 :7

    root帐户设置密码失效时间

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # chage -I 5 root
    # chage -l root
    输出:
    最近一次密码修改时间 3 12, 2013
    密码过期时间 :从不
    密码失效时间 :会显示向后推5天的日期
    帐户过期时间 :从不
    两次改变密码之间相距的最小天数 :0
    两次改变密码之间相距的最大天数 :60
    在密码过期之前警告的天数 :7

  • du 显示目录或文件的大小

    参数 注释
    -a或-all 显示目录中个别文件的大小。
    -b或-bytes 显示目录或文件大小时,以byte为单位。
    -c或–total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
    -D或–dereference-args 显示指定符号连接的源文件大小。
    -h或–human-readable 以K,M,G为单位,提高信息的可读性。
    -H或–si 与-h参数相同,但是K,M,G是以1000为换算单位。
    -k或–kilobytes 以1024 bytes为单位。
    -l或–count-links 重复计算硬件连接的文件。
    -L<符号连接>或–dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
    -m或–megabytes 以1MB为单位。
    -s或–summarize 仅显示总计。
    -S或–separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
    -x或–one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
    -X<文件>或–exclude-from=<文件> 在<文件>指定目录或文件。
    –exclude=<目录或文件> 略过指定的目录或文件。
    –max-depth=<目录层数> 超过指定层数的目录后,予以忽略。

    语法格式

    1
    # du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件]

    显示当前目录或者文件所占空间

    1
    # du

    显示test.log 所占空间

    1
    # du test.log 

    方便阅读的格式显示test目录所占空间情况

    1
    # du -h test

  • diff 比较文件的差异

    参数 注释
    -<行数> 指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
    -a或–text diff预设只会逐行比较文本文件。
    -b或–ignore-space-change 不检查空格字符的不同。

    语法格式

    1
    # diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]

    比较test1.log test2.log 文件的差异

    1
    # diff test1.log test2.log 

    并排格式输出test1.log test2.log

    1
    # diff test1.log test2.log  -y -W 50
    • 说明:
      • “|”表示前后2个文件内容有不同
      • “<”表示后面文件比前面文件少了1行内容
      • “>”表示后面文件比前面文件多了1行内容

  • dig 查询单个主机的信息

    参数 注释
    -b: 当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求;
    -f<文件名称>: 指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息;
    -P: 指定域名服务器所使用端口号;
    -t<类型>: 指定要查询的DNS数据类型;
    -x: 执行逆向域名查询;

    语法格式

    1
    2
    3
    # dig [@server] [-b address] [-c class] [-f filename] [-k filename] [ -n ][-p port#] [-t type] [-x addr] [-y name:key] [name] [type] [class] [queryopt...]
    # dig [-h]
    # dig [global-queryopt...] [query...]

    最简单的方法

    1
    # dig baidu.com

    查找yahoo.com的A记录

    1
    # dig yahoo.com A +noall +answer

    查找yahoo.com MX记录的列表

    1
    # dig yahoo.com MX +noall +answer

    查找yahoo.com的权威DNS

    1
    # dig yahoo.com NS +noall +answer

    查找yahoo.com的所有的记录

    1
    # dig yahoo.com ANY +noall +answer

    在现在这种IPv4和IPV6混用的情况下,你也可以使用AAAA的选项查询主机的IPv6 AAAA记录

    1
    # dig www.baidu.com AAAA +short

    使用-x 查询反向解析

    1
    # dig -x 220.181.111.86

    查询一个不同的命名服务器

    1
    # dig @ns1.google.com www.google.com

    跟踪dig的查询路径

    1
    # dig baidu.com +trace

    获取SOA记录

    1
    # dig baidu.com +nssearch

    解释TTL数值

    1
    # dig +nocmd gmail.com MX +noall +answer

    使用@指定服务器 使用-p指定非标准端口 使用-t来指定查询类型

    1
    # dig sohu.com @202.102.134.68 -p 53 -t MX

  • file 辨识文件类型

    参数 注释
    -b 列出辨识结果时,不显示文件名称。
    -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
    -f<名称文件> 指定名称文件,其内容有一个或多个文件名称时,让file依序辨
    -L 直接显示符号连接所指向的文件的类别。
    -m<魔法数字文件> 指定魔法数字文件。
    -v 显示版本信息。
    -z 尝试去解读压缩文件的内容。
    [文件或目录…] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

    语法格式

    1
    # file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]

    显示test.log的文件类型

    1
    # file test.log

    显示test.log的文件类型,不显示文件名称

    1
    # file -b test.log

    显示test.log的文件类型,显示MIME类别

    1
    # file -b test.log

    显示test链接的文件类型

    1
    # file -L /var/test

  • groups

    语法格式

    1
    # groups(选项)(参数)

    显示root用户所属的组

    1
    # groups root

  • passwd 更改使用者的密码

    参数 注释
    -d 删除密码
    -f 强迫用户下次登录时必须修改口令
    -w 口令要到期提前警告的天数
    -k 更新只能发送在过期之后
    -l 停止账号使用
    -S 显示密码信息
    -u 启用已被停止的账户
    -x 指定口令最长存活期
    -g 修改群组密码
    指定口令最短存活期
    -i 口令过期后多少天停用账户

    语法格式

    1
    # passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]

    修改root密码

    1
    # passwd root

    显示root密码信息

    1
    # passwd -S runoob

    删除root账户密码

    1
    # passwd -d root

  • ssh 是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器

    • 说明:
      它的目的是替换 rlogin 和 rsh, 同时在不安全的网络之上, 两个互不 信任的主机之间, 提供加密的, 安全的通信连接. X11 连接和任意 TCP/IP 端口均可以通过此安全通道转发(forward).当用户通过 连接并登录主机 hostname 后, 根据所用的协议版本, 用户必须通过下述方法之一向远程主机证明他/她的身份
    参数 注释
    -1 强制使用ssh协议版本1
    -2 强制使用ssh协议版本2
    -4 强制使用IPv4地址
    -6 强制使用IPv6地址
    -A 开启认证代理连接转发功能
    -a 关闭认证代理连接转发功能
    -b 使用本机指定地址作为对应连接的源ip地址
    -C 请求压缩所有数据
    -F 指定ssh指令的配置文件
    -f 后台执行ssh指令
    -g 允许远程主机连接主机的转发端口
    -i 指定身份文件
    -l 指定连接远程服务器登录用户名
    -N 不执行远程指令
    -o 指定配置选项
    -p 指定远程服务器上的端口
    -q 静默模式
    -X 开启X11转发功能
    -x 关闭X11转发功能
    -y 开启信任X11转发功能

    语法格式

    1
    # ssh(选项)(参数)

    远程登陆目标服务器192.168.229.33

    1
    # ssh root@192.168.229.33

    远程登陆目标服务器192.168.229.33,通过指定端口8080登录

    1
    # ssh root@192.168.229.33 -p 8080

    远程登陆目标服务器192.168.229.33,通过代理7575登陆

    1
    # ssh -D 7575 root@192.168.229.33

    ssh-keygen 生成密钥[ -t ]密钥的类型[ -C ]用于识别这个密钥的注释

    1
    # ssh-keygen -t rsa -C “any comment can be here” 
    • 电脑端生成ssh key 远程免密登陆:
      • 在电脑生成sshkeys,运行后一路回车生成
        1
        # ssh-keygen.exe
      • 把公共秘钥粘到 Linux端:
        Win端ssh文件默认在c盘用户目录下的.ssh下,
        Linux端ssh文件名为/root/.ssh/authorized_keys,把key粘贴进去
      • 现在就可以通过电脑端远程免密码登陆linux了

  • tty 显示终端机连接标准输入设备的文件名称

    参数 注释
    -s或–silent或–quiet 不显示任何信息,只回传状态代码

    语法格式

    1
    # tty [-s][--help][--version]

    显示当前终端

    1
    # tty

  • w 显示目前登入系统的用户信息

    参数 注释
    -f 开启或关闭显示用户从何处登入系统。
    -h 不显示各栏位的标题信息列。
    -l 使用详细格式列表,此为预设值。
    -s 使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。
    -u 忽略执行程序的名称,以及该程序耗费CPU时间的信息。

    语法格式

    1
    # w [-fhlsuV][用户名称]

    显示当前用户登录信息及执行的命令

    1
    # w

    不显示登录位置

    1
    # w -f

    以精简模式显示

    1
    # w -s

    不显示标题

    1
    # w -h

  • whereis 查找文件

    参数 注释
    -b 只查找二进制文件
    -B<目录> 只在设置的目录下查找二进制文件
    -f 不显示文件名前的路径名称
    -m 只查找说明文件
    -M<目录> 只在设置的目录下查找说明文件
    -s 只查找原始代码文件
    -S<目录> 只在设置的目录下查找原始代码文件
    -u 查找不包含指定类型的文件

    语法格式

    1
    # whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]

    使用指令”whereis”查看指令”bash”的位置

    1
    # whereis bash 

    显示bash 命令的二进制程序

    1
    # whereis -b bash

    显示bash 命令的帮助文件

    1
    # whereis -m bash

  • clear 清除屏幕

    清屏,快捷键(ctrl+l)

    1
    # clear

  • less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页

    参数 注释
    -b <缓冲区大小> 设置缓冲区的大小
    -e 当文件显示结束后,自动离开
    -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
    -g 只标志最后搜索的关键词
    -i 忽略搜索时的大小写
    -m 显示类似more命令的百分比
    -N 显示每行的行号
    -o <文件名> 将less 输出的内容在指定文件中保存起来
    -Q 不使用警告音
    -s 显示连续空行为一行
    -S 行过长时间将超出部分舍弃
    -x <数字> 将”tab”键显示为规定的数字空格
    /字符串 向下搜索”字符串”的功能
    ?字符串 向上搜索”字符串”的功能
    n 重复前一个搜索(与 / 或 ? 有关)
    N 反向重复前一个搜索(与 / 或 ? 有关)
    b 向上翻一页
    d 向后翻半页
    h 显示帮助界面
    Q 退出less 命令
    u 向前滚动半页
    y 向前滚动一行
    空格键 滚动一页
    回车键 滚动一行
    [pagedown] 向下翻动一页
    [pageup] 向上翻动一页
    • 全屏导航
      • ctrl + F : 向前移动一屏
      • ctrl + B :向后移动一屏
      • ctrl + D : 向前移动半屏
      • ctrl + U : 向后移动半屏
    • 单行导航
      • j : 向前移动一行
      • k :向后移动一行
    • 其它导航
      • G : 移动到最后一行
      • g : 移动到第一行
      • q / ZZ : 退出 less 命令
    • 其它有用的命令
      • v : 使用配置的编辑器编辑当前文件
      • h : 显示 less 的帮助文档
      • &pattern : 仅显示匹配模式的行,而不是整个文件
    • 标记导航
      当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:
      • ma : 使用 a 标记文本的当前位置
      • ‘a : 导航到标记 a 处

    语法格式

    1
    # less [参数] 文件 

    查看test文件

    1
    # less test

    ps查看进程信息并通过less分页显示

    1
    # ps -ef |less

    查看命令历史使用记录并通过less分页显示

    1
    # history | less

    浏览多个文件,输入 :n后,切换到 test2.log,输入 :p 后,切换到test.log

    1
    # less test.log test2.log

  • ssh-add 专用密钥添加到ssh-agent的高速缓存中。该命令位置在:/usr/bin/ssh-add

    参数 注释
    -D 删除ssh-agent中的所有密钥
    -d 从ssh-agent中的删除密钥
    -e pkcs11 删除PKCS#11共享库pkcs1提供的钥匙
    -s pkcs11 添加PKCS#11共享库pkcs1提供的钥匙
    -L 显示ssh-agent中的公钥
    -l 显示ssh-agent中的密钥
    -t life 对加载的密钥设置超时时间,超时ssh-agent将自动卸载密钥
    -X 对ssh-agent进行解锁
    -x 对ssh-agent进行加锁

    语法格式

    1
    2
    3
    # ssh-add [-cDdLlXx] [-t life] [file ...]
    # ssh-add -s pkcs11
    # ssh-add -e pkcs11

    把专用密钥添加到 ssh-agent 的高速缓存中

    1
    # ssh-add ~/.ssh/id_dsa

    从ssh-agent中删除密钥

    1
    # ssh-add -d ~/.ssh/id_xxx.pub

    查看ssh-agent中的密钥

    1
    # ssh-add -l

  • wc 厕所 计算字数

    参数 注释
    -c或–bytes或–chars 只显示Bytes数
    -l或–lines 显示行数
    -w或–words 只显示字数

    语法格式

    1
    # wc [-clw][--help][--version][文件...]

    统计testfile的行数,单词数,字节数

    1
    # wc testfile 

    统计多个文件

    1
    # wc testfile testfile2 testfile3

  • whoami 显示自身用户名称

    显示用户名

    1
    # whoami

  • expr 表达式计算工具,使用它完成表达式的求值操作

    • expr的常用运算符:
      • 加法运算:[ + ]
      • 减法运算:[ - ]
      • 乘法运算:[ * ]
      • 除法运算:[ / ]
      • 取余运算:[ % ]

        语法格式

        1
        # expr(选项)(参数)

        计算字串长度

        1
        2
        # expr length “this is a test”
        输出:14

        抓取字串

        1
        2
        # expr substr “this is a test” 3 5
        输出:is is

        抓取第一个字符数字串出现的位置

        1
        2
        # expr index "sarasara"  a
        输出:2

  • free显示内存状态

    参数 注释
    -b 以Byte为单位显示内存使用情况。
    -k 以KB为单位显示内存使用情况。
    -m 以MB为单位显示内存使用情况。
    -o 不显示缓冲区调节列。
    -s<间隔秒数> 持续观察内存使用状况。
    -t 显示内存总和列。
    -h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:B = bytes;K = kilos;M = megas;G = gigas;T = teras;

    语法格式

    1
    # free [-bkmotV][-s <间隔秒数>]

    显示内存使用情况

    1
    # free

    以总和的形式查询内存的使用信息

    1
    # free -t 

    周期性的查询内存使用信息,每10s 执行一次命令

    1
    # free -s 10

  • id 显示用户的ID,以及所属群组的ID

    参数 注释
    -g或–group 显示用户所属群组的ID
    -G或–groups 显示用户所属附加群组的ID
    -n或–name 显示用户,所属群组或附加群组的名称
    -r或–real 显示实际ID
    -u或–user 显示用户ID

    语法格式

    1
    # id [-gGnru][--help][--version][用户名称]

    显示当前用户ID

    1
    # id

    显示用户群组的ID

    1
    # id -g

    显示指定用户test的信息

    1
    # id test

  • scp Linux 之间复制文件和目录

    参数 注释
    -1 强制scp命令使用协议ssh1
    -2 强制scp命令使用协议ssh2
    -4 强制scp命令只使用IPv4寻址
    -6 强制scp命令只使用IPv6寻址
    -B 使用批处理模式(传输过程中不询问传输口令或短语)
    -C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
    -p 保留原文件的修改时间,访问时间和访问权限
    -q 不显示传输进度条
    -r 递归复制整个目录
    -v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题
    -c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh
    -F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh
    -i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh
    -l limit 限定用户所能使用的带宽,以Kbit/s为单位
    -o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式
    -P port 注意是大写的P, port是指定数据传输用到的端口号
    -S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项

    语法格式

    1
    # scp [可选参数] file_source file_target 

    从本地复制文件到远程

    1
    # scp /home/space/music/1.mp3 root@192.168.229.33:/home/root/others/music 

    从本地复制目录到远程

    1
    # scp -r /home/space/music/ root@192.168.229.33:/home/root/others/

    从远程复制到本地,反过来即可

    1
    # scp root@192.168.229.33:/home/root/others/music /home/space/music/1.mp3 

    如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,scp 命令使用端口号 4588

    1
    #   scp -P 4588 root@192.168.229.33:/usr/local/sin.sh /home/administrator

  • screen 多重视窗管理程序,最多支持无限个,但是键盘切换只有1~9,一般就够用了

    参数 注释
    -A 将所有的视窗都调整为目前终端机的大小。
    -d<作业名称> 将指定的screen作业离线。
    -h<行数> 指定视窗的缓冲区行数。
    -m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
    -r<作业名称> 恢复离线的screen作业。
    -R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
    -s 指定建立新视窗时,所要执行的shell。
    -S<作业名称> 指定screen作业的名称。
    -x 恢复之前离线的screen作业。
    -ls或–list 显示目前所有的screen作业。
    -wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。

    语法格式

    1
    # screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s <shell>][-S <作业名称>]

    创建 screen 终端

    1
    # screen 

    创建 screen 终端 ,并执行 vi命令

    1
    # screen vi ~/main.c  

    离开 screen 终端,在 screen 终端 下 按下 Ctrl+a d键


  • seq 产生从某个数到另外一个数之间的所有整数

    参数 注释
    -f, –format=格式 使用printf 样式的浮点格式
    -s, –separator=字符串 使用指定字符串分隔数字(默认使用:\n)
    -w, –equal-width 在列前添加0 使得宽度相同

    语法格式

    1
    # seq [选项]... 首数 增量 尾数
    • -f选项:指定格式

      %后面指定数字的位数 默认是%g,%3g那么数字位数不足部分是空格

      1
      # seq -f"%3g" 9 11

      这样的话数字位数不足部分是0,%前面制定字符串

      1
      # seq -f"str%03g" 9 11
    • -w选项:指定输出数字同宽

      不能和-f一起用,输出是同宽的

      1
      # seq -w 98 101
    • -s选项:指定分隔符(默认是回车)

      指定空格分隔输出

      1
      # seq -s" " -f"str%03g" 9 11

      要指定/t做为分隔符号

      1
      # seq -s"`echo -e "/t"`" 9 11

      指定\n作为分隔符号

      1
      # seq -s"`echo -e "\n"`" 9 11

  • uniq 检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用

    参数 注释
    -c或–count 在每列旁边显示该行重复出现的次数。
    -d或–repeated 仅显示重复出现的行列。
    -f<栏位>或–skip-fields=<栏位> 忽略比较指定的栏位。
    -s<字符位置>或–skip-chars=<字符位置> 忽略比较指定的字符。
    -u或–unique 仅显示出一次的行列。
    -w<字符位置>或–check-chars=<字符位置> 指定要比较的字符。
    [输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;
    [输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。

    语法格式

    1
    # uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]

    删除重复行后打印出test内容

    1
    # uniq test

    检查test并删除文件中重复出现的行,并在行首显示该行重复出现的次数

    1
    # uniq -c test

    当重复的行并不相邻时,uniq 命令是不起作用的,这时我们就可以使用 sort

    1
    # sort  test | uniq

    统计各行在test中出现的次数

    1
    # sort test | uniq -c

    在test中找出重复的行

    1
    # sort test | uniq -d

  • uptime 打印系统总共运行了多长时间和系统的平均负载,可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载

    使用uptime命令查看系统负载

    1
    # uptime

    显示内容说明:

    1
    2
    3
    4
    15:31:30             //系统当前时间
    up 127 days, 3:00 //主机已运行时间,时间越大,说明你的机器越稳定。
    1 user //用户连接数,是总连接数而不是用户数
    load average: 0.00, 0.00, 0.00 // 系统平均负载,统计最近1515分钟的系统平均负载
    • 那么什么是系统平均负载呢? 系统平均负载是指在特定时间间隔内运行队列中的平均进程数。

      如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。

      如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。

  • wget 从指定的URL下载文件

    • 说明:
      wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。
    参数 注释
    -a<日志文件> 在指定的日志文件中记录资料的执行过程
    -A<后缀名> 指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔
    -b 进行后台的方式运行wget
    -B<连接地址> 设置参考的连接地址的基地地址
    -c 继续执行上次终端的任务
    -C<标志> 设置服务器数据块功能标志on为激活,off为关闭,默认值为on
    -d 调试模式运行指令
    -D<域名列表> 设置顺着的域名列表,域名之间用“,”分隔
    -e<指令> 作为文件“.wgetrc”中的一部分执行指定的指令
    -h 显示指令帮助信息
    -i<文件> 从指定文件获取要下载的URL地址
    -l<目录列表> 设置顺着的目录列表,多个目录用“,”分隔
    -L 仅顺着关联的连接
    -r 递归下载方式
    -nc 文件存在时,下载文件不覆盖原有文件
    -nv 下载时只显示更新和出错信息,不显示指令的详细执行过程
    -q 不显示指令执行过程
    -nh 不查询主机名称
    -v 显示详细执行过程
    -V 显示版本信息
    –passive-ftp 使用被动模式PASV连接FTP服务器
    –follow-ftp 从HTML文件中下载FTP连接文件

    语法格式

    1
    # wget(选项)(参数)

    使用wget下载单个文件

    1
    # wget http://www.linux.net/test.zip

    下载并以不同的文件名保存

    1
    # wget -O 123.zip http://www.linux.net/test.zip

    wget限速下载

    1
    # wget --limit-rate=300k http://www.linux.net/test.zip

    使用wget断点续传

    1
    # wget -c  http://www.linux.net/test.zip

    使用wget后台下载,和显示进度

    1
    2
    # wget -b  http://www.linux.net/test.zip
    # tail -f wget-log

    下载多个文件

    1
    2
    3
    4
    5
    6
    # wget -i file.txt
    # cat file.txt
    url1
    url2
    url3
    url4

  • which 查找文件

    参数 注释
    -n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
    -p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
    -w 指定输出时栏位的宽度。

    语法格式

    1
    # which [文件...]

    使用指令”which”查看指令”bash”的绝对路径

    1
    # which bash

  • xargs 给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。

    • 说明:它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。
    参数 注释
    -a file 从文件中读入作为 stdin
    -e flag 注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
    -p 当每次执行一个argument的时候询问一次用户。
    -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
    -t 表示先打印命令,然后再执行。
    -i 或者是-I 这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
    -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
    -s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
    -L num 从标准输入一次读取 num 行送给 command 命令。
    -l 同 -L。
    -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
    -x exit的意思,主要是配合-s使用。
    -P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。

    语法格式

    1
    # somecommand |xargs -item  command

    多行输入单行输出

    1
    # cat test.txt | xargs

    -n 选项多行输出,数值表示一行显示几个词组

    1
    # cat test.txt | xargs -n3

    -d 选项可以自定义一个定界符

    1
    # echo "nameXnameXnameXname" | xargs -dX

    结合 -n 选项使用

    1
    # echo "nameXnameXnameXname" | xargs -dX -n2

  • top 实时显示 process 的动态

    参数 注释
    d 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
    q 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
    c 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
    S 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
    s 安全模式,将交谈式指令取消, 避免潜在的危机
    i 不显示任何闲置 (idle) 或无用 (zombie) 的行程
    n 更新的次数,完成后将会退出 top
    b 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内

    语法格式

    1
    # top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

    显示进程信息

    1
    # top

    显示完整命令

    1
    # top -c

    以批处理模式显示程序信息

    1
    # top -b

    以累积模式显示程序信息

    1
    # top -S

    显示进程信息,表示更新两次后终止更新显示

    1
    # top -n 2

    设置信息更新时间,表示更新周期为3秒

    1
    # top -d 3

    显示指定的进程信息,显示进程号为139的进程信息,CPU、内存占用率等

    1
    # top -p 139

    显示更新十次后退出

    1
    # top -n 10

    使用者将不能利用交谈式指令来对行程下命令

    1
    # top -s

  • tr 转换或删除文件中的字符

    参数 注释
    -c, –complement 反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
    -d, –delete 删除指令字符
    -s, –squeeze-repeats 缩减连续重复的字符成指定的单个字符
    -t, –truncate-set1 削减 SET1 指定范围,使之与 SET2 设定长度相等

    语法格式

    1
    2
    # tr [-cdst][--help][--version][第一字符集][第二字符集]  
    # tr [OPTION]…SET1[SET2]

    将文件test中的小写字母全部转换成大写字母

    1
    # cat test |tr a-z A-Z 

  • md5sum 采用MD5报文摘要算法(128位)计算和检查文件的校验和

    参数 注释
    -b 二进制模式读取文件
    -t或–text 把输入的文件作为文本文件看待
    -c 从指定文件中读取MD5校验和,并进行校验
    –status 验证成功时不输出任何信息
    -w 当校验不正确时给出警告信息

    语法格式

    1
    # md5sum(选项)(参数)

    将文件test生成md5文件

    1
    # md5sum test > test.md5

    检查文件test的md5

    1
    # md5sum test -c test.md5

  • nohup 用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行

    参数 注释
    Command 要执行的命令。
    Arg 一些参数,可以指定输出文件。
    & 让命令在后台执行,终端退出后命令仍旧执行。
    a 显示所有程序
    u 以用户为主的格式来显示
    x 显示所有程序,不区分终端机

    语法格式

    1
    # nohup Command [ Arg … ] [ & ]

    在后台执行 root 目录下的 test.sh 脚本

    1
    # nohup /root/test.sh &

  • nc 设置路由器

    参数 注释
    -g<网关> 设置路由器跃程通信网关,最多可设置8个
    -G<指向器数目> 设置来源路由指向器,其数值为4的倍数
    -i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口
    -l 使用监听模式,管控传入的资料
    -n 直接使用IP地址,而不通过域名服务器
    -o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存
    -p<通信端口> 设置本地主机使用的通信端口
    -r 乱数指定本地与远端主机的通信端口
    -s<来源位址> 设置本地主机送出数据包的IP地址
    -u 使用UDP传输协议
    -v 显示指令执行过程
    -w<超时秒数> 设置等待连线的时间
    -z 使用0输入/输出模式,只在扫描通信端口时使用

    语法格式

    1
    # nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]

    TCP端口扫描,扫描192.168.0.3 的端口 范围是 1-100

    1
    # nc -v -z -w2 192.168.0.3 1-100 

    扫描UDP端口,扫描192.168.0.3 的端口 范围是 1-1000

    1
    # nc -u -z -w2 192.168.0.1 1-1000

    扫描指定端口,扫描192.168.0.1 指定80端口

    1
    # nc -nvv 192.168.0.1 80

  • nslookup 用于查找域名服务器的程序,有两种模式:交互和非交互

    参数 注释
    -sil 不显示任何警告信息

    语法格式

    1
    # nslookup(选项)(参数)

    查询百度的域名

    1
    # nslookup baidu.com

  • head 查看文件的开头部分的内容

    参数 注释
    -q 隐藏文件名
    -v 显示文件名
    -c<数目> 显示的字节数
    -n<行数> 显示的行数

    语法格式

    1
    # head [参数] [文件]

    显示 test 文件的开头 10 行

    1
    # head test

    显示 test 文件的开头 5 行

    1
    # head -n 5 test

    显示test文件前 20 个字节

    1
    # head -c 20 test

  • tail 查看文件的内容

    参数 注释
    -f 循环读取
    -q 不显示处理信息
    -v 显示详细的处理信息
    -c<数目> 显示的字节数
    -n<行数> 显示文件的尾部 n 行内容
    –pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
    -q, –quiet, –silent 从不输出给出文件名的首部
    -s, –sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

    语法格式

    1
    # tail [参数] [文件]

    要显示 test 文件的最后 10 行

    1
    # tail test

    要跟踪名为 test 的文件的增长情况

    1
    # tail -f test

    显示文件 test 的内容,从第 20 行至文件末尾

    1
    # tail -n +20 test

    显示文件 test 的最后 10 个字符

    1
    # tail -c 10 test

  • tee 读取标准输入的数据,并将其内容输出成文件

    参数 注释
    -a或–append 附加到既有文件的后面,而非覆盖它.
    -i或–ignore-interrupts 忽略中断信号。

    语法格式

    1
    # tee [-ai][--help][--version][文件...]

    使用指令”tee”输入命令同时保存到文件”file1”和”file2”中

    1
    # tee file1 file2 

  • telnet 远端登入

    参数 注释
    -8 允许使用8位字符资料,包括输入与输出。
    -a 尝试自动登入远端系统。
    -b<主机别名> 使用别名指定远端主机名称。
    -c 不读取用户专属目录里的.telnetrc文件。
    -d 启动排错模式。
    -e<脱离字符> 设置脱离字符。
    -E 滤除脱离字符。
    -f 此参数的效果和指定”-F”参数相同。
    -F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。
    -k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。
    -K 不自动登入远端主机。
    -l<用户名称> 指定要登入远端主机的用户名称。
    -L 允许输出8位字符资料。
    -n<记录文件> 指定文件记录相关信息。
    -r 使用类似rlogin指令的用户界面。
    -S<服务类型> 设置telnet连线所需的IP TOS信息。
    -x 假设主机有支持数据加密的功能,就使用它。
    -X<认证形态> 关闭指定的认证形态。

    语法格式

    1
    # telnet [-8acdEfFKLrx][-b<主机别名>][-e<脱离字符>][-k<域名>][-l<用户名称>][-n<记录文件>][-S<服务类型>][-X<认证形态>][主机名称或IP地址<通信端口>]

    登录IP为 192.168.229.33 的远程主机

    1
    # telnet 192.168.229.33

  • rsync 远程数据同步工具

    • 说明
      可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。
    参数 注释
    -v, –verbose 详细模式输出
    -q, –quiet 精简输出模式
    -c, –checksum 打开校验开关,强制对文件传输进行校验
    -a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
    -r, –recursive 对子目录以递归模式处理
    -R, –relative 使用相对路径信息
    -b, –backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename
    –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

    语法格式

    1
    2
    3
    4
    5
    6
    # rsync [OPTION]... SRC DEST
    # rsync [OPTION]... SRC [USER@]host:DEST
    # rsync [OPTION]... [USER@]HOST:SRC DEST
    # rsync [OPTION]... [USER@]HOST::SRC DEST
    # rsync [OPTION]... SRC [USER@]HOST::DEST
    # rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

    从远程rsync服务器中拷贝文件到本地机

    1
    # rsync -av root@192.168.229.33::www /databack

    从本地机器拷贝文件到远程rsync服务器中

    1
    # rsync -av /databack root@192.168.229.33::www

    列远程机的文件列表。这类似于rsync传输

    1
    # rsync -v rsync://192.168.229.33/www

    把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下

    1
    # rsync /home/work/source.txt work@192.168.0.10:/home/work/   

    把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下

    1
    # rsync work@192.168.0.10:/home/work/source.txt /home/work/ 

    把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下

    1
    # rsync work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/

    拷贝文件夹,加-r参数

    1
    # rsync -r /home/work/sourcedir work@192.168.0.10:/home/work/

    使用主机名

    1
    # rsync -r /home/work/sourcedir work@www.myhost.com:/home/work/ 

    显示详情,加-v参数

    1
    # rsync -r -v /home/work/sourcedir work@www.myhost.com:/home/work/ 

    排除子目录,注意:–exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则匹配不上,就不会被排除掉

    1
    # rsync -r -v --exclude sourcedir/notinclude  /home/work/sourcedir work@www.myhost.com:/home/work/

USR_SBIN


  • adduser 新增使用者帐号或更新预设的使用者资料

    参数 注释
    -c comment 新使用者位于密码档(通常是 /etc/passwd)的注解资料
    -d home_dir 设定使用者的家目录为 home_dir ,预设值为预设的 home 后面加上使用者帐号 loginid
    -e expire_date 设定此帐号的使用期限(格式为 YYYY-MM-DD),预设值为永久有效

    语法格式

    1
    2
    # adduser [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,...]] [-m [-k skeleton_dir] | -M] [-p passwd] [-s shell] [-u uid [ -o]] [-n] [-r] loginid
    # adduser -D [-g default_group] [-b default_home] [-f default_inactive] [-e default_expire_date] [-s default_shell]

    添加一般用户test

    1
    # useradd test

    添加用户test,并指定用户所在的组为root用户组

    1
    # useradd -g root test

    创建一个系统用户test

    1
    # useradd -r test

    新添加用户test,其home目录为/home/test,当用户名test登录主机时,系统进入的默认目录为/home/test

    1
    # useradd-d /home/test test

  • lsof 查看你进程打开的文件,打开文件的进程、端口(TCP、UDP)。找回/恢复删除的文件。

    参数 注释
    -a 列出打开文件存在的进程
    -c<进程名> 列出指定进程所打开的文件
    -g 列出GID号进程详情
    -d<文件号> 列出占用该文件号的进程
    +d<目录> 列出目录下被打开的文件
    +D<目录> 递归列出目录下被打开的文件
    -n<目录> 列出使用NFS的文件
    -i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip )
    -p<进程号> 列出指定进程号所打开的文件
    -u 列出UID号进程详情
    • lsof输出各列信息的意义

      • COMMAND:进程的名称
      • PID:进程标识符
      • PPID:父进程标识符(需要指定-R参数)
      • USER:进程所有者
      • PGID:进程所属组
      • FD:文件描述符,应用程序通过文件描述符识别该文件。
    • 一般在标准输出、标准错误、标准输入后还跟着文件状态模式

      • u:表示该文件被打开并处于读取/写入模式。
      • r:表示该文件被打开并处于只读模式。
      • w:表示该文件被打开并处于。
        空格:表示该文件的状态模式为unknow,且没有锁定。
      • -:表示该文件的状态模式为unknow,且被锁定。
    • 文件类型

      • DIR:表示目录。
      • CHR:表示字符类型。
      • BLK:块设备类型。
      • UNIX: UNIX 域套接字。
      • FIFO:先进先出 (FIFO) 队列。
      • IPv4:网际协议 (IP) 套接字。
      • DEVICE:指定磁盘的名称
      • SIZE:文件的大小
      • NODE:索引节点(文件在磁盘上的标识)
      • NAME:打开文件的确切名称

        语法格式

        1
        # lsof(选项)

  • ntpdate 设置本地日期和时间

    • 此 ntpdate 命令使用以下方法进行时间调整

      • 如果它确定时钟偏差超过 0.5 秒,它通过调用 settimeofday 子例程设置时钟时间。在引导时间,这是一个首选的方法。
      • 如果它确定时钟偏差小于 0.5 秒,它通过调用 adjtime 子例程和偏移量来调整时钟时间。此方法倾向于用牺牲一些稳定性来保持漂移时钟更加准确。 当不是通过运行一个守护程序而是从 cron 命令有规则的运行ntpdate 命令时,每一小时或两小时执行一次可以保证足够的走时精度,从而避免调整时钟。

        使用很多服务器可以大幅度改善 ntpdate 命令的可靠性与精度。尽管能使用单一服务器,但您能通过提供至少三个或四个服务器以获得更好的性能。

        如果一个类似 xntpd 守护程序的 NTP 服务器守护程序正在同一主机上运行,命令将拒绝ntpdate 设置日期。

        你必须有 root 权限才能在主机上运行这个命令。

        参数 注释
        -aKeyid 使用 Keyid 来认证全部数据包。
        -b 通过调用 settimeofday 子例程来增加时钟的时间。
        -d 指定调试方式。判断 ntpdate 命令会产生什么结果(不产生实际的结果)。结果再现在屏幕上。这个标志使用无特权的端口。
        -eAuthenticationDelay 指定延迟认证处理的时间秒数。
        -kKeyFile 当不使用缺省值 /etc/ntp.keys 文件时,为包含密钥的文件指定一个不同的名称。
        -oVersion 当轮询它的发出数据包时,指定使用的 NTP 版本实现。 Version 的值可以是 1,2,3。缺省值是 3。
        -pSamples 指定从每个服务器获取的样本的数目。 Samples 的值在 1 和 8 之间,并包括 1 和 8。它的缺省值是 4。
        -s 指定日志操作 syslog 设施的使用,而不是使用标准输出。 当运行 ntpdate 命令和 cron命令时,它是很有用的。
        -tTimeOut 指定等待响应的时间。给定 TimeOut 的值四舍五入为 0.2 秒的倍数。缺省值是 1 秒。
        -u 指定使用无特权的端口发送数据包。 当在一个对特权端口的输入流量进行阻拦的防火墙后是很有益的, 并希望在防火墙之外和主机同步。防火墙是一个系统或者计算机,它控制从外网对专用网的访问。

        语法格式

        1
        # ntpdate [ -b] [ -d] [ -s] [ -u] [ -aKeyid] [ -eAuthenticationDelay] [ -kKeyFile] [ -oVersion] [ -pSamples] [ -tTimeOut] Server...

        同步互联网时间(ntpdate是一个内部的同步时间的代码)

        1
        # ntpdate time.windows.com 

        效果同上

        1
        # sntp –N time.windows.com

  • sshd 为secure shell的简称;可以通过网络在主机中开机shell的服务

    进程控制命令

    开启服务

    1
    # systemctl start sshd

    关闭防服务

    1
    # systemctl stop sshd

    重新加载服务配置

    1
    # systemctl reload sshd

    重启服务

    1
    # systemctl restart sshd

    设定服务开机启动

    1
    # systemctl enable sshd 

    设定服务开机不启动

    1
    # systemctl disable sshd

    列出已经开启服务当前状态

    1
    # systemctl list-units

    列出服务的倚赖

    1
    # systemctl list-dependencies 

    查看服务状态,inactive(不可用),active(可用)

    1
    # systemctl status sshd

  • usermod 修改用户帐号

    参数 注释
    -c<备注> 修改用户帐号的备注文字
    -d登入目录> 修改用户登入时的目录
    -e<有效期限> 修改帐号的有效期限
    -f<缓冲天数> 修改在密码过期后多少天即关闭该帐号
    -g<群组> 修改用户所属的群组
    -G<群组> 修改用户所属的附加群组
    -l<帐号名称> 修改用户帐号名称
    -L 锁定用户密码,使密码无效
    -s 修改用户登入后所使用的shell
    -u 修改用户ID
    -U 解除密码锁定

    语法格式

    1
    # usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]

    更改root登录目录/home/test

    1
    # usermod -d /home/test root

    改变用户的uid

    1
    # # usermod -u 666 root

  • userdel 删除已有的用户,以及与用户相关的文件

    参数 注释
    -f: 强制删除用户,即使用户当前已登录;
    -r: 删除用户的同时,删除与用户相关的所有文件。

    语法格式

    1
    # userdel(选项)(参数)

    删除用户test,但不删除用户目录及文件;

    1
    # userdel test

    删除用户test,用户目录及文件一并删除;

    1
    # userdel -r test

  • tcpdump 一款sniffer工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便分析

    参数 注释
    -a 尝试将网络和广播地址转换成名称
    -c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作
    -d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出
    -dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出
    -ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出
    -e 在每列倾倒资料上显示连接层级的文件头
    -f 用数字显示网际网络地址
    -F<表达文件> 指定内含表达方式的文件
    -i<网络界面> 使用指定的网络截面送出数据包
    -l 使用标准输出列的缓冲区
    -n 不把主机的网络地址转换成名字
    -N 不列出域名
    -O 不将数据包编码最佳化
    -p 不让网络界面进入混杂模式
    -q 快速输出,仅列出少数的传输协议信息
    -r<数据包文件> 从指定的文件读取数据包数据
    -s<数据包大小> 设置每个数据包的大小
    -S 用绝对而非相对数值列出TCP关联数
    -t 在每列倾倒资料上不显示时间戳记
    -tt 在每列倾倒资料上显示未经格式化的时间戳记
    -T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型
    -v 详细显示指令执行过程
    -vv 更详细显示指令执行过程
    -x 用十六进制字码列出数据包资料
    -w<数据包文件> 把数据包数据写入指定的文件

    语法格式

    1
    # tcpdump(选项)

    直接启动tcpdump将监视第一个网络接口上所有流过的数据包

    1
    # tcpdump

    监视指定网络接口eth1的数据包

    1
    # tcpdump -i eth1

    指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包

    1
    # tcpdump host 210.27.48.1

    截获主机hostname发送的所有数据

    1
    # tcpdump -i eth0 src host hostname

    监视所有送到主机hostname的数据包

    1
    # tcpdump -i eth0 dst host hostname

  • halt 闭正在运行的Linux操作系统,halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。

    参数 注释
    -d 不要在wtmp中记录
    -f 不论目前的runlevel为何,不调用shutdown即强制关闭系统
    -i 在halt之前,关闭全部的网络界面
    -n halt前,不用先执行sync
    -p halt之后,执行poweroff
    -w 仅在wtmp中记录,而不实际结束系统

    语法格式

    1
    # halt(选项)

    关闭系统后关闭电源

    1
    # halt -p

    关闭系统但不留下纪录

    1
    # halt -d


Linux基础命令必学
https://simple2ich4n.top/26080/
作者
2ich4n
发布于
2021年6月16日
更新于
2022年6月1日
许可协议