我是系统管理员,已被要求运行linux脚本来清理系统。
命令是这样的:
perl script.pl > output.log &
因此,该命令以&
符号结尾,它是否有特殊意义?
我对shell有基本的了解,但是我从未见过。
我是系统管理员,已被要求运行linux脚本来清理系统。
命令是这样的:
perl script.pl > output.log &
因此,该命令以&
符号结尾,它是否有特殊意义?
我对shell有基本的了解,但是我从未见过。
&
和之间的区别&&
:: &
在后台执行第一个命令;&&
执行第一个命令,如果成功退出,则有条件地继续执行第二个命令。
Answers:
另外,您可以使用“&”符号通过一(1)个ssh连接运行许多进程,以保持最少数量的终端。例如,我有一个进程侦听消息以提取文件,第二个进程侦听消息以上传文件:使用“&”,我可以通过与服务器的ssh连接在一个终端中运行这两种服务。
*****我刚刚意识到,在ssh会话关闭后,通过“&”运行的这些进程也将“保持活动”!如果您与服务器的连接中断,则非常整洁且有用**
nohup
还将使进程保持活动状态。
如果没有其他说明,则命令将接管前台。在单个Shell会话中,只有一个“前台”进程正在运行。&符号指示命令在后台进程中运行,并立即返回命令行以获取其他命令。
sh my_script.sh &
Shell会话关闭后,后台进程将无法保持活动状态。SIGHUP终止所有正在运行的进程。无论如何还是默认。如果您的命令长时间运行或无限期运行(即:微服务),则需要使用nohup预先挂起它,以便在断开会话连接后它仍在运行:
nohup sh my_script.sh &
编辑:当使用&时,关于关闭后台进程似乎确实有一个灰色区域。请注意,根据您的操作系统和本地配置(尤其是在CENTOS / RHEL上),shell 可能会关闭您的进程:https ://serverfault.com/a/117157 。