我编写了一个shell脚本来执行一系列命令。 shell脚本中的一个命令是启动应用程序。但是,我不知道在启动应用程序后如何继续运行shell脚本。
例如:
...
cp somedir/somefile .
./application
rm -rf somefile
用“./application”启动应用程序后,我无法再继续运行“rm -rf somefile”命令,但我确实需要从目录中删除该文件。
任何人都有任何想法如何在启动应用程序后竞争运行“rm -rf”命令?
由于
答案 0 :(得分:4)
正如其他人所指出的那样,你可以对应用程序进行后台处理(man bash'job control',例如)。
此外,您可以使用wait
内置来明确等待后续作业:
./application &
echo doing some more work
wait # wait for background jobs to complete
echo application has finished
您应该一如既往地阅读手册页和bash帮助以获取更多详细信息:
答案 1 :(得分:2)
在后台启动应用程序,这样shell就不会等待它终止,并会在启动应用程序后立即执行结果命令:
./application &
在此期间,您可以使用jobs
命令检查后台作业,并通过wait
及其ID等待。例如:
$ sleep 100 &
[1] 2098
$ jobs
[1]+ Running sleep 100 &
$ wait %1
答案 2 :(得分:1)
您需要使用'&'在后台启动命令甚至可能是nohup。
nohup ./application > log.out 2>&1
答案 3 :(得分:1)
将已启动的流程置于后台:
./application &