工作管理(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