Cara Menggunakan Perintah Skrin Untuk Menghindari Penamatan Sesi SSH yang Tidak Dijangka

Cara Menggunakan Perintah Skrin Untuk Menghindari Penamatan Sesi SSH yang Tidak Dijangka

Masalah pemotongan SSH

Sesi terminal anda mungkin ditutup kerana pelbagai isu rangkaian semasa anda berada
Menjalankan proses pada mesin jauh misalnya.:

# Tulis gagal: paip patah 

Hasil daripada pemotongan rangkaian ini sesi shell ssh anda juga secara tidak sengaja akan membunuh mana -mana proses kanak -kanak yang berjalan di bawah anda SSH sesi di mesin jauh.

Menjalankan Penyelesaian Sesi SSH yang tidak terganggu

Menggunakan skrin Perintah untuk menyimpan sesi. Walaupun sesi SSH anda terputus, arahan skrin akan memastikan proses jauh anda berjalan. Pertimbangkan contoh SSH berikut di mana kami cuba untuk SSH dari tuan rumah tempatan 10.1.1.2 ke jauh 10.1.1.15 Tuan rumah.

Contoh Perintah Skrin SSH

Mari mulakan dengan menyenaraikan sesi skrin yang dibuka sekarang:

Tempatan> $ screen -list tiada soket yang terdapat di/var/run/screen/s -lubos. 

Dari perkara di atas skrin output arahan kita dapat melihat bahawa pada masa ini kita tidak mempunyai sesi yang dibuka. Mari buat yang baru skrin sesi semasa kami pada masa yang sama SSH ke tuan rumah terpencil. Buka terminal baru dan masukkan:

Tempatan> $ $ SSH [email protected] 

Senaraikan sesi skrin kami sekali lagi:

Local> $ screen -list Terdapat skrin di: 5646.PTS-0.Thebeast (13/05/15 16:49:30) (dilampirkan) 1 soket di/var/run/screen/s-lubos. 

Di atas skrin Output menunjukkan bahawa kami mempunyai satu sesi yang dilampirkan dengan ID PID 5646. Pada masa ini kita boleh memulakan proses pada hos jauh sebagai contoh kita boleh melakukan ping mudah:

Jauh> # ping 8.8.4.4 ping 8.8.4.4 (8.8.4.4) 56 (84) bait data. 64 bait dari 8.8.4.4: ICMP_REQ = 1 TTL = 57 Masa = 18.2 ms 64 bait dari 8.8.4.4: ICMP_REQ = 2 TTL = 57 Masa = 17.2 ms 64 bait dari 8.8.4.4: ICMP_REQ = 3 TTL = 57 Masa = 18.0 ms 

Pada peringkat ini, kita dapat mensimulasikan pemotongan rangkaian ke hos jauh oleh kabel rangkaian secara manual:

tempatan> $ ping 10.1.1.15 Ping 10.1.1.15 (10.1.1.15) 56 (84) bait data. Dari 10.1.1.2 ICMP_SEQ = 9 Hos Destinasi tidak dapat dicapai dari 10.1.1.2 ICMP_SEQ = 10 Hos Destinasi tidak dapat dicapai dari 10.1.1.2 ICMP_SEQ = 11 Hos Destinasi Tidak dapat dicapai ^C --- 10.1.1.15 statistik ping --- 13 paket dihantar, 0 diterima, +3 kesilapan, kehilangan paket 100%, paip masa 12088ms 3 

Pada ketika ini kami telah kehilangan sambungan dan kami SSH sesi akan membeku. Sekarang kita boleh menutup tetingkap terminal dengan terputus SSH sesi dan senaraikan skrin kami:

Local> $ screen -list Terdapat skrin di: 5646.PTS-0.Thebeast (13/05/15 16:49:30) (Dipempatkan) 1 soket di/var/run/screen/s-lubos. 

Seperti yang dapat kita lihat sesi skrin kami kini terlepas. Seterusnya, kami mencipta semula sambungan rangkaian ke tuan rumah terpencil:

tempatan> $ ping 10.1.1.15 Ping 10.1.1.15 (10.1.1.15) 56 (84) bait data. 64 bait dari 10.1.1.15: icmp_seq = 1 ttl = 64 time = 0.951 ms 64 bait dari 10.1.1.15: icmp_seq = 2 ttl = 64 time = 0.563 ms ^c --- 10.1.1.15 statistik ping --- 2 paket dihantar, 2 diterima, 0% kehilangan paket, masa 1001ms rtt min/avg/max/mdev = 0.563/0.757/0.951/0.194 ms 

Pada ketika ini, kita boleh sekali lagi kembali ke sesi SSH yang telah dibuka sebelum ini:

tempatan> $ skrin -d -r 64 bait dari 8.8.4.4: ICMP_REQ = 203 TTL = 57 Masa = 18.2 ms 64 bait dari 8.8.4.4: ICMP_REQ = 204 TTL = 57 Masa = 18.1 ms 64 bait dari 8.8.4.4: ICMP_REQ = 205 TTL = 57 Masa = 18.1 ms 64 bait dari 8.8.4.4: ICMP_REQ = 206 TTL = 57 Masa = 18.4 ms 64 bait dari 8.8.4.4: ICMP_REQ = 207 TTL = 57 Masa = 18.1 ms ^c --- 8.8.4.4 statistik ping --- 207 paket dihantar, 207 diterima, 0% kehilangan paket, masa 206310ms rtt min/avg/max/mdev = 17.231/18.369/23.795/0.571 ms 

Output di atas dengan kehilangan paket 0% adalah bukti bahawa walaupun kita telah terputus dari sesi terpencil oleh kegagalan rangkaian skrin Perintah memadamkan proses jauh hidup tanpa gangguan.

Tutorial Linux Berkaitan:

  • Cara menyebarkan isyarat kepada proses kanak -kanak dari bash ..
  • Cara Membunuh Proses Dengan Nama
  • Pengurusan senarai proses dan penamatan proses automatik
  • Cara Membunuh Proses Berdasarkan Nombor Port di Linux
  • Pengenalan kepada Paip Dinamakan di Bash Shell
  • Cara Menggunakan Perintah Killall di Linux
  • Panduan Penyelesaian Masalah Umum GNU/Linux untuk Pemula
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Cara melancarkan proses luaran dengan Python dan ..
  • Perintah Linux Asas