將應用程式輸出重定向到日誌檔案時遇到問題

將應用程式輸出重定向到日誌檔案時遇到問題

我有一個運行 Linux 的嵌入式 ARM 設備,它在啟動時啟動一個應用程式。該應用程式中有一堆"printf(...)"我需要查看的語句。我處理此問題的正常方法是在嵌入式設備啟動後透過 SSH(從主機 PC)終止正在運行的應用程序,然後透過 SSH 終端重新啟動它,以便我可以在主機 PC 上的控制台。這樣做的問題是應用程式在終止並重新啟動後表現不佳。

我試圖做的是編輯啟動腳本以使用.. 來表示"(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

相關內容