[RH124] 8-进程

1.查看系统进程

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

 

2.进程的概念

PIDProcess 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列:%CPUCPU占用率。

4列:%MEM,内存占用率。

5列:VSZ,消耗的线性内存。

6列:RSS,消耗的真实的物理内存。

7列:TTY,属于哪个终端,如果是"",表示后台进程。

8列:STAT,进程的状态。如下图:

9列:START,进程启动时间。

10列:TIME,进程运行了多少时间。

11列:COMMAND,使用什么命令运行的该进程,或者是由什么引起的该进程。

自定义需要查看的列:

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

查看一个进程运行在哪个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 grepgrep进程反向过滤掉。

查询某个进程的PID

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

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

杀死进程:

kill -9 pidkill -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 %编号"杀死进程。千万注意,%11是不一样的,前者是后台程序的编号,后者是PID

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

5.nohup

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

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

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

那么,我们可以使用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的信息。

猜你喜欢

转载自www.cnblogs.com/leokale-zz/p/12531598.html