5 Cara untuk Mengekalkan Sesi SSH Jauh dan Proses Berlari Selepas Pemotongan

5 Cara untuk Mengekalkan Sesi SSH Jauh dan Proses Berlari Selepas Pemotongan

SSH atau Shell selamat Secara ringkas adalah cara yang mana seseorang dapat mengakses pengguna lain dari sistem lain tetapi hanya dalam baris arahan i.e. mod bukan GUI. Dalam istilah yang lebih teknikal, apabila kami menyampaikan kepada pengguna lain pada beberapa sistem lain dan menjalankan arahan pada mesin itu, ia sebenarnya mewujudkan terminal pseudo dan melampirkannya ke shell log masuk pengguna log masuk.

5 cara untuk memastikan sesi SSH berjalan selepas pemotongan

Apabila kita keluar dari sesi atau sesi masa keluar setelah terbiar untuk beberapa waktu, Sighup Isyarat dihantar ke terminal pseudo dan semua pekerjaan yang telah dijalankan di terminal itu, bahkan pekerjaan yang mempunyai pekerjaan induk mereka yang dimulakan pada terminal pseudo juga menghantar isyarat mengeluh dan dipaksa untuk menamatkan.

Jangan ketinggalan: 5 Amalan Berguna Untuk Menjaga Pelayan SSH Selamat dan Dilindungi

Hanya pekerjaan yang telah dikonfigurasikan untuk mengabaikan isyarat ini adalah yang bertahan dalam penamatan sesi. Pada sistem Linux, kita boleh mempunyai banyak cara untuk membuat pekerjaan ini berjalan di pelayan jauh atau mesin mana -mana walaupun selepas logout pengguna dan penamatan sesi.

Memahami proses di linux

Proses normal

Proses biasa adalah yang mempunyai jangka hayat sesi. Mereka dimulakan semasa sesi sebagai proses latar depan dan berakhir dalam jangka masa tertentu atau ketika sesi dilog keluar. Proses ini mempunyai pemiliknya sebagai mana -mana pengguna sistem yang sah, termasuk root.

Proses anak yatim

Proses anak yatim adalah yang pada mulanya mempunyai ibu bapa yang mencipta proses tetapi selepas beberapa waktu, proses induk secara tidak sengaja mati atau terhempas, menjadikan init menjadi ibu bapa proses itu. Proses sedemikian mempunyai init sebagai ibu bapa terdekat mereka yang menunggu proses ini sehingga mereka mati atau berakhir.

Proses daemon

Ini adalah beberapa proses yatim yang sengaja, proses sedemikian yang sengaja dibiarkan berjalan pada sistem yang disebut sebagai daemon atau proses yatim yang sengaja. Mereka biasanya proses jangka panjang yang pernah dimulakan dan kemudian terpisah dari mana-mana terminal mengawal supaya mereka dapat berjalan di latar belakang sehingga mereka tidak selesai, atau akhirnya membuang kesilapan. Ibu bapa proses sedemikian sengaja mati membuat anak melaksanakan di latar belakang.

Teknik untuk memastikan sesi SSH berjalan selepas pemotongan

Terdapat pelbagai cara untuk meninggalkan sesi SSH yang berjalan selepas pemotongan seperti yang diterangkan di bawah:

1. Menggunakan arahan skrin untuk memastikan sesi SSH berjalan

skrin adalah pengurus tetingkap teks untuk Linux yang membolehkan pengguna menguruskan sesi terminal berbilang pada masa yang sama, beralih antara sesi, pembalakan sesi untuk sesi berjalan di skrin, dan bahkan menyambung semula sesi pada bila -bila masa yang kami inginkan tanpa perlu risau tentang sesi yang dilog masuk atau terminal ditutup.

Sesi skrin boleh dimulakan dan kemudian terpisah dari terminal kawalan yang meninggalkan mereka berjalan di latar belakang dan kemudian disambung semula pada bila -bila masa dan bahkan di mana -mana tempat. Hanya anda perlu memulakan sesi anda di skrin dan bila anda mahu, lepaskannya dari terminal pseudo (atau terminal kawalan) dan logout. Apabila anda merasa, anda boleh logakan semula dan meneruskan sesi.

Memulakan Sesi Skrin

Selepas menaip 'Skrin' Perintah, anda akan berada dalam sesi skrin baru, dalam sesi ini, anda boleh membuat tingkap baru, melintasi Windows, mengunci skrin, dan melakukan banyak lagi perkara yang boleh anda lakukan di terminal biasa.

$ skrin 
Memulakan Sesi Skrin di Linux

