我是系统管理员,我被要求运行一个 linux 脚本来清理系统。
命令是这样的:
perl script.pl > output.log &
所以这个命令以 &
符号结尾,有什么特殊意义吗?
我对 shell 有基本的了解,但我以前从未见过。
原文由 Max 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果没有另行通知,命令将占据前台。您只有一个“前台”进程在单个 shell 会话中运行。 & 符号指示命令在后台进程中运行,并立即返回命令行以获取其他命令。
sh my_script.sh &
shell 会话关闭后,后台进程将 不会 保持活动状态。 SIGHUP 终止所有正在运行的进程。反正默认。如果您的命令长时间运行或无限期运行(即:微服务),您需要使用 nohup 对其进行 pr-pend,以便在您断开会话后它仍然运行:
nohup sh my_script.sh &
编辑: 使用 & 时,后台进程的关闭似乎确实存在灰色区域。请注意,shell 可能会 根据您的操作系统和本地配置(特别是在 CENTOS/RHEL 上)关闭您的进程: https ://serverfault.com/a/117157。
原文由 Timothy Jannace 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答799 阅读✓ 已解决
2 回答3.2k 阅读
&
使命令在后台运行。从
man bash
: