执行后台命令后执行一个shell命令

时间:2018-03-01 15:58:21

标签: bash shell

我在shell command1command2上执行了2个命令。 command1需要很长时间才能完成(约2分钟)。所以我可以使用&在后​​台运行它,但之后我想自动执行command2。我可以在shell命令行上执行此操作吗?

2 个答案:

答案 0 :(得分:3)

尝试:

( command1; command2 ) &

编辑:更大的PoC:

demo.sh:

#!/bin/bash

echo Starting at $(date)
( echo Starting background process at $(date); sleep 5; echo Ending background process at $(date) ) & 
echo Last command in script at $(date)

运行demo.sh:

$ ./demo.sh
Starting at Thu Mar 1 09:11:04 MST 2018
Starting background process at Thu Mar 1 09:11:04 MST 2018
Last command in script at Thu Mar 1 09:11:04 MST 2018
$ Ending background process at Thu Mar 1 09:11:09 MST 2018

请注意,该脚本在脚本"中的" Last命令后结束,但后台进程执行了"结束后台进程"回声5秒钟后。 (...)&中的所有命令。结构是连续运行的,但都是统一分叉到后台。

答案 1 :(得分:2)

你可以把这两个赞誉放在一个shell脚本中,如下所示: -

command1 &
wait
command2 & #if you want to run second command also in background