Stdout
將應用程序輸出重定向到日誌文件時遇到問題
我有一個執行 Linux 的嵌入式 ARM 設備,它在啟動時啟動一個應用程序。這個應用程序中有一堆
"printf(...)"
我需要查看的語句。我一直在解決這個問題的正常方法是在嵌入式設備啟動後通過 SSH(從主機 PC)殺死正在執行的應用程序,然後通過 SSH 終端重新啟動它,這樣我就可以在主機 PC 上的控制台。這樣做的問題是應用程序在殺死並重新啟動後表現不佳。我試圖做的是編輯啟動腳本以說和
"(nohup ./myAppName 2>&1 | logger) &"
查看.. 但是,沒有任何記錄。/var/log/syslog``tail -f
我已經驗證
"(nohup echo "test123" 2>&1 | logger) &"
確實確實正確記錄到系統日誌。哪裡可能出了問題?該應用程序是否有可能沒有列印到標準輸出/標準錯誤?當我重新啟動應用程序時,它確實會正確列印到控制台,但就像我說的那樣,當我這樣做時,超出此範圍的其他內容會被破壞。
當 stdout 不是 tty 時,一些程序不那麼冗長。您可以使用螢幕模擬 tty:
screen -L -d -m ./myAppName
它將輸出記錄到類似
./screenlog.0
. 您需要目前目錄的寫權限!否則,程序也可能僅在您的引導環境中默默地失敗。
我會使用
strace
和避免調試logger
:strace -f -o /tmp/myApp.strace nohup ./myAppName >/tmp/myApp.log 2>&1