systemd:使用 sh -c exec 惯用法对进程名称撒谎

systemd:使用 sh -c exec 惯用法对进程名称撒谎

我在语句(在服务单元文件中)中使用该sh -c exec习惯用法来插入一些 shell 命令。ExecStart例如:

ExecStart=/bin/sh -ec "exec /usr/bin/foo $(/usr/bin/foo-config)"

效果很好。但是,当我查看此服务的日志时,进程名称sh不是foo。有没有办法使用这个习语来谎报进程名称?

答案1

啊,这比我想象的要容易得多。在这里找到了答案:https://unix.stackexchange.com/a/229525/11995

    SyslogIdentifier=foo

答案2

您是否考虑过使用环境文件或变量而不是命令来进行最后一刻的配置?像(未经测试)的东西:

Environment= ARGS=--whatever
EnvironmentFile=-/etc/foo/foo.config
ExecStart=/usr/bin/foo $ARGS

这似乎更符合“systemd 方式”。

相关内容