我是一个系统管理员,我一直要求运行在Linux脚本来清理系统。
该命令是这样的:
perl script.pl > output.log &
所以这个命令与结束&
标志,是有它的任何特殊意义?
我有壳的基本知识,但在此之前我从来没有见过这个。
我是一个系统管理员,我一直要求运行在Linux脚本来清理系统。
该命令是这样的:
perl script.pl > output.log &
所以这个命令与结束&
标志,是有它的任何特殊意义?
我有壳的基本知识,但在此之前我从来没有见过这个。
在&
使得在后台运行的命令。
从man bash
:
如果一个命令被控制操作符&结束,壳中在子shell后台执行该命令。 shell不等待命令完成,返回状态是0。
此外,还可以使用“&”符号,通过一(1)ssh连接到运行多个进程,以保持终端的最小数量。 例如,我有一个过程,为了提取文件侦听的消息,第二个过程中,为了上传文件侦听消息:使用“&”我可以在一个终端同时运行服务,通过单一的ssh连接到我的服务器。
*****我刚刚意识到,贯穿了“&”也将“活着” SSH会话关闭后,这些过程! 整齐漂亮的和有用的,如果你的服务器连接中断**
如果没有其他的命令告诉接手的前景。 你只需要一个“前台”进程运行在一个shell会话。 &符号指示在后台进程中运行的命令,并立即返回到其他的命令的命令行。
sh my_script.sh &
外壳会议闭幕之后一个后台进程将无法生存下去。 SIGHUP终止所有正在运行的进程。 默认情况下,无论如何。 如果你的命令是长时间运行或将无限期运行(即:微服务),您需要PR-挂起用nohup的它,所以它保持运行您从会话中断开后:
nohup sh my_script.sh &
编辑:有确实出现了一个灰色区域关于后台进程的关闭时使用& 要知道,外壳可能会因您的操作系统和本地配置(特别是在CentOS / RHEL)在关闭过程: https://serverfault.com/a/117157 。
我不知道肯定,但现在我在读一本书,我所得到的是一个程序需要处理的信号(如当我按下CTRL-C)。 现在,程序可以使用SIG_IGN忽略所有信号或SIG_DFL恢复默认操作。 现在,如果你做 - $命令&然后运行的后台进程这个过程简单地忽略,将出现的所有信号。 对于前台进程,这些信号不容忽视。