it-swarm-id.com

Terus proses berjalan setelah sesi SSH terputus

Saya kadang-kadang memiliki proses yang berjalan lama yang ingin saya mulai sebelum pulang, jadi saya membuat sesi SSH ke server untuk memulai proses, tetapi kemudian saya ingin menutup laptop saya dan pulang dan kemudian, setelah makan malam, saya ingin periksa proses yang saya mulai sebelum meninggalkan pekerjaan. Bagaimana saya bisa melakukan itu dengan SSH? Pemahaman saya adalah bahwa jika Anda memutuskan koneksi SSH Anda, Anda juga akan memutus sesi login Anda di server, sehingga mematikan proses yang berjalan lama.

216

Gunakan Nohup untuk membuat proses Anda mengabaikan sinyal hangup:

$ Nohup long-running-process &
$ exit
217
Warren Young

Anda ingin menggunakan GNU Layar. Ini sangat luar biasa!

ssh [email protected]
screen               #start a screen session
run-a-long-process

CTRL+a , d untuk keluar dari sesi layar Anda

exit                 #disconnect from the server, while run-a-long-process continues

Ketika Anda kembali ke laptop Anda:

ssh [email protected]
screen -r            #resume the screen session

Kemudian periksa kemajuan proses jangka panjang Anda!

screen adalah alat yang sangat komprehensif, dan dapat melakukan lebih banyak dari yang saya jelaskan. Saat berada di sesi layar, coba ctrl + a ,? untuk mempelajari beberapa perintah umum. Mungkin yang paling umum adalah:

  • CTRL+a , c untuk membuat jendela baru
  • CTRL+a , n untuk beralih ke jendela berikutnya di sesi layar Anda
  • CTRL+a , p untuk beralih ke jendela sebelumnya di sesi layar Anda
  • jika Anda masuk dari banyak sistem yang berbeda, Anda mungkin secara tidak sengaja membiarkan diri Anda terikat pada sesi layar aktif di komputer lain. untuk alasan itu, saya selalu melanjutkan dengan screen -d -r untuk memastikan bahwa jika Shell lain terpasang pada sesi layar saya, itu akan terlepas sebelum saya melanjutkannya di sistem saya saat ini.
143
Sandy

