常用维护命令
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
说明:
- ens33是第一块网卡,其中inet是IP地址,netmask是子网掩码,broadcast是广播地址,ether是MAC地址;
- lo表示主机的回环地址,这个一般用来测试一个网络程序,但又不想让局域网或外网的用户访问到,只能在此台主机上运行和查看的网络接口;
- 状态信息,UP表示网卡开启状态,RUNNING表示网卡已连接,BROADCAST表示支持广播,MULTICAST表示支持组播,mtu表示最大传输单元(Bytes);
- 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为路由标志,标记当前网络结点的状态:
- U,Up,表示此路由当前为启动状态;
- H,Host,表示此网关为主机;
- G,Gateway,表示此网关为路由器;
- R,Reinstate Route,使用动态路由重新初始化的路由;
- D,Dynamically,表示此路由是动态性地写入;
- M,Modified,表示此路由是由路由守护程序或导向器动态修改;
- !,表示此路由当前为关闭状态;
?
设置网关
[ ~]# 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;
?