systemdサービスの標準出力/標準エラーを表示する
カスタムアプリケーション用の単純なsystemdサービスファイルを作成しました。手動で実行するとアプリケーションは正常に動作しますが、systemdで実行するとCPUが最大になります。 私は私の問題がどこにあるかを追跡しようとしていますが、どこに出力があるのかわかりません(またはsystemdが出力をどこかに配置するように設定する方法)。 これが私のサービスファイルです。 [Unit] Description=Syncs files with a server when they change Wants=network.target After=network.target [Service] ExecStart=/usr/local/bin/filesync-client --port 2500 WorkingDirectory=/usr/local/lib/node_modules/filesync-client Restart=always [Install] WantedBy=multi-user.target アプリケーション全体で、stdoutとstderrに出力します。 デーモンの出力を読み取るにはどうすればよいですか? 編集: を見つけましたがman systemd.exec、StandardOutput=オプションについて言及しましたが、どのように使用するのかわかりません。manページから: StandardOutput= 実行されたプロセスのファイル記述子1(STDOUT)の接続先を制御します。inherit、null、tty、syslog、kmsg、kmsg + console、syslog + consoleまたはsocketのいずれかを取ります。 標準入力のファイル記述子を継承するように設定されている場合、標準出力用に複製されます。nullに設定すると、標準出力はに接続されます/dev/null。つまり、書き込まれたものはすべて失われます。ttyに設定されている場合、標準出力はttyに接続されます(を介して設定されたTTYPath=とおり、以下を参照)。TTYが出力に使用される場合、実行されたプロセスのみが端末の制御プロセスにならず、失敗したり、他のプロセスが端末を解放するのを待ったりしません。 syslogは標準出力をsyslog(3)システムロガーに接続します。 kmsgは、dmesg(1)を介してアクセス可能なカーネルログバッファに接続します。 syslog + consoleおよびkmsg + console同様に機能しますが、出力をシステムコンソールにもコピーします。 socketは、ソケットのアクティブ化から標準出力をソケットに接続します。セマンティクスはのそれぞれのオプションに似ていますStandardInput=。この設定はデフォルトで継承されます。 これは、これらが私の唯一のオプションであることを意味しますか?たとえば、出力を/dev/shm何かに入れたいです。Unixドメインソケットを使用して簡単なリスナーを作成できると思いますが、これは少し不要なようです。 デバッグに必要なのはこれだけで、おそらくほとんどのログを削除して、出力をsyslogに変更することになります。