每当我们在Unix中发出命令时,它都会创建或启动一个新进程,比如使用 ls 命令列出目录内容时,系统就启动了一个进程。
操作系统通过称为 pid 或进程ID 的五位数ID号跟踪进程,系统中的每个进程都有唯一的 pid 。
由于所有可能的数字都用完,下一个pid滚动或重新开始,因此pid最终会重复。在任何时间点,系统中都不存在两个具有相同pid的进程,因为它是Unix用来跟踪每个进程的pid。
当启动一个进程(运行命令)时,有两种方法可以运行它-
默认情况下,您启动的每个进程都在前台运行,它从键盘获取输入并将其输出发送到屏幕。
您可以通过 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 learnfk 6738 3662 0 10:23:03 pts/6 0:00 first_one learnfk 6739 3662 0 10:22:54 pts/6 0:00 second_one learnfk 3662 3657 0 08:10:53 pts/6 0:00 -ksh learnfk 6892 3662 4 10:51:50 pts/6 0:00 ps -f
这是 ps -f 命令显示的所有字段的描述-
Sr.No. | Column & 描述 |
---|---|
1 | UID 该进程所属的用户标识(运行它的人) |
2 | PID 进程ID |
3 | PPID 父进程ID(启动它的进程的ID) |
4 | C 进程的CPU利用率 |
5 | STIME 进程开始时间 |
6 | TTY 与进程关联的终端类型 |
7 | TIME 进程占用的CPU时间 |
8 | CMD 启动此进程的命令 |
还有其他选项可以与 ps 命令一起使用-
Sr.No. | Option & 描述 |
---|---|
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 learnfk 6738 3662 0 10:23:03 pts/6 0:00 first_one learnfk 6739 3662 0 10:22:54 pts/6 0:00 second_one learnfk 3662 3657 0 08:10:53 pts/6 0:00 -ksh learnfk 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 命令是一个非常有用的工具,用于快速按各种排序显示进程,它实时显示有关物理和虚拟内存,CPU使用率,平均负载和繁忙进程的信息。
这是运行top命令并查看不同进程的CPU使用率统计信息的简单语法-
$top
Processes: 406 total, 3 running, 403 sleeping, 2857 threads 17:55:28
Load Avg: 1.85, 2.17, 2.24 CPU usage: 12.99% user, 9.36% sys, 77.63% idle
SharedLibs: 342M resident, 109M data, 43M linkedit.
MemRegions: 212785 total, 4455M resident, 121M private, 1780M shared.
PhysMem: 15G used (1733M wired), 322M unused.
VM: 141T vsize, 2965M framework vsize, 3860201(0) swapins, 4421841(0) swapouts.
Networks: packets: 44966238/34G in, 47274990/18G out. Disks: 33328935/726G read, 35275382/875G written.
PID COMMAND %CPU TIME #TH #WQ #PORTS MEM PURG CMPRS PGRP PPID STATE
141* WindowServer 40.5 19:07:26 23 6 5429+ 1203M- 6816K+ 519M 141 1 sleeping
438* Terminal 33.8 31:01.20 13/1 5 613+ 330M+ 8928K+ 1093M- 438 1 running
163* HBuilderX 16.5 68:14.36 67 9 612- 601M+ 0B 1785M- 163 1 sleeping
0* kernel_task 15.5 09:18:56 468/9 0 0 8000K+ 0B 0B 0 0 running
2407* WizNote Help 12.8 05:51:18 18 1 361 647M 0B 1720M- 471 471 sl
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)
PPT设计进阶 · 从基础操作到高级创意 -〔李金宝(Bobbie)〕