Sekali sesi skrin bermula, anda boleh menjalankan sebarang arahan dan menyimpan sesi yang dijalankan dengan melepaskan sesi.

Jalankan arahan dalam sesi skrin
Melepaskan skrin

Hanya apabila anda ingin log keluar dari sesi terpencil, tetapi anda ingin menyimpan sesi yang anda buat pada mesin itu hidup, maka apa yang perlu anda lakukan adalah melepaskan skrin dari terminal supaya tidak mempunyai terminal yang mengawal. Setelah melakukan ini, anda boleh logout dengan selamat.

Untuk melepaskan skrin dari terminal jauh, tekan hanya "Ctrl+A" segera diikuti oleh "D" dan anda akan kembali ke terminal melihat mesej bahawa skrin terpisah. Sekarang anda boleh logout dengan selamat dan sesi anda akan ditinggalkan hidup.

Menanggalkan Sesi Skrin Linux
Menyambung semula sesi skrin berkembar

Sekiranya anda ingin meneruskan sesi skrin yang terpisah yang anda tinggalkan sebelum log keluar, cuma login semula ke terminal terpencil lagi dan taipkan "Skrin -r" Sekiranya hanya satu skrin dibuka, dan jika sesi skrin berbilang dibuka "Skrin -r".

$ skrin -r $ skrin -r  
Menyambung semula sesi skrin terpisah

Untuk mengetahui lebih lanjut mengenai arahan skrin dan cara menggunakannya hanya ikuti pautan: Gunakan arahan skrin untuk menguruskan sesi terminal Linux

2. Menggunakan tmux (terminal multiplexer) untuk memastikan sesi ssh berjalan

Tmux adalah perisian lain yang dibuat untuk menjadi pengganti untuk skrin. Ia mempunyai kebanyakan keupayaan skrin, dengan beberapa keupayaan tambahan yang menjadikannya lebih kuat daripada skrin.

Ia membolehkan, selain daripada semua pilihan yang ditawarkan oleh skrin, memisahkan panel secara mendatar atau menegak antara pelbagai tingkap, saiz semula tetingkap, pemantauan aktiviti sesi, skrip menggunakan mod baris arahan dan lain -lain. Oleh kerana ciri -ciri TMUX ini, ia telah menikmati penggunaan yang luas oleh hampir semua pengagihan UNIX dan bahkan ia telah dimasukkan ke dalam sistem asas OpenBSD.

Mulakan sesi TMUX

Setelah melakukan SSH di tuan rumah terpencil dan menaip tmux, Anda akan memasuki sesi baru dengan pembukaan tetingkap baru di hadapan anda, di mana anda boleh melakukan apa sahaja yang anda lakukan di terminal biasa.

$ tmux 
Mulakan sesi terminal tmux

Setelah melaksanakan operasi anda di terminal, anda boleh melepaskan sesi itu dari terminal kawalan supaya ia masuk ke latar belakang dan anda boleh logout dengan selamat.

Lakukan arahan Linux dalam sesi tmux
Tanggalkan sesi tmux dari terminal

Sama ada anda boleh berlari "TMUX Detret" semasa menjalankan sesi TMUX atau anda boleh menggunakan jalan pintas (Ctrl+b kemudian d). Selepas ini sesi semasa anda akan terlepas dan anda akan kembali ke terminal anda dari mana anda boleh log keluar dengan selamat.

$ tmux Detret 
Tanggalkan Sesi Tmux di Linux
Meneruskan sesi tmux tertutup

Untuk membuka semula sesi yang anda hancurkan dan ditinggalkan seperti ketika anda keluar dari sistem, hanya masuk semula ke mesin jauh dan taip "TMUX Lampiran" untuk kembali ke sesi tertutup dan masih ada di sana dan berjalan.

$ tmux melampirkan 
Resume sesi tertutup TMUX

Untuk mengetahui lebih lanjut mengenai TMUX dan cara menggunakannya hanya ikuti pautan: Gunakan multiplexer terminal TMUX untuk menguruskan pelbagai terminal Linux.

3. Menggunakan perintah nohup untuk terus menjalankan sesi ssh

Sekiranya anda tidak biasa dengan skrin atau tmux, anda boleh menggunakan nohup dan hantarkan arahan jangka panjang anda ke latar belakang supaya anda dapat meneruskan sementara perintah akan terus melaksanakan di latar belakang. Selepas itu anda dapat log keluar dengan selamat.

