20-Linux系统进程与计划任务相关命令详解整合

系统进程与计划任务相关命令详解整合

at

  • at命令用于在指定时间执行命令。它能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。

  • 也能够使用midnight(深夜),noon(中午),teatime(下午茶,下午4点)等比较模糊的词语来指定时间。

  • 用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。

  • 指定的日期必须跟在指定时间的后面。

选项

-f:指定包含具体指令的任务文件;
-q:指定新任务的队列名称;
-l:显示待执行任务的列表;
-d:删除指定的待执行任务;
-m:任务执行完成后向用户发送E-mail。

示例

[root@CentOS7 ~]# at 11:50      (创建今天 11:50 计划任务)
at> reboot                      (计划任务内容根据所需而定)
at> <EOT>                       (按 Ctrl +D 结束)
job 1 at Mon Oct 28 11:50:00 2019   (计划任务创建成功)
[root@CentOS7 ~]# at -l             (使用 at -l 查看计划任务列表)
1	Mon Oct 28 11:50:00 2019 a root (数字1为计划任务的序号)   
[root@CentOS7 ~]# at -d 1           (使用 at -d 加计划任务序号,删除该计划任务)
[root@CentOS7 ~]# at -l             (此时该计划任务已被删除)
[root@CentOS7 ~]# 

at 5pm+3 days
三天后的下午五点

at 10:20 tomorrow
明天10点20

atq

  • atq命令显示系统中待执行的任务列表,也就是列出当前用户的at任务列表。但仅会执行一次,执行完成后该计划任务将自动删除。若想要周期性执行计划任务,可使用crontab命令。

示例

  • 事先创建三个计划任务来演示
[root@CentOS7 ~]# at 17:34
at> touch /home/td/f1.txt
at> <EOT>
job 2 at Mon Oct 28 17:34:00 2019

[root@CentOS7 ~]# at 5pm+3 days
at> rm /data/scripts/first.sh
at> <EOT>
job 3 at Wed Oct 30 17:00:00 2019

[root@CentOS7 ~]# at 00:20 tomorrow
at> cp /etc/passwd /data/cp.log
at> <EOT>
job 4 at Mon Oct 28 00:20:00 2019


[root@CentOS7 ~]# atq   (查看计划任务列表)
2	Mon Oct 28 17:34:00 2019 a root
3	Wed Oct 30 17:00:00 2019 a root
4	Mon Oct 28 00:20:00 2019 a root

[root@CentOS7 ~]#

atrm

  • atrm命令用于删除待执行任务队列中的指定任务。

示例

[root@CentOS7 ~]# atq
2	Mon Oct 28 17:34:00 2019 a root
3	Wed Oct 30 17:00:00 2019 a root
4	Mon Oct 28 00:20:00 2019 a root

[root@CentOS7 ~]# atrm 3    (删除一个计划任务)

[root@CentOS7 ~]# atq
2	Mon Oct 28 17:34:00 2019 a root
4	Mon Oct 28 00:20:00 2019 a root

[root@CentOS7 ~]# atrm 2 4  (删除多个计划任务)

[root@CentOS7 ~]# atq

[root@CentOS7 ~]#

crontab

  • crontab命令被用来提交和管理用户的需要周期性执行的任务,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

  • 每个用户都有专用的cron任务文件:/var/spool/cron/USERNAME

  • root能够修改其它用户的作业

  • 控制用户执行计划任务: /etc/cron.{allow,deny}

    root可以设置白名单allow,或者黑名单deny来控制其他普通用户执行计划任务

选项

-e:编辑任务
-l:列出所有任务 
-r:移除所有任务
-i:同-r一同使用,以交互式模式移除指定任务
-u <user>:仅root可运行,指定用户管理cron任务
  • root可以直接 vim /etc/crontab 编辑计划任务
[root@CentOS7 ~]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

  • 第一行SHELL变量指定了系统要使用哪个shell,这里是bash
  • 第二行PATH变量指定了系统执行命令的路径
  • 第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
  • 第四行的HOME变量指定了在执行命令或者脚本时使用的主目录

