在Linux命令的结尾处使用"&"是什么意思?
当没有其他指示时,命令会在前台运行。在单个shell会话中,只有一个“前台”进程在运行。符号“&”指示命令在后台进程中运行,并立即返回到命令行以执行其他命令。
后台进程在shell会话关闭后不会保持运行。默认情况下,SIGHUP会终止所有正在运行的进程。如果您的命令是长时间运行或无限运行的(例如:微服务),您需要在命令之前加上nohup,以便在断开会话后它继续运行:
nohup sh my_script.sh &
编辑:在使用“&”时,关于关闭后台进程似乎存在一些灰色地带。请注意,根据您的操作系统和本地配置(特别是在CENTOS/RHEL上),shell可能会关闭您的进程。
https://serverfault.com/a/117157
在Linux命令中,使用"&"符号可以通过一个SSH连接运行多个进程,以保持最少数量的终端。例如,我有一个进程用于监听消息以提取文件,第二个进程用于监听消息以上传文件:使用"&"符号,我可以在一个终端中通过单个SSH连接运行这两个服务。
通过"&"运行的这些进程在SSH会话关闭后也会保持运行状态。如果SSH连接到服务器中断且未使用终端复用器(screen、tmux、byobu),这非常方便和有用。
使用"nohup"命令也可以使进程保持运行。
使用"&"我们还可以获取PID,以便在需要时终止进程,也可以检查进程的状态。
如何终止进程?如何获取PID?
您可以使用"ps aux"命令,然后将其输出通过管道传递给grep来搜索所需的内容,比如按命令或用户搜索。只是为了清楚起见,"ps"是命令,"aux"是它的参数。