在进行bash的工作管理时需要注意。 1)前台就是指你可以控制的命令行。 2)后台就是自行运行的工作,你无法使用ctrl+c终止,但可以使用fg/bg调用。 3)后台中执行的程序不能等待输入。
在命令行后面加上&。此时,命令行仍然可以进行别的操作。此时,当任务已经完成时,会在命令行中有所显示。但为了让自己更专注于命令行的操作,可以将后天运行程序的输出和错误输出重定向到一个输出文件中。
tar -zocvf file file2 > /tmp/log.txt 2>&1 &在运行程序时,按下ctrl+z可以暂时挂起程序,但不终止。 例如在vi中,可以按下ctrl+z然后在命令行中操作。
其中,+表示最近被放到后台中工作的号码,-表示最后第二个被放在后台中的工作号码。
默认取出[+]的工作。 number表示工作号码。
运用同上。
值得注意的是,-9表示的强制删除,不是正常的删除过程,可能有些文件不会被删除。
如果你希望程序在你脱机之后仍然能够正常的运行,则需要将工作放在系统后台工作。nohup可以让你在脱机或注销系统后,还能够正常让国祚继续进行。
nohup [..] # 在终端机前台工作 nohup [...] & # 在终端机后台工作需要注意的是,nohup不支持bash内置的命令,因此你的命令必须是外部命令,例如运行一段程序等。
test.py
print 'yesy' nohup python test.py &此时这个python程序会在系统后台中运行。
进程管理是非常重要的操作。有一次我在帮别人debug时,发现有一个程序在后台一直运行,因为他能够持续不断地创建一个文件,每当我删除这个文件时,没过一会他又会出现。这时,就需要通过进程管理来找到这个出问题的程序,并将之kill。
S表示这个程序所处的状态 1)R:运行状态 2)S:休眠状态 3)D:不可唤醒的睡眠状态 4)T:终止状态 5)Z:僵尸状态 CMD:该程序的实际命令,最能直接显示该进程的意图。
查看某个进程的使用内存也可以使用top。
top -l 1 | grep 'zsh'通过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是相同的。
当我们需要进行备份工作,由于备份工作需要消耗很大的系统资源,所以此时我们希望增大程序的NI值,从而减小程序的优先级。
具体的描述见
man nice