示例

  • 周一到周五期间,每隔十分钟检查一次磁盘空间,若发现任何分区利用率超出80,则广播警告用户

      [root@CentOS7 data]# vim diskwarning.sh
      #!/bin/bash
      [ `df |sed -nr '/^\/dev\/sd/s/.* ([0-9])%.*/\1/p' |sort -nr | head -n1` -gt 80 ] && wall disk will be full
    
      [root@CentOS7 data]# crontab -e     (删除计划任务同样使用该命令)
      */10 * * * 1-5 /bin/bash diskwarning.sh
    
      [root@CentOS7 data]#        (收到广播警告)
      Broadcast message from root@CentOS7.localdomain (pts/0) (Tue Oct 29 20:48:00 2019):
    
      disk will be full
    
      You have new mail in /var/spool/mail/root
    

batch

  • batch命令用于在指定时间,当系统不繁忙时执行任务,用法与at相似。

选项

-f:指定包含具体指令的任务文件;
-q:指定新任务的队列名称;
-m:任务执行完后向用户发送E-mail。

示例

[root@CentOS7 ~]# batch
at> touch /data/f1.txt
at> echo hello > /data/fi.log
at> <EOT>
job 3 at Sun Oct 27 15:44:00 2019

[root@CentOS7 ~]# cd /data

[root@CentOS7 data]# ls
f1.txt  fi.log  scripts

[root@CentOS7 data]# cat fi.log 
hello

[root@CentOS7 data]# batch
at> echo hello
at> <EOT>
job 6 at Sun Oct 27 15:51:00 2019

[root@CentOS7 data]# 
You have new mail in /var/spool/mail/root

bg

  • bg命令用于将作业放到后台运行,使前台可以执行其他任务。
  • 该命令的运行效果与在指令后面添加符号&的效果是相同的,都是将其放到系统后台执行。
  • 在Linux系统中执行某些操作时候,有时需要将当前任务暂停调至后台,或有时须将后台暂停的任务重启开启并调至前台,这一序列的操作将会使用到 jobsbg、和 fg三个命令以及两个快捷键(Ctrl +Z 、 Ctrl +C)来完成。

示例

这里我们用 ping 命令来演示

[root@CentOS7 data]# ping 192.168.124.5
PING 192.168.124.5 (192.168.124.5) 56(84) bytes of data.
64 bytes from 192.168.124.5: icmp_seq=1 ttl=64 time=0.043 ms
64 bytes from 192.168.124.5: icmp_seq=2 ttl=64 time=0.073 ms
^Z
[1]+  Stopped                 ping 192.168.124.5

ping某主机一段时间后用 Ctrl +Z 将其切入后台变为睡眠状态

[root@CentOS7 data]# jobs
[1]+  Stopped                 ping 192.168.124.5

使用 jobs 命令可查看后台进程的状态,jobs 查看到的所有进程皆为后台进程

[root@CentOS7 data]# fg
ping 192.168.124.5
64 bytes from 192.168.124.5: icmp_seq=26 ttl=64 time=0.040 ms
64 bytes from 192.168.124.5: icmp_seq=27 ttl=64 time=0.062 ms
^C
--- 192.168.124.5 ping statistics ---
28 packets transmitted, 28 received, 0% packet loss, time 202479ms
rtt min/avg/max/mdev = 0.039/0.059/0.163/0.025 ms

使用 fg 命令可将后台进程转为前台进程继续运行

使用 Ctrl +C 终止 ping 命令

[root@CentOS7 data]#

使用bg命令与在指令后面添加符号"&"的效果是一样的

  • [root@CentOS7 data]# ping 192.168.124.5 &
[root@CentOS7 data]# ping 192.168.124.5
PING 192.168.124.5 (192.168.124.5) 56(84) bytes of data.
64 bytes from 192.168.124.5: icmp_seq=1 ttl=64 time=0.046 ms
^Z
[1]+  Stopped                 ping 192.168.124.5

[root@CentOS7 data]# jobs
[1]+  Stopped                 ping 192.168.124.5

[root@CentOS7 data]# bg
[1]+ ping 192.168.124.5 &   (此时的ping命令被切换至后台运行,且无法被关闭)

[root@CentOS7 data]# 64 bytes from 192.168.124.5: icmp_seq=2 ttl=64 time=0.035 ms
64 bytes from 192.168.124.5: icmp_seq=3 ttl=64 time=0.049 ms
ll64 bytes from 192.168.124.5: icmp_seq=5 ttl=64 time=0.054 ms

但是并不会影响我们执行其他命令,比如 ll

total 8
drwxr-xr-x. 2 root root  186 Oct 21 19:24 ceshi
drwxr-xr-x. 2 root root 4096 Oct 14 13:04 script
drwxr-xr-x. 2 root root 4096 Oct 10 19:11 scripts

[root@CentOS7 data]# 64 bytes from 192.168.124.5: icmp_seq=6 ttl=64 time=0.064 ms
64 bytes from 192.168.124.5: icmp_seq=7 ttl=64 time=0.052 ms
64 bytes from 192.168.124.5: icmp_seq=8 ttl=64 time=0.060 ms
^C

使用 Ctrl +C 同样无法将其终止,这时便要使用 ps 与 kill 命令来终止进程运行

[root@CentOS7 data]# 64 bytes from 192.168.124.5: icmp_seq=136 ttl=64 time=0.048 ms
64 bytes from.......................................
.........................................................................

打开一个新的终端

[root@CentOS7 ~]# ps a  (显示所有进程列表)
   PID TTY      STAT   TIME COMMAND
  1507 pts/1    Ss+    0:00 -bash
  1605 tty1     Ssl+   0:00 /usr/bin/X :0 -background none -noreset -au
  2258 pts/0    Ss     0:00 -bash
  2595 pts/1    S      0:00 ping 192.168.124.5  (PID下的数字就是进程的编号)
  2879 pts/0    R+     0:00 ps a
[root@CentOS7 ~]# kill 2595     (使用kill 后面加上进程编号,比如2595)
[root@CentOS7 ~]#

回到原来的终端查看

.............................
64 bytes from 192.168.124.5: icmp_seq=1093 ttl=64 time=0.050 ms
64 bytes from 192.168.124.5: icmp_seq=1094 ttl=64 time=0.069 ms

[1]+  Terminated              ping 192.168.124.5
[root@CentOS7 data]# 
[root@CentOS7 data]# jobs
[root@CentOS7 data]#    (该进程已成功终止)

fg

  • fg命令用于将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行。与bg命令一样,若后台任务中只有一个,则使用该命令时,可以省略任务号.

jobs

  • jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。该命令可以显示任务号及其对应的进程号。其中,任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的。一个任务可以对应于一个或者多个进程号.

选项

-l:显示进程号
-p:仅任务对应的显示进程号
-n:显示任务状态的变化
-r:仅输出运行状态(running)的任务
-s:仅输出停止状态(stoped)的任务

ps

  • ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等

选项

a 选项包括所有终端中的进程 
x 选项包括不链接终端的进程 
u 选项显示进程所有者的信息 
f 选项显示进程树,相当于 --forest 
k|--sort  属性 对属性排序,属性前加- 表示倒序 
o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem 
L 显示支持的属性列表

-C cmdlist 指定命令,多个命令用,分隔 
-L 显示线程 
-e 显示所有进程,相当于-A 
-f 显示完整格式程序信息 
-F 显示更完整格式的进程信息 
-H 以进程层级格式显示进程相关信息 
-u userlist  指定有效的用户ID或名称 
-U userlist 指定真正的用户ID或名称 
-g gid或groupname  指定有效的gid或组名称 
-G gid或groupname  指定真正的gid或组名称 
-p pid 显示指pid的进程 
--ppid pid  显示属于pid的子进程  
-t  ttylist  指定tty,相当于 t 
-M  显示SELinux信息,相当于Z

示例

ps a
显⽰所有⽤户在所有终端上运⾏的前台进程

ps u 
显⽰⽤户名

ps x
显⽰当前⽤户所运⾏的所有进程,包括前台和后台守护进程

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head 
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
查找占用最多内存和CPU的进程

