常用维护命令

help

用于显示Shell内部命令的帮助信息。help命令只能显示Shell内部命令帮助信息。对于外部命令的帮助信息只能使用man或者info命令查看;

  • 语法:help (选项) (参数)

  • 选项:

    -s,输出短格式帮助信息。仅包括命令格式;

  • 参数:内部命令;

  • 示例:

    [ ~]# help -s help
    help: help [-dms] [模式 ...]

?

exit

用于退出Shell,并返回给定值。在Shell脚本中可以终止当前脚本执行。执行exit可以使Shell以指定的状态退出。

  • 语法:exit (参数)
  • 参数:返回值,指定Shell返回值;

?

ping

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

  • 语法:ping (选项) (参数)

  • 选项:

    -d,使用Socket的SO_DEBUG功能;

    -c<完成次数>,设置完成要求回应的次数;

    -f,极限检测;

    -i<间隔秒数>,指定收发信息的间隔时间;

    -I<网络界面>,使用指定的网络界面送出数据包;

    -l<前置载入>,设置在送出要求信息之前,先行发出的数据包;

    -n,只输出数值;

    -p<范本样式>,设置填满数据包的范本样式;

    -q,不显示指令执行过程,开头和结尾的相关信息除外;

    -r,忽略普通的Routing Table,直接将数据包送到远端主机上;

    -R,记录路由过程;

    -s<数据包大小>,设置数据包的大小;

    -t<存活数值>,设置存活数值TTL的大小;

    -v,详细显示指令的执行过程;

  • 参数:目的主机,指定发送ICMP报文的目的主机;

  • 示例:

    [ ~]# ping 127.0.0.1
    PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
    64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.043 ms
    64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.062 ms
    64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.063 ms
    64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.062 ms
    ^C
    --- 127.0.0.1 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 2999ms
    rtt min/avg/max/mdev = 0.043/0.057/0.063/0.011 ms

?

ping6

和ping命令作用相同,参数必须是IPv6地址;

  • 语法:ping6 (选项) (参数)

  • 选项:

    -I,interface;

  • 参数:IPv6地址;

  • 示例:

    [ ~]# ping6 -I ens33 fe80::54cb:17b1:fa8d:9e34
    PING fe80::54cb:17b1:fa8d:9e34(fe80::54cb:17b1:fa8d:9e34) from fe80::54cb:17b1:fa8d:9e34%ens33 ens33: 56 data bytes
    64 bytes from fe80::54cb:17b1:fa8d:9e34%ens33: icmp_seq=1 ttl=64 time=1.20 ms
    64 bytes from fe80::54cb:17b1:fa8d:9e34%ens33: icmp_seq=2 ttl=64 time=0.092 ms
    64 bytes from fe80::54cb:17b1:fa8d:9e34%ens33: icmp_seq=3 ttl=64 time=0.093 ms
    64 bytes from fe80::54cb:17b1:fa8d:9e34%ens33: icmp_seq=4 ttl=64 time=0.091 ms
    64 bytes from fe80::54cb:17b1:fa8d:9e34%ens33: icmp_seq=5 ttl=64 time=0.090 ms
    64 bytes from fe80::54cb:17b1:fa8d:9e34%ens33: icmp_seq=6 ttl=64 time=0.093 ms
    ^C
    --- fe80::54cb:17b1:fa8d:9e34 ping statistics ---
    6 packets transmitted, 6 received, 0% packet loss, time 5004ms
    rtt min/avg/max/mdev = 0.090/0.278/1.209/0.416 ms

?

free