Jika Anda belum merencanakan ke depan dan mengatur screen, dll. Lakukan saja hal berikut:

  1. Jika proses Anda berjalan di latar belakang: goto # 3, kalau tidak: Ctrl-Z untuk menangguhkan proses latar depan. Ini akan melaporkan pekerjaan # dari proses yang ditangguhkan, misalnya:

    [1]+  Stopped                 processName
    
  2. Kirim processName ke latar belakang dengan bg %1 (menggunakan apa pun pekerjaan # yang mengikuti %). Ini akan melanjutkan processName di latar belakang.

  3. DisownprocessName dengan disown %1 atau disown PID. Menggunakan -h tandai jika Anda ingin mempertahankan kepemilikan hingga Anda mengakhiri Shell Anda saat ini.

42
Mike Covington

Yang ingin Anda gunakan adalah layar atau lebih baik pembungkus ramah pengguna di sekitar layar yang disebut byobu.

Layar memungkinkan Anda untuk menjalankan beberapa sesi terminal virtual dalam sesi ssh yang sama. A tutorial dan halaman bantuan tersedia.

byob adalah pembungkus yang memungkinkan untuk dengan mudah membuka layar baru dengan tombol fungsi sederhana alih-alih kombinasi tombol dari ctrl-a. Ini juga menunjukkan garis status dengan semua terminal virtual terbuka yang dapat dinamai.

Fitur bagus lainnya adalah kenyataan bahwa semua layar Anda dapat tetap terjaga saat koneksi ssh Anda terputus. Anda hanya terhubung lagi melalui ssh dan memanggil byobu dan semuanya seperti sebelumnya.

Akhirnya beberapa tangkapan layar dari byobu.

15
txwikinger

Mungkin perlu dicatat

ssh -t lala screen -rxU moo akan melampirkan ke sesi moo pada Host lala

ssh -t lala screen -S moo akan membuat sesi moo pada Host lala

dan

ssh -t lala screen -S moo quux akan membuat sesi moo pada Host lala dan menjalankan program quux , berhenti dari sesi saat selesai.

9
cjac

Anda dapat menemukan panduan yang bagus di sini: Jaga Sesi SSH Anda Berjalan saat Anda Putus

Sudo apt-get install screen

Sekarang Anda dapat memulai sesi layar baru dengan hanya mengetik layar di baris perintah. Anda akan diperlihatkan beberapa informasi tentang layar. Tekan enter, dan Anda akan berada di Prompt normal.

Untuk memutuskan sambungan (tapi biarkan sesi berjalan) Tekan Ctrl + A lalu Ctrl + D dalam suksesi segera. Anda akan melihat pesan [terlepas]

Untuk menyambung kembali ke sesi yang sudah berjalan

screen -r

Untuk menyambung kembali ke sesi yang ada, atau membuat yang baru jika tidak ada

screen -D -r

Untuk membuat jendela baru di dalam sesi layar yang sedang berjalan Tekan Ctrl + A lalu C dalam suksesi segera. Anda akan melihat Prompt baru.

Untuk beralih dari satu jendela layar ke jendela lainnya Tekan Ctrl + A lalu Ctrl + A dalam suksesi segera.

Untuk membuat daftar jendela layar terbuka Tekan Ctrl + A lalu W dalam suksesi segera

4

Pertanyaan lama, aneh masih tidak ada yang menyarankan tmux , yang bertindak sebagai pembungkus untuk n konsol dan membuatnya tetap terbuka sampai dibutuhkan. Ini memungkinkan lebih banyak kontrol, di samping sejumlah fungsi yang dimiliki tmux. Sangat mudah untuk mengelolanya, Anda cukup menjalankan tmux, yang membawa Anda ke Shell, memulai pekerjaan Anda, lalu tekan ctrl + b diikuti oleh d (lepas) (ctrl+b adalah "ok google" dari tmux, dan d adalah perintah untuk menutup tanpa keluar dari Shell). Ini benar-benar berfungsi jika Anda baru saja menutup, misalnya, Putty. Setelah makan malam, ketika Anda terhubung lagi, Anda dapat membuka kembali tmux dengan tmux attach untuk melihat layar Anda persis seperti saat Anda pergi. Sesuatu yang saya sukai adalah panel pemisahan: ctrl+b lalu tekan ". Untuk mengubah dari satu panel ke yang lain, ctrl+b lalu tekan panah atas/bawah.

4
nnsense

Saya menggunakan NX NoMachine, yang gratis untuk saya karena hanya saya. Pada dasarnya, ini menjalankan sesi X di server yang dapat Anda sambungkan dan putuskan dari berulang-ulang. Sesi X terus berjalan saat Anda tidak terhubung. Koneksi dapat dilakukan dari mana saja. Anda dapat memilih antara jendela mengambang atau satu jendela yang berisi seluruh desktop (mis. Desktop Gnome lengkap). Klien (yang Anda jalankan di laptop Anda) dapat dijalankan di Linux, MacOS, Solaris atau Microsoft Windows. Dalam kasus terakhir jika Anda memilih jendela mengambang, jendela itu muncul secara terpisah di Windows Taskbar.

Saya menggunakan Windows XP laptop saya (yang saya perlukan untuk perangkat keras spesifik Windows yang saya miliki) sebagai ujung depan untuk dua server Linux saya menggunakan NX Nomachine. Saya bahkan dapat mencetak ke printer yang terhubung ke laptop Windows saya dari Linux.

2
Rob_before_edits

Tmux adalah pilihan yang baik untuk menjalankan proses jangka panjang Anda di latar belakang.

Saya harus terus menjalankan proses yang berjalan lama di platform cloud google VM instance/server (dengan OS: Ubuntu 16.0). Di mana saya harus memulai terminal SSH dan dari terminal, saya harus untuk menjaga terminal terhubung untuk menjalankan proses. Sekarang sampai ini, semuanya baik-baik saja. Tapi tunggu jika koneksi dengan terminal SSH saya dihentikan maka proses lama berhenti segera dan karenanya saya harus menjalankannya sekali lagi sekali terminal ssh dihidupkan kembali atau dari terminal ssh baru.

Saya menemukan tmux adalah solusi yang baik untuk menghindari penghentian proses yang ingin kita jalankan bahkan setelah terminal ditutup.

Terminal Multiplexer (tmux) untuk memulai sesi tmux::

  1. Mulai terminal ssh
  2. Ketik tmux. Ini akan membuka jendela di terminal yang sama.
  3. Jalankan perintah untuk memulai proses yang berjalan lama di sesi tmux.

Sekarang bahkan jika terminal SSH ditutup/diakhiri tiba-tiba sesi tmux akan tetap menjalankan proses lon-running yang dimulai pada instance/server.

Jika koneksi terputus maka bagaimana menghubungkan kembali untuk melihat proses yang berjalan di sesi tmux di latar belakang:

  1. sambungkan kembali atau buka terminal ssh baru. Untuk melihat proses ini (yang terus berjalan di latar belakang) ketik: tmux attach perintah.

Ingin mengakhiri sesi tmux:

  1. Hentikan prosesnya. Kemudian ketik exit di tmux-terminal-window.

(Perhatikan bahwa: Jika kita menggunakan tmux detach perintah: itu akan keluar dari jendela sesi/terminal tmux tanpa menghentikan/menghentikan sesi tmux)

Untuk lebih jelasnya silakan merujuk artikel berikut:

  1. https://www.tecmint.com/keep-remote-ssh-sessions-running-after-disconnection/
  2. https://limitlessdatascience.wordpress.com/2019/08/22/tmux-to-keep-jupyter-notebook-running-in-the-background/
1
Yogesh