Dengan perintah nohup kita memberitahu proses untuk mengabaikan Sighup Isyarat yang dihantar oleh SSH Sesi pada Penamatan, dengan itu membuat perintah berterusan walaupun selepas logout sesi. Pada Sesi Logout Perintah dikurangkan dari mengawal terminal dan terus berjalan di latar belakang sebagai proses daemon.

Melaksanakan arahan menggunakan nohup di latar belakang

Di sini, adalah senario mudah di mana, kami telah menjalankan perintah mencari untuk mencari fail di latar belakang pada sesi ssh menggunakan nohup, selepas itu tugas itu dihantar ke latar belakang dengan segera kembali memberi segera Pid dan pekerjaan ID proses ([JobID] PID).

# nohup cari / -type f $ gt; files_in_system.keluar 2> 1 & 
Jalankan arahan Linux di latar belakang
Menyambung semula sesi untuk melihat sama ada Job masih berjalan

Apabila anda kembali lagi, anda boleh menyemak status arahan, membawanya kembali ke latar depan menggunakan 'fg %jobid' untuk memantau kemajuannya dan sebagainya. Di bawah, output menunjukkan bahawa pekerjaan itu selesai kerana ia tidak dipaparkan pada Login Re, dan telah memberikan output yang dipaparkan.

# fg %jobid 
Jalankan arahan Linux di latar belakang

4. Menggunakan arahan disown untuk memastikan sesi SSH berjalan

Cara lain yang elegan untuk membiarkan arahan anda atau satu tugas dijalankan di latar belakang dan terus hidup walaupun selepas logout sesi atau pemotongan adalah dengan menggunakan menyangkal.

Menyangkal, membuang kerja dari senarai kerja proses sistem, jadi prosesnya dilindungi daripada dibunuh semasa pemotongan sesi kerana ia tidak akan diterima Sighup oleh shell semasa anda logout.

Kelemahan kaedah ini ialah, ia hanya harus digunakan untuk pekerjaan yang tidak memerlukan sebarang input dari stdin dan tidak perlu menulis ke stdout, melainkan jika anda secara khusus mengalihkan input dan output pekerjaan, kerana ketika Ayub akan berusaha berinteraksi dengan stdin atau stdout, ia akan berhenti.

Melaksanakan arahan menggunakan pendakian di latar belakang

Di bawah, kami menghantar ping perintah ke latar belakang supaya UT terus berjalan dan dikeluarkan dari senarai pekerjaan. Seperti yang dilihat, pekerjaan itu mula -mula digantung, selepas itu masih dalam senarai pekerjaan sebagai ID Proses: 15368.

$ ping tecmint.com> pingout & $ jobs -l $ disown -h %1 $ ps -ef | grep ping 
Jalankan arahan Linux menggunakan disown

Selepas isyarat disuntik itu diserahkan kepada pekerjaan, dan ia telah dikeluarkan dari senarai pekerjaan, walaupun masih berjalan di latar belakang. Pekerjaan masih akan berjalan apabila anda akan masuk semula ke pelayan jauh seperti yang dilihat di bawah.

$ ps -ef | grep ping 
Sahkan status pekerjaan

5. Menggunakan perintah setSid untuk meletakkan sesi ssh berjalan

Utiliti lain untuk mencapai tingkah laku yang diperlukan adalah setSid. Nohup mempunyai kelemahan dalam erti kata bahawa kumpulan proses proses tetap sama sehingga proses berjalan dengan nohup terdedah kepada sebarang isyarat yang dihantar ke seluruh kumpulan proses (seperti Ctrl + c).

setSid Sebaliknya, memperuntukkan kumpulan proses baru ke proses yang dilaksanakan dan oleh itu, proses yang dibuat sepenuhnya dalam kumpulan proses yang baru diperuntukkan dan dapat dilaksanakan dengan selamat tanpa rasa takut dibunuh walaupun selepas logout sesi.

Jalankan arahan menggunakan setSID

Di sini, ia menunjukkan bahawa prosesnya 'Tidur 10m' telah terpisah dari terminal kawalan, sejak masa ia telah dibuat.

$ setSid Sleep 10m $ ps -ef | GREP Tidur 
Jalankan arahan Linux menggunakan setSID

Sekarang, apabila anda akan log semula sesi ini, anda masih akan menemui proses ini berjalan.

$ ps -ef | grep [s] leep 
Proses Linux Menjalankan Latar Belakang

Kesimpulan

Bagaimana cara yang anda fikirkan untuk memastikan proses anda berjalan walaupun selepas anda log keluar dari sesi ssh? Sekiranya ada cara lain dan efisien yang anda boleh fikirkan, nyatakan dalam komen anda.