linux命令末尾的“&”是什么意思?

新手上路,请多包涵

我是系统管理员,我被要求运行一个 linux 脚本来清理系统。

命令是这样的:

 perl script.pl > output.log &

所以这个命令以 & 符号结尾,有什么特殊意义吗?

我对 shell 有基本的了解,但我以前从未见过。

原文由 Max 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

& 使命令在后台运行。

man bash

如果命令由控制运算符 & 终止,则 shell 在子 shell 的后台执行命令。 shell 不等待命令完成,返回状态为 0。

原文由 mgarciaisaia 发布,翻译遵循 CC BY-SA 3.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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题