Linux网络操作系统项目教程(RHEL 7.4/CentOS 7.4)(第3版)(微课版)
上QQ阅读APP看书,第一时间看更新

2.4 任务4 熟练使用进程管理类命令

进程管理类命令是对进程进行各种显示和设置的命令。

1. ps命令

ps命令主要用于查看系统的进程。该命令的语法为

 ps  [参数] 

ps命令的常用参数选项如下。

•-a:显示当前控制终端的进程(包含其他用户的)。

•-u:显示进程的用户名和启动时间等信息。

•-w:宽行输出,不截取输出中的命令行。

•-l:按长格形式显示输出。

•-x:显示没有控制终端的进程。

•-e:显示所有的进程。

•-t n:显示第n个终端的进程。

例如:

 [root@RHEL7-1 ~]# ps -au 
 USER  PID   %CPU %MEM  VSZ   RSS  TTY   STAT START TIME  COMMAND 
 root  2459  0.0  0.2   1956  348  tty2  Ss+  09:00  0:00  /sbin/mingetty tty2 
 root  2460  0.0  0.2   2260  348  tty3  Ss+  09:00  0:00  /sbin/mingetty tty3 
 root  2461  0.0  0.2   3420  348  tty4  Ss+  09:00  0:00  /sbin/mingetty tty4 
 root  2462  0.0  0.2   3428  348  tty5  Ss+  09:00  0:00  /sbin/mingetty tty5 
 root  2463  0.0  0.2   2028  348  tty6  Ss+  09:00  0:00  /sbin/mingetty tty6 
 root  2895  0.0  0.9   6472 1180  tty1  Ss   09:09  0:00   bash  

提示:ps通常和重定向、管道等命令一起使用,用于查找出所需的进程。输出内容的第一行的中文解释是:进程的所有者;进程ID号;运算器占用率;内存占用率;虚拟内存使用量(单位是KB);占用的固定内存量(单位是KB);所在终端进程状态;被启动的时间;实际使用CPU的时间;命令名称与参数等。

2. pidof命令

pidof命令用于查询某个指定服务进程的PID值,该命令格式为

 pidof [参数] [服务名称] 

每个进程的进程号码值(PID)是唯一的,因此可以通过PID来区分不同的进程。例如,可以使用如下命令来查询本机上sshd服务程序的PID:

 [root@l RHEL7-1 ~]# pidof sshd 
 1161 

3. kill命令

前台进程在运行时,可以用“Ctrl+C”组合键来终止它,但后台进程无法使用这种方法终止,此时可以使用kill命令向进程发送强制终止信号,以达到目的,例如:

 [root@RHEL7-1 dir1]# kill -l 
  1) SIGHUP        2) SIGINT       3) SIGQUIT      4) SIGILL 
   5) SIGTRAP       6) SIGABRT      7) SIGBUS       8) SIGFPE 
  9) SIGKILL      10) SIGUSR1     11) SIGSEGV    12) SIGUSR2 
 13) SIGPIPE      14) SIGALRM     15) SIGTERM    17) SIGCHLD 
 18) SIGCONT        19) SIGSTOP     20) SIGTSTP     21) SIGTTIN 
 22) SIGTTOU        23) SIGURG      24) SIGXCPU     25) SIGXFSZ 
 26) SIGVTALRM     27) SIGPROF     28) SIGWINCH    29) SIGIO 
 30) SIGPWR         31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1 
 (略) 

上述命令用于显示kill命令所能够发送的信号种类。每个信号都有一个数值对应,例如SIGKILL信号的值为9。kill命令的格式为

 kill  [参数]   进程1  进程2 …… 

参数选项-s一般跟信号的类型。

例如:

 [root@RHEL7-1 ~]# ps 
   PID  TTY      TIME  CMD 
  1448  pts/1     00:00:00  bash 
  2394  pts/1     00:00:00  ps 
 [root@RHEL7-1 ~]# kill -s SIGKILL 1448  或者//kill  -9 1448 
 //上述命令用于结束bash进程,会关闭终端 

4. killall命令

killall命令用于终止某个指定名称的服务所对应的全部进程,该命令格式为

 killall [参数] [进程名称] 

通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这些进程会比较麻烦,此时可以使用killall命令来批量结束某个服务程序带有的全部进程。下面以httpd服务程序为例,来结束其全部进程。由于RHEL 7系统默认没有安装httpd服务程序,所以大家此时只需看操作过程和输出结果即可,等学习了相关内容之后再来实践。

 [root@RHEL7-1 ~]# pidof httpd 
 13581 13580 13579 13578 13577 13576 
 [root@RHEL7-1 ~]# killall -9 httpd 
 [root@RHEL7-1 ~]# pidof httpd 
 [root@RHEL7-1 ~]#  

注意:如果在系统终端中执行一个命令后想立即停止它,可以同时按下“Ctrl + C”组合键(生产环境中比较常用的一个组合键),这样将立即终止该命令的进程。或者,如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加上一个&符号,这样命令将进入系统后台来执行。

5. nice命令

Linux系统有两个和进程有关的优先级。用“ps -l”命令可以看到两个域:PRI和NI。PRI是进程实际的优先级,它是由操作系统动态计算的。这个优先级的计算和NI值有关。NI值可以被用户更改,NI值越高,优先级越低。一般用户只能加大NI值,只有超级用户才可以减小NI值。NI值被改变后,会影响PRI。优先级高的进程被优先运行,默认时进程的NI值为0。nice命令的用法如下:

 nice  -n  程序名  //以指定的优先级运行程序 

其中,n表示NI值,正值代表NI值增加,负值代表NI值减小。

例如:

 [root@RHEL7-1 ~]# nice --2 ps -l 

6. renice命令

renice命令是根据进程的进程号来改变进程的优先级的。renice的用法如下:

 renice  n   进程号 

其中,n为修改后的NI值。

例如:

 [root@RHEL7-1 ~]# ps -l 
 F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD 
 0 S     0  3324  3322  0  80   0 - 27115 wait   pts/0    00:00:00 bash 
 4 R     0  4663  3324  0  80   0 - 27032 -      pts/0    00:00:00 ps 
 [root@RHEL7-1 ~]# renice -6 3324 

7. top命令

拓展阅读

6. top命令

和ps命令不同,top命令可以实时监控进程的状况。top屏幕自动每5秒刷新一次,也可以用“top -d 20”,使得top屏幕每20秒刷新一次。

8. bg、jobs、fg命令

bg命令用于把进程放到后台运行,例如:

 [root@RHEL7-1 ~]# bg find 

jobs命令用于查看在后台运行的进程,例如:

 [root@RHEL7-1 ~]# find / -name aaa & 
 [1] 2469 
 [root@RHEL7-1 ~]# jobs 
 [1]+  Running                 find / -name aaa & 

fg命令用于把在后台运行的进程调到前台,例如:

 [root@RHEL7-1 ~]# fg find 

9. at命令

如果想在特定时间运行Linux命令,可以将at添加到语句中。语法是at后面跟着希望命令运行的日期和时间,然后命令提示符变为at>,这样就可以输入在上面指定的时间运行的命令。

例如:

 [root@RHEL7-1 ~]# at 4:08 PM Sat 
 at> echo 'hello' 
 at> CTRL+D 
 job 1 at Sat May  5 16:08:00 2018 

这将会在周六下午4:08运行echo 'hello'程序。