アプリケーション出力をログファイルにリダイレクトするのに問題があります。

アプリケーション出力をログファイルにリダイレクトするのに問題があります。

起動時にアプリケーションを起動するLinuxを実行する組み込みARMデバイスがあります。アプリケーションには"printf(...)"確認する必要がある多くの声明があります。これを処理する一般的な方法は、内蔵デバイスの起動後にSSHを介して(ホストPC上で)実行中のアプリケーションを終了し、ホストPCでコンソールを使用できるようにSSH端末を介して再起動することです。問題は、アプリケーションを終了して再起動した後に正しく機能しないことです。

私が試したことは、..を使用して表示して表示"(nohup ./myAppName 2>&1 | logger) &"できるように起動スクリプトを編集することでしたが、何も記録されませんでした。/var/log/syslogtail -f

"(nohup echo "test123" 2>&1 | logger) &"システムログに正しく記録されていることを確認しました。

何が間違っている可能性がありますか?アプリケーションがstdout / stderrとして印刷されない可能性はありますか?アプリケーションを再起動するとコンソールに正しく印刷されますが、前述したようにこれを行うと、外部のすべての項目が破損します。

ベストアンサー1

いくつかのプログラムは、stdoutがttyでない場合はよりきれいです。 screenを使用してttyをエミュレートできます。

screen -L -d -m ./myAppName

./screenlog.0現在のディレクトリへの書き込み権限が必要です!

そうしないと、プログラムがブート環境内で自動的に失敗する可能性があります。

デバッグを有効にしてstrace回避しますlogger

strace -f -o /tmp/myApp.strace nohup ./myAppName >/tmp/myApp.log 2>&1

おすすめ記事