ps axo %cpu,%mem,pid,comm --sort -%cpu |head -11
显⽰进程的占⽤cpu百分⽐、内存使⽤百分⽐、pid、执⾏的命令,并以cpu排序

ps常⽤组合之⼀:aux
ps常⽤组合之⼀:-eF

nice

  • nice命令用于以指定的进程调度优先级启动其他的程序。

    静态优先级:100-139
    进程默认启动时的nice值为0,优先级为120
    只有root才能降低nice值(提高优先性)

选项

-n:指定进程的优先级(整数)

示例

nice命令在程序运⾏之前指定调度优先级

[root@CentOS7 data]# nice -n -20 ping 192.168.124.5

[root@CentOS7 ~]# ps axo nice,comm|grep ping
-20 ping

[root@CentOS7 ~]# 

renice

  • renice命令可以修改正在运行的进程的调度优先级。可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。

选项

-g:指定进程组id
-p<程序识别码>:改变该程序的优先权等级,此参数为预设值
-u:指定开启进程的用户名

示例

指定正在运⾏的ping程序的优先级为-20

[root@CentOS7 ~]# ps axo nice,comm|grep ping
  0 ping

[root@CentOS7 ~]# renice -n -20 $(pidof ping)
3678 (process ID) old priority 0, new priority -20

[root@CentOS7 ~]# ps axo nice,comm|grep ping
-20 ping

[root@CentOS7 ~]# 

pidof

  • pidof命令用于查找指定名称的进程的进程号id号。

选项

-s:仅返回一个进程号
-c:仅显示具有相同“root”目录的进程
-x:显示由脚本开启的进程
-o:指定不显示的进程ID

示例

[root@CentOS7 ~]# pidof ping
3678

[root@CentOS7 ~]#

pstree

  • pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。

常用选项

-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示
-c:不使用精简标示法
-h:列出树状图时,特别标明现在执行的程序
-H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序
-l:采用长列格式显示树状图
-p:显示程序识别码;
-u:显示用户名称

示例

[root@CentOS7 data]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─2*[dhclient]
        │                └─2*[{NetworkManager}]
        ├─VGAuthService
        ├─2*[abrt-watch-log]
...........................
[root@CentOS7 data]# pstree -p
systemd(1)─┬─ModemManager(655)─┬─{ModemManager}(672)
           │                   └─{ModemManager}(720)
           ├─NetworkManager(777)─┬─dhclient(932)
           │                     ├─dhclient(934)
           │                     ├─{NetworkManager}(781)
           │                     └─{NetworkManager}(784)
           ├─VGAuthService(682)
           ├─abrt-watch-log(689)
................................

pgrep

  • pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id.

选项

-o:仅显示找到的最小(起始)进程号
-n:仅显示找到的最大(结束)进程号
-l:显示进程名称
-P:指定父进程号
-g:指定进程组
-t:指定开启进程的终端
-u:指定进程的有效用户ID

示例

[root@CentOS7 ~]# pgrep -l ping
3678 ping

[root@CentOS7 ~]# pgrep -n
8251

[root@CentOS7 ~]# pgrep -o
1

[root@CentOS7 ~]# 

kill

  • kill命令用来删除执行中的程序或工作。kill可将指定的信息送至程序。

  • 显示当前系统可用信号: kill –l 或者 trap -l

  • 常用信号:man 7 signal
    1) SIGHUP 无须关闭进程而让其重读配置文件
    2) SIGINT 中止正在运行的进程;相当于Ctrl+c
    3) SIGQUIT 相当于ctrl+\
    9) SIGKILL 强制杀死正在运行的进程
    15) SIGTERM 终止正在运行的进程
    18) SIGCONT 继续运行
    19) SIGSTOP 后台休眠

    按PID:kill [-SIGNAL] pid …
    kill –n SIGNAL pid
    kill –s SIGNAL pid

    按名称:killall [-SIGNAL] comm…

    按模式:pkill [options] pattern

选项

