5 Cara untuk Mengekalkan Sesi SSH Jauh dan Proses Berlari Selepas Pemotongan
- 2424
- 774
- Jerome Quitzon
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 pemotonganApabila 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.
$ skrinMemulakan 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 skrinMelepaskan 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.
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 -rMenyambung 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.
$ tmuxMulakan 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 tmuxTanggalkan 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 DetretTanggalkan 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 melampirkanResume 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 %jobidJalankan 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 pingJalankan 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 pingSahkan 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 TidurJalankan arahan Linux menggunakan setSID
Sekarang, apabila anda akan log semula sesi ini, anda masih akan menemui proses ini berjalan.
$ ps -ef | grep [s] leepProses 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.
- « Cara Memasang Pelayar SQLite dan SQLite di Ubuntu
- GDU - Analyzer Penggunaan Cakera Cukup Cepat untuk Linux »