运行“command &”和“command -D”有什么区别

运行“command &”和“command -D”有什么区别

我最初认为command &这是“守护进程”命令的命令,但事实证明command -D这是正确的命令。具体是做什么的command &?我在任何地方都找不到该特定选项的任何内容,并且想知道它是否有名称以及技术细节

答案1

一开始我有点困惑,因为它command是一个 shell 内置命令(它作为命令执行实用程序,而不是作为 shell 函数,如果这样的函数恰好存在的话)。

你用

$ utility &

utility作为异步进程(后台进程/作业)启动。

bash手册中:

如果命令由控制运算符终止&,则 shell 会在子 shell 的后台执行该命令。 shell 不等待命令完成,返回状态为 0。

dash手册中:

如果命令由控制运算符 & 符号 ( &) 终止,则 shell 会异步执行该命令,即 shell 不会等待命令完成后再执行下一个命令。

在后台运行命令的格式为:

command1 & [command2 & ...]

(这恰好与POSIX 描述&

一些实用程序(通常是守护程序)可能具有使它们进入后台的标志,并且-D可能是这些实用程序使用的通用标志,但我也经常看到--daemon-d。有时-d(或任何标志)防止实用程序本身到后台,例如sshd -d防止 SSH 守护进程进程自身进入后台,而是使其作为前台进程运行,并将所有日志输出发送到标准输出而不是syslog(该-d标志代表“调试”)。

然而,这些标志没有标准,每个支持这些操作的实用程序可以通过不同的标志来实现它们。您需要阅读您正在使用的特定实用程序的手册。

相关内容