[Command] Linux 进程管理

来源:互联网 发布:php开源电商系统源码 编辑:程序博客网 时间:2024/06/11 02:41

工作管理(Job Control)

在进行bash的工作管理时需要注意。
1)前台就是指你可以控制的命令行。
2)后台就是自行运行的工作,你无法使用ctrl+c终止,但可以使用fg/bg调用。
3)后台中执行的程序不能等待输入。

后台执行

在命令行后面加上&。此时,命令行仍然可以进行别的操作。此时,当任务已经完成时,会在命令行中有所显示。但为了让自己更专注于命令行的操作,可以将后天运行程序的输出和错误输出重定向到一个输出文件中。

tar -zocvf file file2 > /tmp/log.txt 2>&1 &

暂时挂起程序

在运行程序时,按下ctrl+z可以暂时挂起程序,但不终止。
例如在vi中,可以按下ctrl+z然后在命令行中操作。

jobs 查看目前后台工作状态

jobs [-lrs]-l: 列出job number与命令行之外,还有PID-r:仅列出目前在后台run的工作-s:仅列出正在后台中暂停的工作
jobs[1]    suspended (tty output)  nice -n -10 vi[2]    suspended (tty output)  sudo nice -n -10 vi[3]  - suspended  top | grep --color=auto 'Balltree'[4]  + suspended  top | grep --color=auto 'Balltree'

其中,+表示最近被放到后台中工作的号码,-表示最后第二个被放在后台中的工作号码。

fg 将后台工作拿到前台处理

fg %number

默认取出[+]的工作。
number表示工作号码。

bg 让工作在后台下的状态变为运行态

bg %number

运用同上。

管理后台工作,kill

kill -signal %number-l: 列出目前kill能够使用的signal-1:重新读取参数的配置文件(reload)-2:代表由键盘输入ctrl+c同样的操作-9:立即强制删除一个工作-15:以正常的程序方式终止一项工作。-17:以ctrl-z来暂停一个进程的执行

值得注意的是,-9表示的强制删除,不是正常的删除过程,可能有些文件不会被删除。

脱机管理

如果你希望程序在你脱机之后仍然能够正常的运行,则需要将工作放在系统后台工作。nohup可以让你在脱机或注销系统后,还能够正常让国祚继续进行。

nohup [..] # 在终端机前台工作nohup [...] & # 在终端机后台工作

需要注意的是,nohup不支持bash内置的命令,因此你的命令必须是外部命令,例如运行一段程序等。

test.py

print 'yesy'
nohup python test.py &

此时这个python程序会在系统后台中运行。

进程管理

进程管理是非常重要的操作。有一次我在帮别人debug时,发现有一个程序在后台一直运行,因为他能够持续不断地创建一个文件,每当我删除这个文件时,没过一会他又会出现。这时,就需要通过进程管理来找到这个出问题的程序,并将之kill。

ps 进程的查看

ps aux # 查看系统所有进程数据ps -lA # 查看系统的数据ps -l # 仅列出bash的程序

S表示这个程序所处的状态
1)R:运行状态
2)S:休眠状态
3)D:不可唤醒的睡眠状态
4)T:终止状态
5)Z:僵尸状态
CMD:该程序的实际命令,最能直接显示该进程的意图。

top 动态查看进程的变化

-d:后面接秒数,表示进程界面更新的秒数。-p:指定某些歌PID来进行检测

查看某个进程的使用内存也可以使用top。

top -l 1 | grep 'zsh'

pstree 描述进程树

通过pstree能够很快地找到进程的父进程和子进程。

pstree | grep 'zsh'
 |--= 04745 yanzexin /bin/zsh ./script.sh | | \-+= 57913 yanzexin -zsh | |   \--- 62271 yanzexin grep --color=auto zsh | | \--= 61334 yanzexin -zsh | | \--= 60544 yanzexin -zsh |   \--= 61954 yanzexin -zsh

进程执行的优先级

进程执行的优先级是由PRI来决定的。PRI越小,优先级越高。但用户是无法直接修改PRI的,只能改变NI。系统会自动根据目前系统状态来决定如何修改程序的PRI。

newPRI = oldPRI + NI

父进程的NI和子进程的NI是相同的。

nice 可以用于修改程序的NI

nice -n -5 vi &ps -l

当我们需要进行备份工作,由于备份工作需要消耗很大的系统资源,所以此时我们希望增大程序的NI值,从而减小程序的优先级。

具体的描述见

man nice
原创粉丝点击