技术员联盟提供win764位系统下载,win10,win7,xp,装机纯净版,64位旗舰版,绿色软件,免费软件下载基地!

当前位置:主页 > 教程 > 服务器类 >

linux之进程

来源:技术员联盟┆发布时间:2018-07-31 12:00┆点击:

  在linux每执行一个二进制文件都会产生一个进程并生成一个进程PID。进程除了自身的ID外,还有父进程ID(ppid),所有进程的祖先进程是同一个进程,它叫做init进程,PID为1。

  当用户从一个终端登陆时,便获得一个此次执行的bash进程的PID。用户执行的每一条指令都是这个PID的子进程。

  linux通过fork-and-exec的流程来产生子进程:首先会通过父进程以复制 (fork) 的方式产生一个一模一样的子进程, 然后被复制出来的子进程再以 exec 的方式来运行实际要进行的程序,最终就成为一个子进程的存在。

  僵尸进程:当该程序应该已经运行完毕,或者是因故应该要终止了,但是该程序的父程序却无法完整的将该程序结束掉,而造成那个程序一直存在内存当中,形成僵尸进程。

  进程后台运行与暂停

  通过在命令结尾加上&,可以时命令在后台运行而不影响前台。

  通过[ctrl]-z可以将前台正在运行的进程暂停。

  jobs

  查看当前后台工作状态:

  选项与参数:

  -l :除了列出 job number 与命令串之外,同时列出 PID 的号码;

  -r :仅列出正在背景 run 的工作;

  -s :仅列出正在背景当中暂停 (stop) 的工作。[zsp@sky]~$ vim a

  [1]+ 已停止 vim a

  [zsp@sky]~$ vim b

  [2]+ 已停止 vim b

  [zsp@sky]~$ jobs

  [1]- 已停止 vim a

  [2]+ 已停止 vim b

  那个+代表最近一个被暂停到后台的工作,且当执行fg命令时在后台下默认会被取用的那个工作。-代表最近最后第二个被暂停到后台中的工作号码

  fg

  将后台的工作拿出来处理

  %可以指定处理哪一个后台任务

  [zsp@sky]~$ fg

  vim b

  [2]+ 已停止 vim b

  [zsp@sky]~$ jobs

  [1]- 已停止 vim a

  [2]+ 已停止 vim b

  [zsp@sky]~$ fg %1

  vim a

  [1]+ 已停止 vim a

  [zsp@sky]~$ jobs

  [1]+ 已停止 vim a

  [2]- 已停止 vim b

  bg

  让一个被暂停的任务在后台继续运行

  kill

  停止或重启后台任务

  -l :这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些?

  -1 :重新读取一次参数的配置文件,启动被终止的进程;

  -2 :代表与由键盘输入 [ctrl]-c 同样的动作;

  -9 :立刻强制删除一个工作;

  -15:以正常的程序方式终止一项工作。与 -9 是不一样的。

  nohup

  脱机执行后台进程

  当后台任务正在执行时,若注销登录,那么任务也将停止。可以使用nohup来使任务在注销后继续执行。

  nohup [命令与参数] &

  ps

  将某个时间点的进程运行情况列下来

  选项与参数:

  -A :所有的 process 均显示出来,与 -e 具有同样的效用;

  -a :不与 terminal 有关的所有 process ;

  -u :有效使用者 (effective user) 相关的 process ;

  x :通常与 a 这个参数一起使用,可列出较完整资讯。

  输出格式规划:

  l :较长、较详细的将该 PID 的的资讯列出;

  j :工作的格式 (jobs format)

  -f :做一个更为完整的输出。

  常用:

  ps aux 列出系统所有的程序数据

  ps -l 仅列出自己 bash 程序[zsp@sky]~$ ps -l

  F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

  0 S 1000 1955 1948 0 80 0 - 6086 wait pts/0 00:00:00 bash

  0 R 1000 2917 1955 0 80 0 - 2530 - pts/0 00:00:00 ps

  从左到右各个字段意思

  F:代表这个程序标志,说明这个程序的权限,常见号码有:

  若为 4 表示此程序的权限为 root ;

  若为 1 则表示此子程序仅进行复制(fork)而没有实际运行(exec)。

  S:代表这个程序的状态 (STAT),主要的状态有:

  R (Running):该程序正在运行中;

  S (Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒(signal)。

  D :不可被唤醒的睡眠状态,通常这支程序可能在等待 I/O 的情况(ex>列印)

  T :停止状态(stop),可能是在工作控制(背景暂停)或除错 (traced) 状态;

  Z (Zombie):僵尸状态,程序已经终止但却无法被移除至内存外。

  UID/PID/PPID:代表此程序被该 UID 所拥有/程序的 PID 号码/此程序的父程序 PID 号码』

  C:代表 CPU 使用率,单位为百分比;

  PRI/NI:Priority/Nice 的缩写,代表此程序被 CPU 所运行的优先顺序,数值越小代表该程序越快被 CPU 运行。

  ADDR/SZ/WCHAN:都与内存有关,ADDR 是 kernel function,指出该程序在内存的哪个部分,如果是个 running 的程序,一般就会显示-/ SZ 代表此程序用掉多少内存 / WCHAN 表示目前程序是否运行中,同样的, 若为 - 表示正在运行中。

  TTY:登陆者的终端机位置,若为远程登陆则使用动态终端介面 (pts/n);

  TIME:使用掉的 CPU 时间,注意,是此程序实际花费 CPU 运行的时间,而不是系统时间;

  CMD:就是 command 的缩写,造成此程序的触发程序之命令为何。[zsp@sky]~$ ps aux | head -n 2

  USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

  root 1 0.0 0.1 24440 2416 ? Ss 16:19 0:01 /sbin/init

  root 2 0.0 0.0 0 0 ? S 16:19 0:00 [kthreadd]

  从左到右各个字段意思

  USER:该 process 属於那个使用者帐号的?

  PID :该 process 的程序识别码。

  %CPU:该 process 使用掉的 CPU 资源百分比;

  %MEM:该 process 所占用的实体内存百分比;

  VSZ :该 process 使用掉的虚拟内存量 (Kbytes)

  RSS :该 process 占用的固定的内存量 (Kbytes)