起動時にアプリケーションを起動するLinuxを実行する組み込みARMデバイスがあります。アプリケーションには"printf(...)"
確認する必要がある多くの声明があります。これを処理する一般的な方法は、内蔵デバイスの起動後にSSHを介して(ホストPC上で)実行中のアプリケーションを終了し、ホストPCでコンソールを使用できるようにSSH端末を介して再起動することです。問題は、アプリケーションを終了して再起動した後に正しく機能しないことです。
私が試したことは、..を使用して表示して表示"(nohup ./myAppName 2>&1 | logger) &"
できるように起動スクリプトを編集することでしたが、何も記録されませんでした。/var/log/syslog
tail -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