jawaban sebelumnya tidak berfungsi untuk saya di terminal winputty dan koneksi server amazon ssh .. tetapi yang ini berfungsi:
screen -S yourscreentitlehere -X stuff $'\003'
referensi:
- Mengirim ctrl-c ke sesi layar tertentu
- $'\003' adalah ctrl+c http://donsnotes.com/tech/charsets/ascii.html
- barangnya adalah https://www.gnu.org/software/screen/manual/screen.html#Paste
Saya menggunakan ini untuk keluar dari ratusan sesi layar yang salah yang dibuat oleh perintah buggy:
for s in $(screen -ls|grep -o -P "1\d+.tty"); do screen -X -S $s quit; done;
dimana:grep -o -P "1\d+.tty"
adalah perintah untuk mendapatkan nama sesi dengan Perl-like name regex "1\d+.tty"
yang menangkap semua sesi dimulai dengan nomor 1
, memiliki beberapa nomor lain (\d
) dan diakhiri dengan .tty
Peringatan :Anda harus menguji dengan perintah ini terlebih dahulu untuk melihat Anda mendapatkan daftar sesi yang tepat yang Anda inginkan sebelum menerapkan perintah di atas. Ini untuk menghindari penghentian sesi yang tidak diinginkan:
for s in $(screen -ls|grep -o -P "1\d+.tty"); do echo $s; done;
Saya selalu menggunakan echo
ini uji setiap kali daftar di for
loop tidak jelas, misalnya yang dihasilkan oleh sub-perintah di $()
ekspansi.
Ada beberapa cara 'layar' untuk menutup sesi layar tertentu dari baris perintah (non-interaktif).
1) kirim perintah 'keluar':
screen -X -S "sessionname" quit
2) kirim Ctrl-C ke sesi layar yang menjalankan skrip:
screen -X -S "sessionname" stuff "^C"
Dalam kedua kasus, Anda perlu menggunakan 'screen -ls' untuk menemukan nama sesi dari sesi layar yang ingin Anda matikan ... jika hanya ada satu sesi layar yang berjalan, Anda tidak perlu menentukan -S " sessionname".
CTRL+a lalu 'k' akan menghentikan sesi layar.