shell编程,以后台模式运行进程,bg、fg、jobs -l、nohup、&
以后台模式运行脚本:
demo.sh & 只要在脚本后面加上“&”符号就可以了,会被当成一个独立的进程运行。
[ 1 ] 3231 #运行时会显示出一个进程号和进程ID
[ 1 ] Done ./demo.sh #运行结束后会显示一条消息
程序消息处理:
demo.sh > demo.txt & 后台运行时如果脚本有消息要输出任然会输出,会合命令行的命令混合在一起,所以要在运行前重定向输出。
注意:后台进程和终端联系在一起,退出终端后台进程也会退出。后台进程可以同时运行多个。
在非控制台下运行脚本:不受终端影响
nohup command &
例:nohup ./demo.sh &
此命令会解除终端与进程的关联,会忽略SIGHUP信号,进程也不会和STDOUT和STDERR联系在一起,但是会将输出自动保存在同目录下的nohup.out文件中。注意:如果在同一个目录下使用多个nohup执行脚本会将输出都保存在同一个nohup.out文件中。
查看作业:
jobs 查看已经停止或运行中的作业
-l 查看PID(process ID)
例:jobs -l
[1]+ 3515 Stopped demo.sh
[2] 3564 Running demo.sh > demo.txt &
[4]- 3570 Running demo.sh > demo.txt &
注意:命令输出中的“+”号代表默认作业使用,使用fg默认调该进程;“-”号为下一个默认作业。
重启停止的作业:
bg 以后台模式重启一个作业,即使脚本并没有以后台模式运行。
例:bg 2
注意:当有多个作业时要加上作业号,否者重启默认作业,
fg 以前台模式重启一个作业,有多个作业时加上作业号,否者重启默认作业,
例:fg 2
注意:以前台模式会接管当前的终端