5 cara untuk menjaga sesi dan proses SSH jarak jauh berjalan setelah pemutusan
- 4471
- 1211
- John Ratke
Ssh atau Shell aman Secara sederhana adalah cara yang dengannya seseorang dapat mengakses pengguna lain dari jarak jauh di sistem lain tetapi hanya di baris perintah i.e. mode non-gui. Dalam istilah yang lebih teknis, ketika kami SSH ke pengguna lain pada beberapa sistem lain dan menjalankan perintah pada mesin itu, itu sebenarnya membuat terminal pseudo dan menempelkannya ke cangkang login dari pengguna yang masuk.
5 cara untuk menjaga sesi SSH berjalan setelah pemutusanSaat kami keluar dari sesi atau sesi kali setelah menganggur untuk beberapa waktu, Sighup Sinyal dikirim ke terminal semu dan semua pekerjaan yang telah dijalankan di terminal itu, bahkan pekerjaan yang memiliki pekerjaan orang tua mereka diinisiasi pada terminal semu juga dikirim sinyal desah dan dipaksa untuk berakhir.
Jangan lewatkan: 5 Praktik yang berguna untuk menjaga keamanan dan terlindungi server SSH
Hanya pekerjaan yang telah dikonfigurasi untuk mengabaikan sinyal ini adalah pekerjaan yang selamat dari penghentian sesi. Pada sistem Linux, kami dapat memiliki banyak cara untuk membuat pekerjaan ini berjalan di server jarak jauh atau mesin apa pun bahkan setelah pencarian pengguna dan penghentian sesi.
Memahami proses di Linux
Proses normal
Proses normal adalah proses yang memiliki masa hidup sesi. Mereka dimulai selama sesi sebagai proses latar depan dan berakhir dalam rentang waktu tertentu atau ketika sesi dicatat. Proses ini memiliki pemiliknya sebagai pengguna sistem yang valid, termasuk root.
Proses yatim
Proses yatim adalah proses yang awalnya memiliki orang tua yang menciptakan proses tetapi setelah beberapa waktu, proses induk tidak sengaja mati atau jatuh, menjadikan init sebagai induk dari proses itu. Proses seperti itu adalah orang tua dekat mereka yang menunggu proses ini sampai mereka mati atau berakhir.
Proses daemon
Ini adalah beberapa proses yang sengaja yatim piatu, proses yang sengaja dijalankan pada sistem disebut sebagai daemon atau proses yang sengaja. Mereka biasanya proses jangka panjang yang pernah dimulai dan kemudian terlepas dari terminal pengendali sehingga mereka dapat berjalan di latar belakang sampai tidak selesai, atau akhirnya melempar kesalahan. Orang tua dari proses seperti itu sengaja mati membuat anak dieksekusi di latar belakang.
Teknik untuk menjaga sesi ssh berjalan setelah pemutusan
Mungkin ada berbagai cara untuk meninggalkan sesi SSH yang berjalan setelah pemutusan seperti yang dijelaskan di bawah ini:
1. Menggunakan perintah layar untuk menjaga sesi ssh tetap berjalan
layar adalah manajer jendela teks untuk Linux yang memungkinkan pengguna untuk mengelola beberapa sesi terminal pada waktu yang sama, beralih di antara sesi, penebangan sesi untuk sesi yang sedang berjalan di layar, dan bahkan melanjutkan sesi kapan saja kami menginginkan tanpa khawatir sesi yang dicatkan atau terminal ditutup.
Sesi layar dapat dimulai dan kemudian terlepas dari terminal pengendali yang membuat mereka berjalan di latar belakang dan kemudian dilanjutkan kapan saja dan bahkan di tempat mana pun. Hanya Anda perlu memulai sesi Anda di layar dan saat Anda mau, lepaskan dari terminal semu (atau terminal pengendali) dan logout. Saat Anda merasa, Anda dapat masuk kembali dan melanjutkan sesi.
Memulai sesi layar
Setelah mengetik 'layar' Perintah, Anda akan berada di sesi layar baru, dalam sesi ini Anda dapat membuat jendela baru, melintasi antara jendela, mengunci layar, dan melakukan lebih banyak hal yang dapat Anda lakukan di terminal normal.
$ layarSesi Layar Memulai di Linux
Setelah sesi layar dimulai, Anda dapat menjalankan perintah apa pun dan menjaga sesi berjalan dengan melepaskan sesi.
Jalankan perintah di sesi layarMelepas layar
Tepat ketika Anda ingin keluar dari sesi jarak jauh, tetapi Anda ingin menjaga sesi yang Anda buat di mesin itu tetap hidup, maka apa yang perlu Anda lakukan adalah melepaskan layar dari terminal sehingga tidak memiliki terminal pengendali yang tersisa. Setelah melakukan ini, Anda dapat dengan aman keluar.
Untuk melepaskan layar dari terminal jarak jauh, cukup tekan “Ctrl+A”
segera diikuti oleh "D"
dan Anda akan kembali ke terminal melihat pesan bahwa layar terpisah. Sekarang Anda dapat dengan aman keluar dan sesi Anda akan dibiarkan hidup.
Melanjutkan sesi layar terpisah
Jika Anda ingin melanjutkan sesi layar terpisah yang Anda tinggalkan sebelum keluar, cukup masuk kembali ke terminal jarak jauh lagi dan ketik "Layar -R"
Jika hanya satu layar dibuka, dan jika beberapa sesi layar dibuka "Layar -R"
.
$ screen -r $ screen -rLanjutkan sesi layar terpisah
Untuk mempelajari lebih lanjut tentang perintah layar dan cara menggunakannya cukup ikuti tautan: Gunakan perintah layar untuk mengelola sesi terminal linux
2. Menggunakan TMUX (terminal multiplexer) untuk menjaga sesi SSH tetap berjalan
Tmux adalah perangkat lunak lain yang dibuat untuk menjadi pengganti layar. Itu memiliki sebagian besar kemampuan layar, dengan sedikit kemampuan tambahan yang membuatnya lebih kuat dari layar.
Ini memungkinkan, terlepas dari semua opsi yang ditawarkan oleh layar, membelah panel secara horizontal atau vertikal di antara beberapa jendela, mengubah ukuran jendela, pemantauan aktivitas sesi, skrip menggunakan mode baris perintah dll. Karena fitur -fitur TMUX ini, telah menikmati adopsi yang luas dengan hampir semua distribusi UNIX dan bahkan telah dimasukkan dalam sistem dasar OpenBSD.
Mulailah sesi tmux
Setelah melakukan SSH pada host jarak jauh dan mengetik tmux, Anda akan memasuki sesi baru dengan jendela baru yang membuka di depan Anda, di mana Anda dapat melakukan apa pun yang Anda lakukan di terminal normal.
$ tmuxMulai sesi Terminal Tmux
Setelah melakukan operasi Anda di terminal, Anda dapat melepaskan sesi itu dari terminal pengendali sehingga masuk ke latar belakang dan Anda dapat dengan aman masuk.
Lakukan perintah Linux di sesi tmuxLepaskan sesi tmux dari terminal
Entah Anda bisa lari "TMux DEARACH"
saat menjalankan sesi tmux atau Anda dapat menggunakan pintasan (Ctrl+b lalu d)
. Setelah ini sesi Anda saat ini akan terlepas dan Anda akan kembali ke terminal Anda dari tempat Anda dapat keluar dengan aman.
$ tmux melepaskanLepaskan sesi tmux di linux
Melanjutkan sesi tmux tertutup
Untuk membuka kembali sesi yang Anda lepaskan dan tinggalkan seperti saat Anda keluar dari sistem, cukup masuk kembali ke mesin dan ketik jarak jauh “TMux Attach” untuk memasang kembali sesi tertutup dan masih ada di sana dan berjalan.
$ tmux lampirkanLanjutkan sesi tertutup tmux
Untuk mempelajari lebih lanjut tentang TMUX dan cara menggunakannya cukup ikuti tautan: Gunakan multiplexer terminal tmux untuk mengelola beberapa terminal Linux.
3. Menggunakan perintah nohup untuk terus menjalankan sesi ssh
Jika Anda tidak begitu terbiasa layar atau tmux, Anda dapat gunakan Nohup Dan kirim perintah lama Anda ke latar belakang sehingga Anda dapat melanjutkan sementara perintah akan terus dieksekusi di latar belakang. Setelah itu Anda dapat dengan aman keluar.
Dengan perintah nohup kami memberi tahu proses untuk mengabaikan Sighup sinyal yang dikirim oleh sesi ssh tentang penghentian, sehingga membuat perintah tetap ada bahkan setelah logout sesi. Pada sesi Logout Perintah dikesampingkan dari Terminal Mengontrol dan terus berjalan di latar belakang sebagai proses daemon.
Mengeksekusi perintah menggunakan nohup di latar belakang
Di sini, adalah skenario sederhana di mana, kami telah menjalankan perintah temukan untuk mencari file di latar belakang pada sesi ssh menggunakan nohup, setelah itu tugas dikirim ke latar belakang dengan cepat kembali segera memberikan Pid dan pekerjaan PENGENAL dari prosesnya ([JobID] PID)
.
# nohup find / -type f $ gt; file_in_system.keluar 2> 1 &Jalankan perintah Linux di latar belakang
Melanjutkan sesi untuk melihat jika pekerjaan masih berjalan
Saat Anda masuk kembali lagi, Anda dapat memeriksa status perintah, membawanya kembali ke latar depan menggunakan 'fg %jobid'
untuk memantau kemajuannya dan sebagainya. Di bawah ini, output menunjukkan bahwa pekerjaan selesai karena tidak ditampilkan pada re-login, dan telah memberikan output yang ditampilkan.
# fg %jobidJalankan perintah Linux di latar belakang
4. Menggunakan perintah disembunyikan untuk menjaga sesi ssh tetap berjalan
Cara elegan lain untuk membiarkan perintah Anda atau satu tugas berjalan di latar belakang dan tetap hidup bahkan setelah sesi logout atau pemutusan adalah dengan menggunakan menyangkal.
Menyangkal, menghapus pekerjaan dari daftar pekerjaan proses sistem, sehingga prosesnya dilindungi dari dibunuh selama pemutusan sesi karena tidak akan menerima Sighup oleh shell saat Anda keluar.
Kerugian dari metode ini adalah bahwa, itu harus digunakan hanya untuk pekerjaan yang tidak memerlukan input dari Stdin dan tidak perlu menulis stdout, Kecuali jika Anda secara khusus mengarahkan input dan output pekerjaan, karena ketika Ayub akan mencoba berinteraksi dengan Stdin atau stdout, itu akan berhenti.
Mengeksekusi perintah menggunakan latar belakang
Di bawah, kami mengirim ping Perintah ke latar belakang sehingga UT terus berjalan dan dihapus dari daftar pekerjaan. Seperti yang terlihat, pekerjaan itu pertama kali ditangguhkan, setelah itu masih ada dalam daftar pekerjaan sebagai ID Proses: 15368.
$ ping tecmint.com> pingout & $ jobs -l $ decown -h %1 $ ps -ef | grep pingJalankan perintah Linux menggunakan Disownel
Setelah sinyal yang dikecewakan itu diteruskan ke pekerjaan itu, dan itu dihapus dari daftar kerja, meskipun masih berjalan di latar belakang. Pekerjaan itu masih akan berjalan saat Anda akan masuk kembali ke server jarak jauh seperti yang terlihat di bawah ini.
$ ps -ef | grep pingVerifikasi status pekerjaan
5. Menggunakan perintah setsid untuk menjalankan sesi ssh
Utilitas lain untuk mencapai perilaku yang diperlukan adalah setsid. Nohup memiliki kelemahan dalam arti bahwa kelompok proses proses tetap sama sehingga proses berjalan dengan Nohup rentan terhadap sinyal apa pun yang dikirim ke seluruh kelompok proses (seperti Ctrl + c
).
setsid Di sisi lain mengalokasikan grup proses baru untuk proses yang dieksekusi dan karenanya, proses yang dibuat sepenuhnya dalam kelompok proses yang baru dialokasikan dan dapat dieksekusi dengan aman tanpa takut dibunuh bahkan setelah logout sesi.
Jalankan perintah apa pun menggunakan setSID
Di sini, ini menunjukkan bahwa prosesnya 'tidur 10m'
telah terlepas dari terminal pengendali, sejak saat itu telah dibuat.
$ setsid tidur 10m $ ps -ef | grep tidurJalankan perintah linux menggunakan setsid
Sekarang, ketika Anda akan menghubungkan kembali sesi, Anda masih akan menemukan proses ini berjalan.
$ ps -ef | grep [s] leepProses Linux Menjalankan Latar Belakang
Kesimpulan
Cara apa yang dapat Anda pikirkan untuk menjaga proses Anda berjalan bahkan setelah Anda keluar dari sesi SSH? Jika ada cara lain dan efisien yang dapat Anda pikirkan, sebutkan di komentar Anda.
- « Cara menginstal browser sqlite dan sqlite di ubuntu
- GDU - Penganalisa penggunaan disk yang cukup cepat untuk Linux »