foo
コンソール(たとえばtty1
)でコマンドを実行すると、出力はコンソールに送信されます。
daemon foo started successfully
仮想端末()で同じコマンドを実行すると、terminator
端末に出力は表示されませんが、出力はに送信されますsyslog
。
なぜこれが起こるのですか?出力が送信される場所をどのように制御しますか?
foo
コマンドを実行して出力を送信するinit起動スクリプトがありますtty1
。出力をsyslogに送信したいと思います(コンソールではなく仮想端末でinitスクリプトを起動したかのように)。
答え1
あなたができるようにデーモンの Debian マニュアルページこれは、initシステムでデーモンを実装する方法によって大きく異なります。
- SysVモード(stdin / out / errは/ dev / nullに接続されています)
- これ」新しいスタイル「方法:(stdout / stderrはsystemd-journald.serviceに接続されています)
... 10.新しいデーモンプロセスは、syslog()呼び出しを使用してシステムsyslogサービスに直接記録しないことを選択できます。fprintf()を介して標準エラーにログインし、initシステムによってsyslogに渡されます。...
後者の場合、xtermに現れる動作は通常の動作です。
fprintf(stdout/stderr) を通してデーモンが出力する内容は syslog によって制御されます。
したがって、syslog設定(syslog.confファイルにあります)とログレベルによっては、デーモン出力が無視されたり、特定のファイルに追加されたり、システムコンソール(tty1)エコーでxtermが発生したりしません。