我在语句(在服务单元文件中)中使用该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 方式”。