进程的概念
q 概念:一个进程是一个程序的一次执行的过程。
q 操作系统通过进程来控制对CPU和其他系统资源的访问,并且使用进程来决定在CPU上运行哪个程序、运行多久。
q Linux系统的一个重要特点:可以同时启动多个进程。
q 进程和程序不同:
? 程序是静态的,是保存在磁盘上的可执行代码和数据的集合;
? 进程是动态的,是Linux系统的基本调度单位。
q 父进程和子进程
? 一个进程创建新进程称为创建了子进程(child process)。
? 创建子进程的进程称为父进程。
q 进程号
? PID:Process Identity number。一个PID唯一地标识一个进程。
? PPID:Parent Process ID。进程的父进程号。
q Init进程
? 内核启动后的第一个进程,其PID=1
? 扮演终结父进程的角色,所有进程追溯其祖先最终都会落到init进程身上。
q 因为init进程永远不会被终止,所以系统总是可以确信它的存在,并在必要的时候以它为参照。如果某个进程在它衍生出来的全部子进程结束之前被终止,此时那些失去了父进程的子进程就都会以init作为它们的父进程。
查看命令
ps [-options]
|
列出当前进程清单,不跟任何选项表示查看系统中属于自己的进程 显示的进程列表是一个静态列表 –ef:察看当前系统中运行的所有进程 –aux:显示系统中所有用户进程及其所有者,并显示详细的进程信息
|
top [-] [d delay] [q] [C] [c] [S] [s] [i] [n]
|
列出进程清单 显示的是可根据真实情况 , 定时更新的运行进程列表 d delay:指定更新的时间间隔(delay),以秒计算。 q 交互命令 [Space]立即刷新显示。 d 设置刷新进程的时间间隔,你会被提示输入一个数(秒) q 退出top命令。 k 杀死某进程。你会被提示输入进程 ID 以及要发送给它的进程号。 h 显示帮助屏幕 n 显示的进程数量。你会被提示输入数量。 u 按用户排序。 M 按内存用量排序。 P 按CPU 用量排序。 |
jobs [-options] |
用于显示和控制后台正在执行的和被挂起的任务序列 -l:显示后台任务的进程号与讯息。 -p:只显示后台任务的 PID。 -n:显示上次通知用户后,执行状态有更动的后台任务状态。 -r:显示执行中的后台任务。 -s:显示暂停执行的后台任务。 |
进程的启动方式
q 执行一个程序à启动了一个进程
q 启动进程的两个主要途径:
? 手工启动:
当时设置当时启动;
? 调度启动:
用户可事先进行设置安排,指定任务运行的时间或场合,到时候由系统自动启动进程完成此项任务。
手工启动的两种方式
q 前台启动
? 启动一个进程后,如果不中断或挂起该进程,用户会一直被禁止与 Shell 进行交互,直至该进程执行结束。
? 并非单进程状态。
? 经常用于一般Linux命令的执行,和一些不太耗时的进程的启动。
q 后台启动
? 启动进程后,用户仍可以与Shell进行交互。
? 可用于一些耗时长的作业运行。
前台进程和前台启动
q 由前台启动的进程为前台进程
q 前台进程在执行过程中与屏幕键盘等终端进行交互,对终端有完全的控制权,直到该进程被终止或者中断
q 前台启动举例:
$cat file1
q 前台进程的停止:
<Ctrl+c>
q 前台进程的挂起:
<Ctrl+z>
后台进程和后台启动
q 由后台启动的进程称为后台进程
q 后台进程在执行过程中不与终端进行通信,若要察看他的执行状况必须通过相关的进程管理命令
q 对于耗时长的进程,不应该让它在前台执行,而应该交给后台执行。
q 后台进程的启动方法:
$command &
q 终止和挂起后台进程:
使用kill命令
kill [-option] [signal] {PID | %job ID}
–s: 指定需要送出的信号,既可以是信号名也可以是对应数字
signal – 信号。与–s配合使用。不指定则送出信号 15(TERM)。
pid – 要终止的进程号。
job ID – 要终止的进程对应的后台任务编号
n 信号15(TERM)
? 终止进程运行
? 为kill命令的缺省信号
? 经常用于后台进程的终止。
? 当某个进程占用的CPU时间过多,或是某进程已经挂死,可以用这种方法终止其执行。
? 除root用户外,一般用户只能终止属于自己的进程。
n 信号09
? 强制终止进程
注意:kill –l查询kill可以送出的信号列表
01 挂起
02 中断
09 强制终止一个进程
15 (缺省)正常终止一个进程
进程的挂起和恢复
q 进程挂起
? 前台进程的挂起:
<Ctrl+z>
? 后台进程的挂起:
kill –s 01 {PID|%job ID}
q 进程恢复
? 恢复到前台:
fg %jobID
? 恢复到后台:
bg %jobID
使用nohup命令运行后台进程
q 用户退出系统时,一般来说会结束该用户的所有正在运行的程序
q 如果某些后台程序没有执行完,怎么办?
q nohup命令使进程在用户退出后仍能继续执行
q 格式:
nohup {command|script} &
command:命令
script:程序或脚本
{a|b}:a和b中必选一项
q nohup.out文件:
? 存放运行后的所有错误和输出信息。
? 处于用户主目录下。
? test用户:/home/test/nohup.out