这些 exec su 参数有什么作用?

use*_*758 3 linux shell shell-script upstart init

这个命令的开关和参数是什么意思?

exec su -s /bin/sh -c 'exec "$0" "$@"' root -- /opt/nsq/bin/nsqd
Run Code Online (Sandbox Code Playgroud)

具体的--部分和exec "$0" "$@"应该做什么。

我知道$0为脚本设置一个循环以保持运行。

您可以忽略该/opt/nsq/bin/nsqd部分。这是我正在运行的应用程序。

K7A*_*AAY 5

exec
Run Code Online (Sandbox Code Playgroud)

它运行的命令su 会在不创建新进程的情况下替换 shell。

sudo -s /bin/sh -c 
Run Code Online (Sandbox Code Playgroud)

替代用户运行指定的 shell,/bin/sh 并执行以下命令。

exec "$0" "$@"
Run Code Online (Sandbox Code Playgroud)

运行 command $0,脚本的名称,(你的第一个变量,即,/opt/nsq/bin/nsqd

"$@"
Run Code Online (Sandbox Code Playgroud)

所有参数,使用适当的引用

--
Run Code Online (Sandbox Code Playgroud)

双连字符分隔选项列表。后面的所有内容,即使它们以连字符开头,也被视为操作数。例如,sort -- -r从命名的文件中读取,-r而不是尝试使用“-r”作为选项。