-u uid: effective user,生效者  
-U uid: real user,真正发起运行命令者  
-t terminal: 与指定终端相关的进程  
-l: 显示进程名(pgrep可用)  
-a: 显示完整格式的进程名(pgrep可用)  
-P pid: 显示指定进程的子进程
-s <信息名称或编号>:指定要送出的信息

示例

[root@CentOS7 data]# ps a
   PID TTY      STAT   TIME COMMAND
  1428 pts/1    Ss     0:00 -bash
  1592 tty1     Ssl+   0:00 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -a
  4019 pts/0    Ss     0:00 -bash
 19438 pts/1    S+     0:00 ping 192.168.124.5
 19439 pts/0    R+     0:00 ps a

[root@CentOS7 data]# kill ping
-bash: kill: ping: arguments must be process or job IDs

[root@CentOS7 data]# kill 19438

[root@CentOS7 data]# ps a
   PID TTY      STAT   TIME COMMAND
  1428 pts/1    Ss+    0:00 -bash
  1592 tty1     Ssl+   0:00 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -a
  4019 pts/0    Ss     0:00 -bash
 19451 pts/0    R+     0:00 ps a

[root@CentOS7 data]# 

pkill

  • pkill命令可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉。

选项

  • 与kill类似

示例

[root@CentOS7 data]# ps a
   PID TTY      STAT   TIME COMMAND
  1428 pts/1    Ss     0:00 -bash
  1592 tty1     Ssl+   0:00 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -a
  4019 pts/0    Ss     0:00 -bash
 19492 pts/1    S+     0:00 ping 192.168.124.5
 19516 pts/0    R+     0:00 ps a

[root@CentOS7 data]# pgrep -l ping
19492 ping

[root@CentOS7 data]# pkill ping

[root@CentOS7 data]# ps a
   PID TTY      STAT   TIME COMMAND
  1428 pts/1    Ss+    0:00 -bash
  1592 tty1     Ssl+   0:00 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -a
  4019 pts/0    Ss     0:00 -bash
 19526 pts/0    R+     0:00 ps a

[root@CentOS7 data]#

skill

  • skill命令用于向选定的进程发送信号,冻结进程。这个命令初学者并不常用,深入之后牵涉到系统服务优化之后可能会用到。

选项

-f:快速模式
-i:交互模式,每一步操作都需要确认
-v:冗余模式
-w:激活模式
-t:指定开启进程的终端号
-u:指定开启进程的用户
-p:指定进程的id号
-c:指定开启进程的指令名称

示例

ps a 显示 ping 正在运行

运行状态查看终端二

终端一

[root@CentOS7 script]# ps a
   PID TTY      STAT   TIME COMMAND
  1428 pts/1    Ss     0:00 -bash
  1592 tty1     Ssl+   0:00 /usr/bin/X :0 -background none -noreset -
  4019 pts/0    Ss     0:00 -bash
 22720 pts/1    S+     0:00 ping 192.168.124.5
 22731 pts/0    R+     0:00 ps a

[root@CentOS7 script]# skill -19 ping    (将运行中的ping睡眠)

[root@CentOS7 script]# skill -18 ping    (将睡眠中的ping唤醒)

[root@CentOS7 script]# skill -9 ping     (强制杀死运行中的ping)

[root@CentOS7 script]# 

终端一

.........................
64 bytes from 192.168.124.5: icmp_seq=80 ttl=64 time=0.048 ms
64 bytes from 192.168.124.5: icmp_seq=81 ttl=64 time=0.040 ms
64 bytes from 192.168.124.5: icmp_seq=82 ttl=64 time=0.049 ms

[1]+  Stopped                 ping 192.168.124.5

运行中的 ping 被睡眠

[root@CentOS7 date]# 64 bytes from 192.168.124.5: icmp_seq=83 ttl=64 time=0.036 ms  (ping被重新唤醒)
64 bytes from 192.168.124.5: icmp_seq=84 ttl=64 time=0.042 ms
64 bytes from 192.168.124.5: icmp_seq=85 ttl=64 time=0.042 ms
64 bytes from 192.168.124.5: icmp_seq=86 ttl=64 time=0.047 ms

[1]+  Killed                  ping 192.168.124.5