用于查看当前系统未使用和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

  • 语法:free (选项)

  • 选项:

    -b,以Byte为单位显示内存使用情况;

    -k,以KB为单位显示内存使用情况;

    -m,以MB为单位显示内存使用情况;

    -o,不显示缓冲区调节列;

    -s<间隔秒数>,持续观察内存使用情况;

    -t,显示内存总和列;

    -V,显示版本信息;

  • 示例:free -m

    [ ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           1819        1257         277          32         284         381
    Swap:          2047        1527         520

?

ps

用于查看当前系统的进程状态。可以结合kill命令随时中断、删除不需要的进程。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等,总之大部分信息都是可以通过 执行该命令得到。

  • 语法:ps (选项)

  • 选项:

    -a,显示终端机下所有执行的程序,除了阶段作业领导者之外;

    a,显示现行终端机下的所有程序,包括其他用户的程序;

    -A,显示所有程序;

    -c,显示CLS和RI栏位;

    c,列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务中的标示;

    -C<指令名称>,指定执行指令的名称,并列出该指令的程序的状况;

    -d,显示所有程序,但不包括阶段作业领导者的程序;

    -e,此选项的效果和指定“A”选项相同;

    -f,显示UID,PPIP,C与STIME栏位;

    f,用ASCII字符显示树状结构,表达程序间的相互关系;

    -g<群组名称>,此选项和指定“-G”选项相同,当亦能使用阶段作业领导者的名称来指定;

    g,显示现行终端机下的所有程序,包括群组领导者的程序;

    -G<群组识别码>,列出属于该群组的程序的状况,也可使用群组名称来指定;

    h,不显示标题列;

    -H,显示树状结构,表示程序间的相互关系;

    -j或j,采用工作控制的格式显示程序状况;

    -l或l,采用详细的格式来显示程序状况;

    L,列出栏尾的相关信息;

    -m或m,显示所有的执行绪;

    n,以数字来表示USER和WCHAN栏位;

    -N,显示所有的程序,除了执行ps指令终端机下的程序之外;

    -p<程序识别码>,指定程序识别码,并列出该程序的状况;

    p<程序识别码>,此选项的效果和指定“-p”选项相同,只在列表格式方面稍有差异;

    r,只列出现行终端机正在执行中的程序;

    -s<阶段作业>,指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况;

    s,采用程序信号的格式显示程序状况;

    S,列出程序时,包括已中断的子程序资料;

    -t<终端机编号>,指定终端机编号,并列出属于该终端机的程序的状况;

    t<终端机编号>,此选项的效果和指定“-t”选项相同,只在列表格式方面稍有差异;

    -T,显示现行终端机下的所有程序;

    -u<用户识别码>,此选项的效果和指定“-U”选项相同;

    u,以用户为主的格式来显示程序状况;

    -U<用户识别码>,列出属于该用户的程序的状况,也可以使用用户名来指定;

    U<用户名称>,列出属于该用户的程序的状况;

    v,采用虚拟内存的格式显示程序状况;

    -V或V,显示版本信息;

    -w或w,采用宽阔的格式来显示程序状况;

    x,显示所有程序,不以终端机来区分;

    X,采用旧式的Linux i386登录格式显示程序状况;

    -y,配合选项“-l”使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位;

    -<程序识别码>,此选项的效果和指定“p”选项相同;

    --cols<每列字符数>,设置每列的最大字符数;

    --columns<每列字符数>,此选项的效果和指定“--cols”选项相同;

    --cumulative,此选项的效果和指定“S”选项相同;

    --deselect,此选项的效果和指定“-N”选项相同;

    --forest,此选项的效果和指定“f”选项相同;

    --headers,重复显示标题列;

    --help,在线帮助;

    --info,显示排错信息;

    --lines<显示列数>,设置显示画面的列数;

    --no-headers,此选项的效果和指定“h”选项相同,只在列表格式方面稍有差异;

    --group<群组名称>,此选项的效果和指定“-G”选项相同;

    --Group<群组识别码>,此选项的效果和指定“-G”选项相同;

    --pid<程序识别码>,此选项的效果和指定“-p”选项相同;

    --rows<显示列数>,此选项的效果和指定“--lines”选项相同;

    --sid<阶段作业>,此选项的效果和指定“-s”选项相同;

    --tty<终端机编号>,此选项的效果和指定“-t”选项相同;

    --user<用户名称>,此选项的效果和指定“-U”选项相同;

    --User<用户识别码>,此选项的效果和指定“-U”选项相同;

    --version,此选项的效果和指定“-V”选项相同;

    --widy<每列字符数>,此选项的效果和指定“-cols”选项相同;

  • 示例:ps aux | grep redis

    [ ~]# ps aux | grep redis
    redis      1299  0.1  0.0 142960   952 ?        Ssl  5月26  29:18 /usr/bin/redis-server *:6379
    root     37881  0.0  0.0 112732   972 pts/0    S+   22:46   0:00 grep --color=auto redis

?

netstat

用于打印Linux中网络系统的状态信息,可获取整个Linux系统的网络情况。

  • 语法:netstat (选项)

  • 选项:

    -a或--all,显示所有连接中的Socket;

    -c或--continuous,持续列出网络状态;

    -C或--cache,显示路由器配置的快取信息;

    -e或--extend,显示网络其他相关信息;

    -F或--fib,显示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或--statistice,显示网络工作信息统计表;

    -t或--tcp,显示TCP传输协议的连接状况;

    -u或--udp,显示UDP传输协议的连接状况;

    -v或--verbose,显示指令执行过程;

    -V或--version,显示版本信息;

    -w或--raw,显示RAW传输协议的连接状况;

    -x或--unix,此参数的效果和指定“-A unix”参数相同;

    --ip或--inet,此参数的效果和指定“-A inet”参数相同;

  • 示例:

    打印所有端口(包括监听和未监听的)

    [ ~]# netstat -a    # 打印所有端口
    [ ~]# netstat -at    # 打印所有tcp端口
    [ ~]# netstat -au    # 打印所有udp端口

    打印所有处于监听状态的socket

    [ ~]# netstat -l    # 只打印监听的端口
    [ ~]# netstat -lt    # 只打印所有监听的tcp端口
    [ ~]# netstat -lu    # 只打印所有监听的udp端口
    [ ~]# netstat -lx    # 只打印所有监听的unix端口

    打印每个协议的统计信息

    [ ~]# netstat -s    # 打印所有端口的统计信息
    [ ~]# netstat -st    # 打印tcp端口的统计信息
    [ ~]# netstat -su    # 打印udp端口的统计信息

?

df

用于显示磁盘分区上的可使用的磁盘空间。默认单位是KB。可以利用该命令来获取磁盘被占用了多少空间,目前还剩下多少空间信息。

  • 语法:df (选项) (参数)

  • 选项:

    -a或--all,包含全部的文件系统;

    --block-size=<区块大小>,以指定的区块大小来显示区块数目;

    -h或--human-readable,以可读性较高的方式来显示信息;

    -H或--si,与-h参数相同,但是在计算时以1000Bytes为单位而非1024Bytes;

    -i或--inodes,显示inode信息;

    -k或--kilobytes,指定区块大小为1024字节;

    -l或--local,仅显示本地端的文件系统;

    -m或--megabytes,指定区块大小为1048576字节;

    --no-sync,在取得磁盘使用信息前,不要执行sync指令,此为预设值;

    -P或--portability,使用POSIX的输出格式;

    --sync,在取得磁盘使用信息前,先执行sync命令;

    -t<文件系统类型>或--type<文件系统类型>,仅显示指定文件系统类型的磁盘信息;

    -T或--print-type,显示文件系统的类型;

    -x<文件系统类型>或--exclude-type=<文件系统类型>,不要显示指定文件系统类型的磁盘信息;

    --help,显示帮助信息;

    --version,显示版本信息;

  • 参数,指定文件系统上的文件

  • 示例:

    [ ~]# df    # 打印系统磁盘设备,默认以KB为单位
    [ ~]# df -h    # 以KB以上的单位来打印,可读性更高
    [ ~]# df -a    # 查看全部文件系统

?

ifconfig

用于配制和查看Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在机器重启后,配置会恢复默认,要想将配置信息永久生效,需要修改网卡的配置文件。

  • 语法: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地址;

    网络设备,指定网络设备的名称;

  • 示例:

    打印网络设备信息(激活状态的)

    [ ~]# ifconfig
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.14.197  netmask 255.255.255.0  broadcast 192.168.14.255
            inet6 fe80::54cb:17b1:fa8d:9e34  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:2f:2a:4d  txqueuelen 1000  (Ethernet)
            RX packets 817090  bytes 1118646511 (1.0 GiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 188512  bytes 15240766 (14.5 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 23818792  bytes 3263028874 (3.0 GiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 23818792  bytes 3263028874 (3.0 GiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
            ether 52:54:00:34:d9:7e  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    说明:

    1. ens33是第一块网卡,其中inet是IP地址,netmask是子网掩码,broadcast是广播地址,ether是MAC地址;
    2. lo表示主机的回环地址,这个一般用来测试一个网络程序,但又不想让局域网或外网的用户访问到,只能在此台主机上运行和查看的网络接口;
    3. 状态信息,UP表示网卡开启状态,RUNNING表示网卡已连接,BROADCAST表示支持广播,MULTICAST表示支持组播,mtu表示最大传输单元(Bytes);
    4. RX相关表示接受数据相关的参数,TX相关表示传输数据相关的参数;

    ?

    开启和关闭指定的网卡

    [ ~]# ifconfig eth0 up    # 启动eth0网卡
    [ ~]# ifconfig eth0 down    # 关闭eth0网卡

    ?

    配置和删除网卡的IPv6地址

    [ ~]# ifconfig eth0 add 33ffe:3240:800:1005::2/64    # 给eth0配置IPv6地址
    [ ~]# ifconfig etho0 del 33ff3:3240:800:1005::2/64    # 删除eth0的IPv6地址

    ?

    修改MAC地址

    [ ~]# ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE

    ?

    配置IP地址

    [ ~]# ifconfig eth0 192.168.2.10
    [ ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0
    [ ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255

    开启和关闭ARP协议

    [ ~]# ifconfig eth0 arp    # 开启网卡eth0的ARP协议
    [ ~]# ifconfig eth0 -arp    # 关闭网卡eth0的ARP协议

    设置最大传输单元

    [ ~]# ifconfig eth0 mtu 1500    # 设置能通过的最大数据包大小为1500 bytes

?

route

用于打印和设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。

在Linux中设置路由通常是为了解决:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置成Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local文件中添加route命令使路由设置永久有效。

  • 语法:route (选项) (参数)

  • 选项:

    -A,设置地址类型;

    -C,打印将Linux核心的路由缓存;

    -v,详细信息模式;

    -n,不执行DNS反向查找,直接显示数字形式的IP地址;

    -e,netstat格式显示路由表;

    -net,到一个网络的路由表;

    -host,到一个主机的路由表;

  • 参数:

    add,增加指定的路由记录;

    del,删除指定的路由记录;

    target,目的网络或目的主机;

    gw,设置默认网关;

    mss,设置TCP的最大区块长度(MSS),单位MB;

    window,指定通过路由表的TCP连接的TCP窗口大小;

    dev,路由记录所表示的网络接口;

  • 示例:

    打印当前路由

    [ ~]# route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         gateway         0.0.0.0         UG    100    0        0 ens33
    192.168.14.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
    192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
    [ ~]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.14.2    0.0.0.0         UG    100    0        0 ens33
    192.168.14.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
    192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

    其中Flags为路由标志,标记当前网络结点的状态:

    1. U,Up,表示此路由当前为启动状态;
    2. H,Host,表示此网关为主机;
    3. G,Gateway,表示此网关为路由器;
    4. R,Reinstate Route,使用动态路由重新初始化的路由;
    5. D,Dynamically,表示此路由是动态性地写入;
    6. M,Modified,表示此路由是由路由守护程序或导向器动态修改;
    7. !,表示此路由当前为关闭状态;

    ?

    设置网关

    [ ~]# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0    # 增加一条到达244.0.0.0的路由
    [ ~]# route add -net 244.0.0.0 netmask 240.0.0.0 reject    # 屏蔽一条路由,目的地址为224.x.x.x将被拒绝
    [ ~]# 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    # 删除路由记录
    [ ~]# route add default gw 192.168.120.240    # 添加默认网关
    [ ~]# route del default gw 192.168.120.240    # 删除默认网关

?

top

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方面信息监测系统性能和运行信息的实用命令。

  • 语法:top (选项)

  • 选项:

    -b,以批处理模式操作;

    -c,显示完整的子命令;

    -d,屏幕刷新时间间隔;

    -I,忽略失效过程;

    -s,保密模式;

    -S,累积模式;

    -i<时间>,设置时间间隔;

    -u<用户名>,指定用户名;

    -p<进程号>,指定进程;

    -n<次数>,循环显示的次数;

  • top交互命令:

    h,显示帮助画面,给出一些简短的命令总结说明;

    k,终止一个进程;

    i,忽略闲置和僵死进程,一个开关式命令;

    q,退出程序;

    r,重新安排一个进程的优先级;

    S,切换到累计模式;

    s,改变两次刷新之间的延迟时间(单位为s),如果小数,就换算成ms。输入0则系统将不断刷新,默认是5s;

    f或F,从当显示中添加或删除项目;

    o或O,改变显示项目的顺序;

    l,切换显示平均负载和启动时间信息;

    m,切换显示内存信息;

    t,切换显示进程和CPU状态信息;

    c,切换显示命令名称和完整命令行;

    M,根据驻留内存大小进行排序;

    P,根据CPU使用百分比大小进行排序;

    T,根据时间/累计时间进行排序;

    w,将当前设置写入~/.toprc文件中;

  • 示例:

    [ ~]# top
    top - 07:29:08 up 14 days,  7:26,  2 users,  load average: 0.06, 0.10, 0.12
    Tasks: 241 total,   1 running, 240 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.5 us,  0.5 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  1863088 total,   249208 free,  1270056 used,   343824 buff/cache
    KiB Swap:  2097148 total,   520532 free,  1576616 used.   411664 avail Mem

    说明:

    • top - 07:29:08,当前系统时间;
    • up 14 days,系统已经运行了14天;
    • 2 users,2个用户当前登录;
    • load average:0.06,0.10,0.12,系统负载,即任务队列的平均长度;
    • Tasks,进程相关。总进程数,正在运行的进程数,睡眠的进程数,停止的进程数,冻结的进程数;
    • %Cpu(s),CPU相关。us,用户空间占用CPU百分比;sy,内核空间占用CPU百分比;ni,用户进程空间内改变过优先级的进程占用CPU百分比;id,空闲CPU百分比;wa,等待输入输出的CPU时间百分比;hi,si,st;
    • Mem,内存相关。total,物理内存总量;free,空闲内存总量;used,已使用的物理内存总量;buff/cache,用作内核缓存的内存量;
    • Swap,交换区相关。total,交换区总量;free,空闲交换区总量;used,已使用的交换区总量;avail Mem;

?

相关推荐