Io-Redirection
獲取正在執行的程序的輸出重定向部分
有時我執行作業,我忘記了我已將輸出重定向到哪些輸出文件。如何獲得執行作業的完整命令,包括輸出重定向部分?
例如,當我執行
nohup python3 -c $'from time import sleep;\nfor i in range(100): print(i); sleep(1)' > .test.txt &
它應該列印一些東西
.test.txt
並執行 100 秒,然後執行ps -fp <PID>
或檢查/proc/<PID>/cmdline
,我只得到python3 -c from time import sleep; for i in range(100): print(i); sleep(1)
我已經嘗試了一些關於如何將命令行參數傳遞給 unix/linux 系統上正在執行的程序的解決方案?,但我認為我的命令沒有被截斷。
我注意到如果我在其中執行命令的外殼在作業完成時仍然打開,它會顯示完整路徑,例如
[1]+ Done nohup python3 -c 'from time import sleep; for i in range(100): print(i); sleep(1)' > .test.txt
此資訊是否僅儲存在執行該作業的 shell 中?
編輯: @muru 我剛剛意識到
history
畢竟給了我我的命令;謝謝。
如果您有正在執行的程序的 pid,那麼
ls -l /proc/${pid}/fd
將向您顯示 stdout (fd 1) 和 stderr (fd 2) 的寫入位置。
單個“>”將覆蓋文件,請嘗試使用附加到文件末尾的“>>”。
[admin@srv1 ~]$ for x in $(seq 1 100); do echo $x >> test.txt; done [admin@srv1 ~]$ head -n 25 test.txt 1 2 ...