UNIX 进程管理

每当我们在Unix中发出命令时,它都会创建或启动一个新进程,比如使用 ls 命令列出目录内容时,系统就启动了一个进程。

操作系统通过称为 pid 或进程ID 的五位数ID号跟踪进程,系统中的每个进程都有唯一的 pid 。

由于所有可能的数字都用完,下一个pid滚动或重新开始,因此pid最终会重复。在任何时间点,系统中都不存在两个具有相同pid的进程,因为它是Unix用来跟踪每个进程的pid。

开始进程

当启动一个进程(运行命令)时,有两种方法可以运行它-

  • 前台进程(Foreground Processes)
  • 后台进程(Background Processes)

前台进程

默认情况下,您启动的每个进程都在前台运行,它从键盘获取输入并将其输出发送到屏幕。
您可以通过 ls 命令看到这种情况。如果您希望列出当前目录中的所有文件,则可以使用以下命令-

$ls ch*.doc

这将显示所有文件,其文件名以 ch 开头,以 .doc 结尾-

ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc

后台进程

在后台运行进程的优点是您可以运行其他命令,启动后台进程的最简单方法是在命令末尾添加”&”号。

$ls ch*.doc &

这将显示所有名称以 ch 开头并以 .doc 结尾的文件-

ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc

列出运行进程

通过运行 ps (进程状态)命令,很容易查看自己的进程,如下所示:

$ps
PID       TTY      TIME        CMD
18358     ttyp3    00:00:00    sh
18361     ttyp3    00:01:31    abiword
18789     ttyp3    00:00:00    ps

ps的最常用标志之一是 -f 选项,它提供了更多信息,如以下示例所示-

$ps -f
UID      PID  PPID C STIME    TTY   TIME CMD
amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f

这是 ps -f 命令显示的所有字段的描述-

No. 名称 描述
1 UID 该进程所属的用户标识(运行它的人)
2 PID 进程ID
3 PPID 父进程ID(启动它的进程的ID)
4 C 进程的CPU利用率
5 STIME 进程开始时间
6 TTY 与进程关联的终端类型
7 TIME 进程占用的CPU时间
8 CMD 启动此进程的命令

还有其他选项可以与 ps 命令一起使用-

No. 选项 描述
1 -a 显示有关所有用户的信息
2 -x 显示有关无终端的进程的信息
3 -u 显示其他信息,如-f选项
4 -e 显示扩展信息

停止进程

结束进程可以用几种不同的方式完成,通常,从基于控制台的命令中发送CTRL + C击键将退出该命令。
如果某个进程在后台运行,则应使用 ps 命令获取其Job ID。之后,您可以使用 kill 命令杀死进程,如下所示:

$ps -f
UID      PID  PPID C STIME    TTY   TIME CMD
amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f
$kill 6738
Terminated

在这里, kill 命令终止 first_one 进程。如果某个进程忽略了常规的kill命令,则可以使用 kill -9 ,后跟进程ID,如下所示-

$kill -9 6738
Terminated

父/子进程

每个unix进程都有两个分配给它的ID号:进程ID(pid)和父进程ID(ppid),系统中的每个用户进程都有一个父进程。
您运行的大多数命令都将Shell作为其父级。检查 ps -f 示例,其中此命令同时列出了进程ID和父进程ID。

僵尸和孤立进程

通常,当子进程被杀死(kill)时,父进程会通过 SIGCHLD 信号进行更新。然后,父进程可以执行其他任务或根据需要重新启动新的子进程。
有时父进程会在其子进程被杀死之前被杀死。在这种情况下,所有进程的父进程 init 进程将成为新的PPID,这些进程称为孤立进程。
当进程被杀死时, ps 列表仍可能显示具有 Z 状态,这是一个僵尸或不存在的进程,这些进程不同于孤立进程,他们已完成执行。

守护进程

守护程序是与系统相关的后台进程,通常在具有其他进程的root权限下运行。
守护程序没有控制终端。它无法打开/dev/tty 。如果您执行” ps -ef” 并查看 tty 字段,则所有守护程序将为 tty 。
准确地说,守护程序是在后台运行的进程,如果有需要长时间处理的程序,则推荐将其设为守护程序并在后台运行。

Top命令

top 命令是一个非常有用的工具,用于快速按各种排序显示进程,它实时显示有关物理和虚拟内存,CPU使用率,平均负载和繁忙进程的信息。

这是运行top命令并查看不同进程的CPU使用率统计信息的简单语法-

$top
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by bytekits.com,汇天下文字,成非凡梦想!!!