Saya memiliki screen
instance yang berjalan, dan saya perlu menjalankan beberapa kode di dalamnya screen
, dan mendapatkan hasilnya ke skrip saya.
Bagian pertama cukup mudah, saya hanya screen -S session_name -X eval 'stuff "$cmd"\015'
.
(Saya memodifikasi baris yang saya temukan dalam skrip )
Bagian kedua, mengeluarkan output, lebih rumit. Bagaimana saya bisa mendapatkan seluruh output, berapa pun ukurannya?
bash
logs
gnu-screen
recording
1ace
sumber
sumber
screen -X stuff …
; pertanyaan serupa dengan Anda .stuff
, yang merupakan hal yang sulit saya pahami.Jawaban:
Anda bisa mulai
screen
dengan-L
opsi. Ini akan menyebabkan layar membuat filescreenlog.n
(bagian n adalah angka, dimulai dengan nol) di direktori kerja saat ini.Dalam kasus Anda ini akan terlihat seperti:
screen -S session_name -L -X eval 'stuff "$cmd"\015'
Selama Anda ingat untuk membersihkan setelah itu, ini harus sesuai dengan apa yang Anda cari.
Untuk baris terakhir log, dapat dengan mudah diperoleh
tail -1 screenlog.0
, atau seluruh log dapat diuraikan seperti yang Anda inginkan.sumber
screen
perintah yang saya berikan adalah hanya untuk mengirim perintah. Untuk memulaiscreen
, saya menggunakanscreen -dmS name program
;-)Satu lagi nuansa yang mungkin membantu di masa depan: Jika Anda berada di sesi layar, Anda dapat secara interaktif meminta file log yang akan dibuat. Tekan ctrl- a H(Kontrol-A diikuti dengan huruf H) untuk meminta layar untuk mulai membuang jendela apa pun yang Anda masuk ke file log.
sumber
man screen
kata saya , saya harus mengetik CA H, tanpa Kontrol untuk H. Sedih saja, bahwa ini tidak menangkap log sebelumnya.