ping被强制杀死而终止

[root@CentOS7 date]#

killall

  • killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。杀死指定进程,可以在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一。

选项

-e:对长名称进行精确匹配
-l:忽略大小写的不同
-p:杀死进程所属的进程组
-i:交互式杀死进程,杀死进程前需要进行确认
-l:打印所有已知信号列表
-q:如果没有进程被杀死。则不输出任何信息
-r:使用正规表达式匹配要杀死的进程名称
-s:用指定的进程号代替默认信号“SIGTERM”
-u:杀死指定用户的进程

示例

pgrep httpd 查看所有与httpd同名的进程

[root@CentOS7 date]# pgrep httpd
23731
23744
23745
23746
23747
23748

[root@CentOS7 date]# killall httpd

[root@CentOS7 date]# pgrep httpd

[root@CentOS7 date]# 

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文件中

iotop

  • iotop命令是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI

选项

-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件
-n NUM:显示NUM次,主要用于非交互式模式
-d SEC:间隔SEC秒显示一次
-p PID:监控的进程pid
-u USER:监控的进程用户

iotop常用快捷键

左右箭头:改变排序方式,默认是按IO排序。
r:改变排序顺序。
o:只显示有IO输出的进程。
p:进程/线程的显示方式的切换。
a:显示累积使用量。
q:退出。

service

service命令是用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

示例

当修改了主机名、ip地址等信息时,经常需要把网络重启使之生效

[root@CentOS7 ~]# service network status
Configured devices:
lo ens33
Currently active devices:
lo ens33 virbr0

[root@CentOS7 ~]# service network restart
Restarting network (via systemctl):                        [  OK  ]

[root@CentOS7 ~]# 

w

  • w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些,以及他们正在执行的程序。单独执行w命令会显示所有的用户,也可指定用户名称,仅显示某位用户的相关信息。

选项

-h:不打印头信息
-u:当显示当前进程和cpu时间时忽略用户名
-s:使用短输出格式
-f:显示用户从哪登录

示例

[root@CentOS7 ~]# w
 19:41:18 up 20 min,  1 user,  load average: 0.00, 0.04, 0.08
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.124.1    19:30    6.00s  0.11s  0.00s w

[root@CentOS7 ~]# w -s
 19:41:23 up 20 min,  1 user,  load average: 0.00, 0.04, 0.08
USER     TTY      FROM              IDLE WHAT
root     pts/0    192.168.124.1     3.00s w -s

[root@CentOS7 ~]#

dstat

  • dstat命令是一个用来替换vmstat、iostat、netstat、nfsstat和ifstat这些命令的工具,与sysstat相比,dstat拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且dstat支持即时刷新。

选项

-c:显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息
-C:当有多个CPU时候,此参数可按需分别显示cpu状态,例:-C 0,1 是显示cpu0和cpu1的信息
-d:显示磁盘读写数据大小
-D hda,total:include hda and total
-n:显示网络状态
-N eth1,total:有多块网卡时,指定要显示的网卡
-l:显示系统负载情况
-m:显示内存使用情况
-g:显示页面使用情况
-p:显示进程状态
-s:显示交换分区使用情况
-S:类似D/N
-r:I/O请求情况
-y:系统状态

mpstat

  • mpstat命令指令主要用于多CPU环境下,它显示各个可用CPU的状态。这些信息存放在/proc/stat文件中。

选项

-P:指定CPU编号

ifstat

  • ifstat命令就像iostat/vmstat描述其它的系统状况一样,是一个统计网络接口活动状态的工具。

选项

