“&”符号对`nohup`意味着什么?


11

我看过无数的示例,其中a &紧跟命令字符串的结尾,但是我似乎找不到关于它做什么的解释。甚至不在nohupman页面中。这是壳的东西吗?

无论使用&与否,我发现运行的任何进程nohup似乎都表现出对任何挂断信号的免疫力。


1
“我发现任何运行nohup的进程似乎都表现出对任何挂断信号的免疫力。” 那就是nohup的目的。
塞缪尔·埃德温·沃德

好的,让我澄清一下:我所看到的唯一示例都使用了&,所以我不确定是否存在&某种修饰符或论点,从而使nohup行为有所不同。
乍得哈里森

1
怀疑是合理的事情。实际上,它不会修改nohup的行为(nohup甚至看不到它),但是会修改shell的行为。
塞缪尔·埃德温·沃德

nohup&->不挂断并设置背景。从调制解调器和串行终端的美好时光开始。当我的终端和调制解调器脱机时,请继续在后台进行处理,以便下次我上线时该工作已完成。
Fiasco Labs

Answers:


19

bash手册页

如果命令由控制操作符&终止,则外壳程序将在子外壳程序的后台执行该命令。Shell不等待命令完成,返回状态为0。

是的,这是一个外壳程序,可以与任何命令一起使用。它实际上会立即将控制权返回给您,并允许命令在后台完成。这几乎总是与之配合使用,nohup因为您通常希望在启动命令后退出外壳程序。


4
我最近看到您发布了很多好的答案,而我的大脑总是将您的用户名翻译成McGuyver。不知道为什么我觉得有必要告诉你这一点。
MDMarra 2012年

1
@MDMarra,我会称赞它;-)
mgorven 2012年

1
@MDMarra至少您不会想到:“ McGruber”
病房-恢复莫妮卡

7

使用&号(&)将在子进程(当前bash会话的子进程)中运行命令。但是,当您退出会话时,所有子进程将被杀死。

使用nohup +和号(&)会执行相同的操作,除了在会话结束时,子进程的父级将更改为“ 1”(即“ init”进程),从而防止子级被杀死。


3

是的,这是一个外壳程序,它在后台运行命令,因此您不必等待当前命令返回就可以发出更多命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.