Logs
如何使用腳本保存分離螢幕的輸出?
我有一個 Python 腳本
test.py
,它只包含:print('hi')
. 我想在 a 中執行它,screen
以便將輸出screen
保存為script
.我使用以下命令
test.py
在 a中執行screen
,它工作正常:screen -dm bash -c 'python test.py'
但是,我還沒有找到一種方法
script
來保存screen
. 我該怎麼做?我嘗試失敗:
script -c "screen -dm bash -c 'python test.py'" output.txt
:輸出文件 output.txt 不包含hi
,而僅包含:Script started on Fri 26 Aug 2016 01:04:59 PM EDT Script done on Fri 26 Aug 2016 01:04:59 PM EDT
我使用 Ubuntu 14.04.4 LTS x64。
文件:
https://www.gnu.org/software/screen/manual/screen.html:
-d -m:以分離模式啟動螢幕。這會創建一個新會話,但不會附加到它。這對於系統啟動腳本很有用。
http://linux.about.com/library/cmd/blcmdl1_sh.htm :
-c 字元串:如果存在 -c 選項,則從字元串中讀取命令。如果字元串後面有參數,則將它們分配給位置參數,從 $0 開始。
腳本的手冊頁:
-c, –command 執行命令而不是互動式shell
你應該反過來做,在
script
裡面跑screen
:screen -dm bash -c 'script -c "python test.py" output.txt'
您可以使用該
-L
標誌創建一個自動screenlog.0
文件例如
$ screen -dm -L sh -c 'echo hello' $ cat screenlog.0 hello
如果您有一個長時間執行的螢幕會話沒有被記錄,那麼您可以稍後打開記錄
例如
$ screen -dm -S test sh -c 'while [ 1 ]; do date; sleep 1; done'
現在我們可以打開日誌了
$ screen -S test -p 0 -X log
允許一些時間過去,因為日誌記錄是以塊的形式寫入的,並且…
$ cat screenlog.0 Fri Aug 26 13:25:49 EDT 2016 Fri Aug 26 13:25:50 EDT 2016 Fri Aug 26 13:25:51 EDT 2016 Fri Aug 26 13:25:52 EDT 2016 Fri Aug 26 13:25:53 EDT 2016 Fri Aug 26 13:25:54 EDT 2016 Fri Aug 26 13:25:55 EDT 2016 Fri Aug 26 13:25:56 EDT 2016 Fri Aug 26 13:25:57 EDT 2016 Fri Aug 26 13:25:58 EDT 2016