在Unix中运行后台作业

时间:2015-09-06 05:58:12

标签: unix

我们运行一个交互式perl脚本,该脚本从终端获取一组输入(输入是脚本应该运行的时间)并运行直到完成。工作在前台运行。我通过点击CTRL-Z后跟bg %-命令让工作在后台运行。 一旦当前作业在后台运行,如果我使用不同的输入集运行相同的perl脚本并尝试将其放入后台,当我按下CTRL-Z时,第一个作业将被终止。

^ Z [1]终止的脚本名称

[2] +停止的脚本名称

请指出我是否犯了错误

2 个答案:

答案 0 :(得分:0)

当您按^ Z时,正在运行的脚本停止,在bg之后它将继续(在后台) 当您在命令行上执行某些操作时,您将获得bg作业的反馈 使用[1] Terminated scriptname,您会看到第一个脚本已完成。使用[2]+ Stopped scriptname,您会看到第二个作业暂停并等待bg / fg命令 使用^ Z + bg与将&附加到命令(对于非交互式程序)大致相同。您可以尝试使用

sleep 1 &
# now wait few seconds
ps
# you will see the terminated script

sleep 6 &
sleep 3; ps
sleep 4; ps

# and now repeat these cases with ^Z / bg instead of &

答案 1 :(得分:0)

尝试nohup

nohup nice <your_script followed by parameters(separated by space)> &

它会给你process_id。按Ctrl + C退出命令并通过ps -ef验证它是否仍在运行。我记得用这样的不同参数运行同一个脚本的多个实例。