Saya ingin mengakhiri sebuah instance GNU screen
sambil mempertahankan proses yang berjalan di dalamnya.
Jadi saya membuka program emulator terminal reguler saya dan menjalankan layar. Kemudian saya menggunakan instance screen
untuk mengeksekusi ./script_x.sh
. Sekarang, untuk alasan apa pun, saya ingin berhenti menggunakan screen
namun script_x.sh
belum menyelesaikan tugasnya dan saya tidak mau kehilangan kemajuan saya.
Bisakah saya menjaga proses aktif tetap hidup agar terus bekerja di dalam emulator terminal reguler saya?
terminal
gnu-screen
xterm
terminal-emulator
terminal-multiplexer
suara-suara
sumber
sumber
screen
sesi.screen
. Saya ingin berhenti menggunakanscreen
. Saya tidak ingin menghentikan program yang sedang berjalan di dalamscreen
. Itu dia. Saya tidak tahu bagaimana mengklarifikasi situasi atau mengungkapkannya lebih sederhana dari ini.Jawaban:
TLDR: Jawaban praktis: Tidak.
Jawaban yang lebih panjang:
Secara teori Anda bisa. Jika Anda memulai sesuatu seperti
nohup myprog &
dari dalam layar maka itu akan terus berjalan. Ini akan mengabaikan sinyal hangup dan tidak akan memiliki input apa pun, tetapi dalam teori Anda dapat terus bekerja dengannya.Dalam praktiknya ini tidak terjadi. Jadi, kecuali jika Anda ingin melampirkan debugger ke proses yang sedang berjalan dan menulis ulang penanganan file dan memastikan bahwa proses tersebut menangani sinyal -1 ketika Anda menutup layar ... maka jawabannya adalah tidak.
Jika Anda siap melakukan ini, saya memiliki bookmark di rumah yang menunjuk ke [SU] di mana seseorang melakukan hal itu . Disimpan untuk kedahsyatan, bukan karena mudah dan sepele untuk dilakukan.
sumber
disown
atau pada tingkat yang lebih rendah) sehingga tidakSIGHUP
akan dikirim ketika proses induk mati. Menghubungkan kembali i / o adalah hal lain sama sekali - di situlah debugger masuk.nohup
jika Anda berada di shell kontrol pekerjaan (sepertibash
,ksh
,csh
,zsh
,ash
, dll). Jika Anda masih menggunakan shell kontrol non-pekerjaan seperti Bourne,sh
mungkin sekarang saatnya untuk meningkatkan.Anda dapat mencoba menggunakan
reptyr
untuk memasang kembali aplikasi yang sudah berjalan ke terminal yang berbeda. Ini memiliki beberapa masalah dengan proses pengiriman ke latar belakang.Saya baru saja mengujinya (mulai
htop
di dalamscreen
,reptyr
ke terminal lain, membunuhscreen
), dan sepertinya berfungsi dengan baik. Tetap ini solusi yang benar-benar gila, jadi tidak ada jaminan.sumber
Ya (jika "membunuh" tidak benar-benar membunuh), sebenarnya itulah gunanya layar. Anda harus memeriksa manual dan mencoba yang mana yang sesuai dengan kebutuhan Anda:
Maka yang Anda butuhkan adalah opsi baris perintah -D / -d -R / -r layar, tergantung pada pilihan Anda.
sumber