- 在后台模式中进程运行时不会和终端会话上的
STDIN
、STDOUT
、STDERR
关联;允许他们在后台运行而不用占用终端会话;
- 以后台模式运行shell脚本非常简单,只要在命令后加个
&
符就行了:如:./test &
;当&
符放在命令后时,它会将命令和bash shell 分离开来,将命令作为系统中的一个独立的后台进程运行,显示的第一行是:[1] 3231
;方括号中的数字时shell分配给后台进程的作业号,下一个数是Linux系统分配给进程的进程ID,Linux系统上运行的每个进程都必须有一个唯一的PID;注意:当后台进程运行时,他仍然会使用终端显示器来显示STDOUT
和STDERR
消息;
echo "start the test script"
count=1
while [ $count -le 5 ]
do
echo "loop#$count"
sleep 3
count=$[ $count + 1 ]
done
echo "test script is complete"
- 当该脚本运行在后台模式时,我们输入
ls -al
,脚本输出、输入的命令及命令输出都混在一起,最好是将后台运行的脚本的STDOUT
和STDERR
进行重定向,避免这种杂乱的输出;
- 可以在命令行提示符下同时启动多个后台作业;在终端会话中使用后台进程时一定要小心,注意;在
ps
命令的输出中,每一个后台进程都和终端会话(pts/0)
终端联系在一起,如果终端会话退出,那么后台进程也会随之退出;