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'程序。