systemd: sh -c exec イディオムを使用してプロセス名について嘘をついています。

systemd: sh -c exec イディオムを使用してプロセス名について嘘をついています。

私はいくつかのシェルコマンドを挿入するためにステートメント(サービス単位ファイル)でこの慣用語を使用しますsh -c execExecStartたとえば、

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

良い結果。しかし、このサービスのログを見ると、プロセス名shfoo。このイディオムを使用してプロセス名に対してうそをつく方法はありますか?

答え1

ああ、これよりもずっと簡単です。ここで答えを見つけました。https://unix.stackexchange.com/a/229525/11995

    SyslogIdentifier=foo

答え2

最終設定のためにコマンドの代わりに環境ファイルまたは変数を使用することを検討しましたか? (テストされていない)のようなもの:

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

これは「システム化された方法」にさらに適合するようです。

関連情報