-l 监测环路网络接口(lo)
-a 监测能检测到的所有网络接口的状态信息
-z 隐藏流量是无的接口,例如那些接口虽然启动了但是未用的
-i 指定要监测的接口,后面跟网络接口名
-s 等于加-d snmp:[comm@][#]host[/nn]] 参数,通过SNMP查询一个远程主机
-n 关闭显示周期性出现的头部信息
-t 在每一行的开头加一个时间戳
-T 报告所有监测接口的全部带宽
-w  用指定的列宽,而不是为了适应接口名称的长度而去自动放大列宽
-W 如果内容比终端窗口的宽度还要宽就自动换行
-S 在同一行保持状态更新
-b 用kbits/s显示带宽而不是kbytes/s
-q 安静模式,警告信息不出现

iostat

  • iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。

选项

-c:仅显示CPU使用情况
-d:仅显示设备利用率
-k:显示状态以千字节每秒为单位,而不使用块每秒
-m:显示状态以兆字节每秒为单位
-p:仅显示块设备和所有被使用的其他分区的状态
-t:显示每个报告产生时的时间
-x:显示扩展状态

vmstat

  • vmstat命令的含义为显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

选项

-a:显示活动内页
-f:显示启动后创建的进程总数
-m:显示slab信息
-n:头信息仅显示一次
-s:以表格方式显示事件计数器和内存状态
-d:报告磁盘状态
-p:显示指定的硬盘分区状态
-S:输出信息的单位

free

  • free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

选项

-b:以Byte为单位显示内存使用情况
-k:以KB为单位显示内存使用情况
-m:以MB为单位显示内存使用情况
-h:以GB为单位显示内存使用情况
-o:不显示缓冲区调节列
-s<间隔秒数>:持续观察内存使用状况
-t:显示内存总和列

total:内存总数;
used:已经使用的内存数;
free:空闲的内存数;
shared:当前已经废弃不用;
buff/cache:缓存内存数;
available:缓存内存数。

uptime

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

示例

[root@CentOS7 ~]# uptime
 20:16:17 up 55 min,  1 user,  load average: 0.09, 0.16, 0.11

[root@CentOS7 ~]# 

watch

  • watch命令以周期性的方式执行给定的指令,指令输出以全屏方式显示。可监测一个命令的运行结果。

选项

-n:指定指令执行的间隔时间(秒)
-d:高亮显示指令输出信息不同之处
-t:不显示标题

lsof

  • lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。

选项

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

示例

没有

sleep

  • sleep命令暂停指定的时间。
  • 时间长度,后面可接 s、m、h 或 d,其中 s 为秒,m 为 分钟,h 为小时,d 为日数。

usleep

  • usleep功能把进程挂起一段时间, 单位是微秒(百万分之一秒)。

    usleep 1000000 等同于 sleep 1


ping

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

常用选项

-q 不显示任何传送封包的信息,只显示最后的结果
-n 只输出数值
-R 记录路由过程
-c count 总次数
-w 等待时长
-i 时间间隔
-t 存活数值:设置存活数值TTL的大小

示例

ping一次且一秒,测试该IP是否可访问

[root@CentOS7 data]# ping -c 1 -w 1 192.168.124.5 &> /dev/null && echo "It's Up" ||echo "It's Down"
It's Up

[root@CentOS7 data]#

ping一个不通或不存在的IP

[root@CentOS7 data]# ping -c 1 -w 1 172.156.111.5 &> /dev/null && echo "It's Up" ||echo "It's Down"
It's Down

[root@CentOS7 data]# 

wall

  • wall命令用于向系统当前所有打开的终端上输出信息。通过wall命令可将信息发送给所有同意接收公众信息的终端机用户

示例

终端一

root用户向所有用户发送即将关闭终端警告

[root@CentOS7 ~]# wall <<EOF
> hello everybody
> The system is about to be maintained!
> Please exit the terminal in five minutes.
> EOF

Broadcast message from root@CentOS7.7.localdomain (Mon Oct 28 21:04:26 2019):

hello everybody
The system is about to be maintained!
Please exit the terminal in five minutes.

[root@CentOS7 ~]#

终端二普通用户收到

[td@CentOS7 ~]$ 
Broadcast message from root@CentOS7.7.localdomain (Mon Oct 28 21:04:26 2019):

hello everybody
The system is about to be maintained!
Please exit the terminal in five minutes.

终端三普通用户收到

[mage@CentOS7 ~]$ 
Broadcast message from root@CentOS7.7.localdomain (Mon Oct 28 21:04:26 2019):

hello everybody
The system is about to be maintained!
Please exit the terminal in five minutes.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值