我见过很多例子,其中 a&
跟在命令字符串的末尾,但我似乎找不到它的作用的解释。它甚至不在nohup
的man
页面中。这是 shell 的问题吗?
无论使用&
与否,我发现任何运行的进程nohup
似乎都对任何挂断信号表现出免疫力。
答案1
来自bash 手册页:
如果命令以控制操作符 & 结束,则 shell 将在子 shell 中在后台执行该命令。shell 不会等待命令完成,返回状态为 0。
所以是的,它是 shell 的东西,可以与任何命令一起使用。它本质上会立即将控制权返回给您,并允许命令在后台完成。这几乎总是与一起使用,nohup
因为您通常希望在启动命令后退出 shell。
答案2
使用与号 (&) 将在子进程(当前 bash 会话的子进程)中运行该命令。但是,当您退出会话时,所有子进程都将被终止。
使用 nohup + 和号 (&) 将执行相同的操作,不同之处在于,当会话结束时,子进程的父进程将更改为“1”,即“init”进程,从而防止子进程被终止。
答案3
是的,它是一个 shell 东西——它在后台运行命令,因此您不必等待当前命令返回后再发出更多命令。