在Linux中,所有的进程都必须由另一个进程创建。应用程序只能通过克隆自己来产生新进程,因此,子进程是父进程的克隆体。
- 进程标识,PID,Precess IDentifier
- 父进程标识,PPID,Parent PID
- 群组标志,GID,Group ID,进程创建者所属组的ID。
- 优先级,优先级高的进程能够更早地被处理,并获得更多的处理时间。
- 谦让度,高谦让度意味着低优先级。进程管理工具让用户设置的总是谦让度
- BASH 作业管理:
- 命令后添加‘&’,在后台运行进程
- Ctrl +C 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。
- Ctrl + Z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。(后台运行)
- 管理后台作业:
- jobs 显示当前暂停的进程
- bg %N 使第N个任务在后台运行(默认对最后一个进程操作)
- fg %N 使第N个任务在前台运行(默认对最后一个进程操作)
一、进程监控
ps Precess Status. / report a Snapshot of the current Pocesses(静态监控)
$ps aux # To see every process on the system using BSD syntax(显示当前系统上运行的所有进程的信息)
```
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
alex 16781 0.0 0.0 9908 3684 pts/1 S+ 22:32 0:00 man ps
USER 进程创建者的用户名
PID 进程的ID号
%CPU 进程占用CPU百分比
%MEM 进程占用内存百分比(memory)
VSZ 进程占用的虚拟内存大小
RSS 内存中页的数量
TTY 进程所在终端的ID号
STAT 进程状态:
R 正在运行/可运行 Run
D 睡眠中(不可被唤醒,通常是在等待I/O设备)
S 睡眠中(可以被唤醒) Sleep
T 停止(由于收不到信号or被跟踪)
Z 僵进程(已经结束而没有释放系统资源的进程)
常用的附加标志:
< 进程拥有比普通优先级高的优先级
N 进程拥有比普通优先级低的优先级
L 有些页面被锁在内存中 Lock
s 会话的先导进程 session
START 进程启动的时间
TIME 进程已经占用的CPU时间
COMMAND 命令&参数
```
$ps lax # 提供PPID和NI(谦让度)
```
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
0 1000 16781 16778 20 0 9908 3684 do_wai S+ pts/1 0:00 man ps
```
top display Linux processes(动态监控:默认占满一页,并且在默认情况下每10s更新一次。使用CPU最多的程序会排在最前面)
q Quit
```
alt + up PgUp
alt + down PgDn
alt + Left Home
alt + Right End
```
kill send a signal to a process(向进程发送信号。信号名的前缀SIG可以省略,即SIGTERM=TERM)
kill [option] pid
-l --list List signal names(显示所有信号及其编号)
- -s --signal Specify the SIGNAL to be sent. The signal can be specified by using name or number.
```
0 EXIT
1 HUP 挂起
Ctrl + C 2 INT 中断
Ctrl + \ 3 QUIT 退出
9 KILL 杀死
15TERM 软件终止(The default signal for kill)
18CONT 程序的再启动指令(19STOP后再重新启动)
Ctrl + Z 19STOP 软件停止(挂起)
使用 trap "" TERM 可以忽略TERM信号。
KILL信号永远不能被程序忽略。(sudo kill -9 pid 或 sudo kill -KILL pid 或 sudo kill -SIGKILL pid)
```- 如果用户不采取任何行动,那么新进程将从其父进程那里继承谦让度。
- 进程的属主可以提高其谦让度,但不能降低其谦让度。(这种限制保证了低优先级的进程不会派生出高优先级的子进程)
- root用户可以任意设置进程的优先级
nice run a program with modified scheduling priority(在启动程序时设置其谦让度。谦让度的值应该在-20~+19之间浮动)
nice [option] COMMAND
nice 不带任何参数的nice查看默认谦让值(通常为0)
-n N --adjustment add integer N to the niceness(default 10 without -n)。(默认谦让值加上N)
renice alter priority of running processes(在进程运行是调整其谦让度。直接设置为N)
renice N -p PID
-n --priority
-g --group
-p --pid
-u --user二、/PROC 文件系统
- Linux 内核提供了一种在运行时访问内核内部数据结构、改变内核设置的机制,这通过 /PROC 完成。
- /PROC 是一个伪文件系统,它只存在于内存当中,而不占用外存空间。
- 它以文件系统的方式为访问系统内核数据的操作提供接口。
- 系统中当前运行的每一个进程都有对应的一个目录在 /proc 下,以进程的PID号为目录名,它们是读取进程信息的接口。(ps和top命令就是从这个地方读取数据)
ls /proc 查看/proc目录 /proc/1 包含着init进程的信息。该进程由内核在系统启动时创建,是除了那个时候同时创建的几个内核进程之外的所有进程的父进程。 /proc/stat 包含了进程的状态信息,ps 命令通过读取这个文件向用户提供输出。 /proc/sys/ 可写,可以通过它来访问or修改内核的参数 /proc/net/和scsi/ 依赖于内核的配置。(如果系统不支持scsi,则该目录不存在)
- Linux 中所有的内容都是以文件的形式管理的。即 "Everything is a file."(e.g. 命令
uname -a所返回内容,可在文件/proc/version得到)



京公网安备 11010502036488号