[RH124] 8-进程

1.查看系统进程

图形化界面:系统工具(system tools)---->系统监视器(system monitor)

 

 

2.进程的概念

PID:Process id,进程ID。进程的唯一标识。

子进程:也是一个独立的进程,当创建子进程的时候,子进程是对父进程的一个完整复制。

信号:父进程要对子进程进行操作,是通过信号来告诉子进程的。

kill -l:查看所有信号。

常用信号:

1.SIGHUP:挂起信号。
2.SIGHINT:平时执行的Ctrl+C。
9.SIGKILL:强制杀死进程。
15.SIGTERM:普通的结束进程,但有时候杀不掉,就要使用9号信号。

例如:

我们打开一个终端,终端会启动一个Shell子进程。
在我们关闭终端时,相应的SHELL子进程也会结束。

3.查看进程

ps:使用该名称查看进程信息。如果不加选项,那么查看的只是当前终端的进程。

ps aux:查看所有进程,UNIX风格。推荐使用,信息更多。a表示所有,u表示显示进程所有者用户,x表示显示运行在终端的进程和所有后台进程,如果不写x,只会显示运行在终端的进程。

ps -ef:同上,Linux风格。

第1列:USER,指进程所属用户。
第2列:PID,进程号。
第3列:%CPU,CPU占用率。
第4列:%MEM,内存占用率。
第5列:VSZ,消耗的线性内存。
第6列:RSS,消耗的真实的物理内存。
第7列:TTY,属于哪个终端,如果是"",表示后台进程。
第8列:STAT,进程的状态。如下图:

第9列:START,进程启动时间。
第10列:TIME,进程运行了多少时间。
第11列:COMMAND,使用什么命令运行的该进程,或者是由什么引起的该进程。

自定义需要查看的列:

 ps -ex -o user,pid,%cpu,%mem :自定义查看所属用户、pid、CPU占用率、内存占用率。

查看一个进程运行在哪个CPU上:

 cat /dev/zero > /dev/null :/dev/zero是取之不尽的,写到/dev/null黑洞,形成一个死循环。

 ps mo pid,psr `pgrep cat` :查看cat进程运行在哪个CPU。

小技巧:

 ps aux | grep -v grep | grep bash :从进程中过滤出bash进程,但是会默认过滤出grep进程,我们使用grep -v grep将grep进程反向过滤掉。

查询某个进程的PID:

 pgrep cat :查询包含"cat"字符进程的PID。匹配cat字符。

 pidof cat :查询cat进程的PID。完全匹配cat。

杀死进程:

 kill -9 pid : kill -9 `pgrep cat` 或 kill -9 `pidof cat` 。

 killall -9 cat :通过名字杀死进程。

pkill:

当某个用户正在登录状态,我们想使用userdel删除该用户,会提示用户正在登录,无法删除。

此时,我们可以使用pkill来把该用户踢出登录。

1) w | grep bob :查看bob状态,假设在终端tty2上登录。

2) pkill -kill -t tty2 :把终端tty2杀死,就是把在tty2上的bob用户踢掉线。

3) userdel -r bob :删除bob用户和相关目录文件。

4) id bob :查询bob,已经不存在了。

查看进程树状关系图:

pstree:

4.后台运行(&符号)

前台:终端会被占用。

后台:终端不会被阻塞。使用jobs查看后台程序。

前台切到后台:

前台运行程序时,终端被占用,但是我们想执行其他命令:

1.使用Ctrl+z,可以把前台程序切换到后台运行,但默认会是停止的。

2.使用jobs,查看后台的程序:

3.使用"bg 编号"将停止的进程在后台运行起来。

后台切到前台:

1.使用jobs查看后台进程编号。

2.使用"fg 编号"来把后台程序切换到前台,切换后终端会被占用。

 

直接在后台运行程序:

在运行命令的最后加上"&"符号,程序就会在后台运行了。

如果程序出现一切静态、日志类的东西,不用关心,直接回车就可以了。例如:

杀死后台程序:

1.先使用jobs查看后台进程编号。

2.使用 kill -9 %编号 杀死进程。千万注意,%1和1是不一样的,前者是后台程序的编号,后者是PID。

(注:PID=1的进程是所有进程的父进程, 在RHEL7中叫systemd,在RHEL6中叫init 

5.nohup

问题:默认情况下,我们在终端里运行的程序(无论是前台还是后台),都属于该终端的子进程

这样的话,我们如果关闭该终端,这些子进程都会被结束。

目的:如果我们使用远程连接(CRT或XSHELL等工具),需要执行一个时间比较长的程序,而我们又不想等待。那么,我们可以使用nohup。

如何使用: nohup firefox & 默认会把程序的输出放到 nohup.out (运行命令时所在目录中)中,我们可以重定向该日志输出文件。例如 nohup firefox & > output.log 

在不使用nohup时,用pstree查看:

 |-gnome-terminal--+-bash---su---bash-+-firefox---45*[{firefox}] 

使用nohup时:

|-firefox-+-Web Content---19*[{Web Content}]

        |         `-43*[{firefox}]

这样firefox就不属于任何终端了。

6.动态查看进程

top命令

top命令默认3s刷新一次。

 top -d 1 :设置1s刷新一次。

按数字1:可以显示多个CPU的信息。

 

===

原文地址:https://www.cnblogs.com/leokale-zz/p/12531598.html