Linux中每个进程都有一个独立的进程号PID,系统通过PID操控进程。其中原始进程是init他的PID总是1。
Linux进程的五种状态:
(1)运行:正在运行或在就绪队列中等待
(2)中断:休眠中,正在等待某个事件发生或者等待某个信号
(3)不可中断:收到信号不唤醒和不可运行,一直到有中断发生
(4)僵死:进程已经终止,但是PID还在,直到父进程调用wait4()将其释放
(5)停止:进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号停止
ps(process status)
ps [选项]
显示系统中进程信息,他是显示当前那些进程的快照信息,如果需要动态显示进程信息需要使用top
a:显示所有,包括终端的进程
u:显示进程的所有者
-a:显示所有当前终端下执行的进程
-e:显示所有进程
-l:以长列表形式显示
常与grep组合使用
ps -ef | grep ssh
pstree(process status tree)
以树状方式显示进程的父子关系。使用ASCII字符显示,清晰表达进程之间的关系
pstree [选项]
-a 显示每个进程的完整命令
-c 不是用精简法
-h 标明执行的过程
-l 采用长格式显示树状图
-p 显示进程号
-u 显示用户名称
top命令
top [选项]
动态显示系统正在执行的进程相关信息,包括PID,CPU,内存占用等
-u 批处理
-c 显示整个命令而不是显示命令名
-d 指定两次屏幕信息刷新时间
-i 不显示闲置或僵死的进程
-p制定某个进程PID,监视此进程
-s是top命令在安全模式下运行,去除交互所带来的潜在危险
top交互式命令
c:切换命令名称的是否完整显示
Ctrl+L:擦除并且重写屏幕
f:从当前显示中添加或者删除列
h:显示帮助信息
i:忽略闲置和僵死进程
k:终止一个进程
M:根据驻留内存大小进行排序
P:根据CPU使用排序显示
q:退出程序
搜索进程
pgrep [选项] 进程
通过程序名称或者其他属性查找进程,一般用来判断程序是否正在运行
pidof [选项] 进程名
通过确切的进程名字找到程序的PID
-s:只显示一个pid
ps | grep XXX
通过管道来搜索
控制进程
kill [信号代码] PID
用来杀死一个进程,一般和ps/pidof/pstree/top等结合使用,先找到PID,然后kill掉
信号代码:
-0 给当前所有在进程组的进程发送信号
-1 给所有进程号大于1的发送信号
-9 强行终止进程
-15终止进程(默认)
-a 种植所有进程
-u指定用户
killall [-signal] <进程名>
杀死指定名字的进程
pkill [options] pattern
通过进程名字直接杀死所有进程
xkill
杀死图形界面的程序
进程优先级
nice [-n ADJUST] [--adjustment = ADJUST] [--help] [--version] [command]
进程的优先级用nice值表示,nice可以调整命令的运行优先级,nice值范围是-20~19共40个等级,数值越小,优先级越高,只有root有权使用负值。如果nice之后没有加上command参数,那么会显示目前执行的等级。优先级超过-19按-19算,超过20按20算。
如:
nice -n 5 ls
renice命令允许用户修改一个正在运行的进程的优先等级
renice priority [[-p] pids] [[-g] pgrps] [[-u] users]
renice +2 -p 234 -u root
上面的命令将pid为234及root用户拥有的进程优先级加1
控制前后台进程
将一个前台进程放入后台
命令 &
如: top & 将top命令放入后台执行
控制后台进程
jobs //列出系统作业号和名称
fg 作业号 // 前台恢复运行
bg 作业号 //后台恢复运行
kill 作业号 //杀死作业
以守护进程方式执行任务:nohup
nihup command [Arg...] [&]
使用nohup命令运行的程序注销后仍可以在后台运行。
nohup /root/test.sh &
定时执行任务
可以使用at命令定时执行任务
at [-f file] [-mldv] TIME
at命令在制定时间执行某个命令或程序。TIME格式:HH:MM如果制定超过一天MM/DD/YY 月日年
atq //查询当前用户正在等待的任务
atrm <任务号> //删除一个正在等待的任务
at之后进入交互式命令,开始输入要执行的命令,然后Ctrl+D退出交互式模式