我最初认为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
标志代表“调试”)。
然而,这些标志没有标准,每个支持这些操作的实用程序可以通过不同的标志来实现它们。您需要阅读您正在使用的特定实用程序的手册。