我写了两个shell脚本a.sh和b.sh.在a.sh和b.sh中,我有一个无限循环,并且它们向终端输出一些输出。我想写另一个调用a.sh和b.sh的脚本,但我希望用户立即重新获得对终端的控制权,而不是让脚本无限运行,并且我想隐藏终端中的输出。如何在后台运行shell脚本并得不到输出
回答
使用nohup
如果你的后台工作需要很长时间才能完成,或者你只是使用SecureCRT或类似的东西登录服务器。
重定向标准输出和stderr的到/dev/null
忽略输出。
nohup /path/to/your/script.sh > /dev/null 2>&1 &
如果它们在同一个目录中的脚本,包含:
./a.sh > /dev/null 2>&1 &
./b.sh > /dev/null 2>&1 &
的&
末是什么使你的脚本在后台运行。
> /dev/null 2>&1
部分不是必需的 - 它重定向stdout和stderr流,因此您不必在终端上看到它们,您可能想要为具有大量输出的嘈杂脚本执行此操作。
感谢每一个机构。所有的答案真的很有用,谢谢。 – 2012-02-08 10:22:17
输出重定向到一个文件是这样的:
./a.sh > somefile 2>&1 &
这都将输出和错误重定向到同一个文件。如果你想输出和错误重定向到两个不同的文件使用:
./a.sh > stdoutfile 2> stderrfile &
您可以使用/dev/null
为一个或两个文件,如果你不关心stdout和/或标准错误。有关重定向的详细信息,请参阅bash manpage。
对不起,这是一个有点晚,但发现somple命令理想的解决方案,你不希望任何标准或错误输出(信贷,这是由于:http://felixmilea.com/2014/12/running-bash-commands-background-properly/)
这重定向输出为null,保持屏幕清晰:
command &>/dev/null &
注意:命令将终止时,终端关闭了。 – Banana 2017-02-12 19:30:29
对于任何在将来想要解决方案以在会话结束后保持命令运行的人,我都会建议使用screen或tmux。他们必须在关闭初始会话后进行“会话中的会话”。如果您重新登录,则可以重新连接到正在进行的会话。 非常适合运行rsync备份,例如同步需要长时间运行并且不想让会话保持运行状态。 – DanteAlighieri 2017-03-16 13:13:41
- 1. Python:在后台运行脚本并执行输入/输出
- 2. 在后台运行shell脚本
- 3. 如何在Ruby中触发shell脚本并在后台运行(异步)?
- 4. 如何让脚本在后台运行
- 5. 如何在后台从苹果脚本运行多个shell脚本
- 6. 如何在后台运行shell命令并禁止所有输出?
- 7. 在后台运行脚本?
- 8. ssh在后台运行脚本并获得其pid
- 9. Python脚本输出到控制台,即使它在后台运行
- 10. bash:脚本不在后台运行
- 11. 如何远程运行python脚本并输出输出
- 12. 在后台运行前台ksh脚本
- 13. 如何在后台运行linux进程并记录nohup输出
- 14. 在后台运行CakePHP Shell
- 15. 在后台运行Cron作业脚本并运行15小时
- 16. 从在后台运行的shell命令抓取输出
- 17. 如何在多台CGE机器上同时运行shell脚本?
- 18. 并行运行两个shell脚本并捕获它们的输出
- 19. 如何在PHP中运行shell脚本?
- 20. 从苹果脚本在一行中运行shell脚本并提供输入
- 21. 一饮而尽:如何执行shell命令,并得到输出
- 22. 如何在运行nohup命令后看到输出控制台?
- 23. 在shell脚本中运行shell脚本 - 好还是不好?
- 24. 隐藏Unix Shell脚本后台处理输出
- 25. 在远程服务器的后台运行Jupyter笔记本,得到输出
- 26. 如何在注销SSH后在后台运行Python脚本?
- 27. 如何在运行后在后台启动python脚本?
- 28. 在Objective C上运行shell命令并同时获得输出
- 29. shell脚本:如何输出到命令行?
- 30. 如何shell脚本AT + CSQ输出到串行
只是为了添加,有时会有脚本的参数,那么上面的命令将返回**不明确的输出重定向**。 – sabertooth1990 2013-11-06 15:00:19
我发现的一个更好的方法是使用 'nohup /path/to/your/script.sh parameter1>&1&' 如果有人知道更好的方法。 – sabertooth1990 2013-11-06 15:06:46
如果您使用'nohup',则不需要'/ dev/null 2>&1',因为它已经将所有STDOUT和STDERR流自动附加到nohup.out文件。 使用只是:'nohup/path/to/your/command&' – leonarth 2015-11-13 16:28:59