Terus Sesi SSH berjalan setelah pemutusan

Kadang-kadang saya telah lama proses yang sedang berjalan bahwa saya ingin kick off sebelum pulang, jadi saya membuat sesi SSH ke server untuk memulai proses, tapi kemudian saya ingin menutup laptop saya dan pulang ke rumah dan kemudian, setelah makan malam, aku ingin memeriksa pada proses yang saya mulai sebelum meninggalkan pekerjaan. Bagaimana saya bisa melakukan itu dengan SSH? Pemahaman saya adalah bahwa jika anda melanggar anda koneksi SSH anda juga akan istirahat sesi login anda di server, oleh karena itu membunuh panjang proses yang berjalan.

Larutan

Gunakan nohup untuk membuat proses anda mengabaikan hangup sinyal:

$ nohup long-running-process &
$ exit
Komentar (15)

Anda ingin menjadi menggunakan GNU Layar. Ini adalah super awesome!

ssh me@myserver.com
screen               #start a screen session
run-a-long-process

PILIH+a , a untuk detatch dari layar anda sesi

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

Ketika anda datang kembali ke laptop:

ssh me@myserver.com
screen -r            #resume the screen session

Kemudian memeriksa kemajuan anda berjalan lama proses!

screen adalah alat yang sangat komprehensif, dan dapat melakukan lebih banyak dari apa yang saya've dijelaskan. Sementara di sesi screen, coba ctrl+a,? untuk mempelajari beberapa perintah umum. Mungkin yang paling umum adalah:

  • PILIH+a , c untuk membuat jendela baru
  • PILIH+a , n untuk beralih ke jendela berikutnya di layar anda sesi
  • PILIH+a , p untuk beralih ke jendela sebelumnya di sesi layar
  • jika anda login dari banyak sistem yang berbeda, anda mungkin secara tidak sengaja telah meninggalkan diri yang melekat pada aplikasi aktif layar sesi pada komputer yang berbeda. untuk alasan itu, saya selalu melanjutkan dengan screen -d -r untuk memastikan bahwa jika shell lain yang melekat pada sesi layar, itu akan terlepas sebelum aku melanjutkan itu di sistem saya saat ini.
Komentar (6)

Jika anda belum't merencanakan ke depan dan men-setup layar, dll. hanya lakukan hal berikut:

  1. Jika proses ini berjalan di latar belakang: goto #3, yang lain: Ctrl-Z untuk menangguhkan foreground proses. Ini akan melaporkan pekerjaan # ditangguhkan proses, misalnya:

1+ Stopped processName

  1. Kirim processName untuk latar belakang dengan bg %1 (menggunakan apapun pekerjaan # adalah sebagai berikut %). Hal ini akan melanjutkan processName di latar belakang.

  2. Mengakui processName dengan memungkiri %1 atau memungkiri PID. Gunakan -h bendera jika anda ingin mempertahankan kepemilikan sampai anda menghentikan anda saat ini shell.

Komentar (2)

Apa yang ingin anda gunakan adalah layar atau bahkan lebih user-friendly bungkus sekitar layar yang disebut byobu.

Layar memungkinkan anda untuk menjalankan beberapa virtual terminal sesi yang sama ssh sesi. A tutorial dan help pages yang tersedia.

byobu adalah pembungkus yang memungkinkan untuk dengan mudah membuka layar baru dengan fungsi utama sebagai pengganti dari kombinasi tombol dari ctrl-a. Hal ini juga menunjukkan status line dengan membuka virtual terminal yang dapat diberi nama.

Fitur lain yang bagus adalah kenyataan bahwa semua layar anda dapat tetap up sementara koneksi ssh terputus. Anda hanya menghubungkan lagi melalui ssh dan panggilan byobu dan semuanya seperti sebelumnya.

Akhirnya beberapa screenshot byobu.

Komentar (1)

Mungkin perlu dicatat bahwa

ssh -t lala layar -rxU moo akan melampirkan ke moo sesi pada host lala

ssh -t lala layar -S moo akan membuat moo sesi pada host lala

dan

ssh -t lala layar -S moo quux akan membuat moo sesi pada host lala dan menjalankan program quux, berhenti pada sesi selesai.

Komentar (0)

Anda dapat menemukan panduan yang baik berikut ini: Menjaga Sesi SSH Anda Berjalan ketika Anda Melepaskan

sudo apt-get install screen

Sekarang anda dapat memulai sebuah layar baru sesi dengan hanya mengetik layar pada baris perintah. Anda akan ditampilkan beberapa informasi tentang layar. Tekan enter, dan anda akan berada di prompt normal.

Untuk memutuskan (tapi meninggalkan sesi berjalan) Hit Pilih + A dan kemudian Pilih + A dalam suksesi langsung. Anda akan melihat pesan [terlepas]

Untuk menyambung kembali yang sudah menjalankan sesi

screen -r

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

screen -D -r

Untuk membuat jendela baru dalam menjalankan sesi layar Hit Pilih + A dan kemudian C dalam suksesi langsung. Anda akan melihat sebuah prompt.

Untuk beralih dari satu layar ke yang lain Hit Pilih + A dan kemudian Pilih + A dalam suksesi langsung.

Untuk daftar membuka layar windows Hit Pilih + A dan kemudian W dalam suksesi langsung

Komentar (1)

Pertanyaan lama, aneh masih ada yang menyarankan tmux, yang bertindak sebagai pembungkus untuk n konsol dan menjaga mereka terbuka sampai dibutuhkan. Hal ini memungkinkan kontrol yang lebih, di samping sejumlah fungsi tmux memiliki. It's mudah untuk mengelolanya, anda hanya jalankan tmux, yang membawa anda dalam cangkangnya, mulai looong pekerjaan, kemudian tekan ctrl+b diikuti oleh d (melepaskan) (ctrl+b adalah "ok google" dari tmux, dan d adalah perintah untuk menutup tanpa keluar dari shell). Ini benar-benar bekerja jika anda hanya dekat, misalnya, dempul. Setelah makan malam, ketika anda terhubung lagi, anda dapat membuka kembali tmux dengan tmux melampirkan untuk melihat layar anda persis seperti yang anda ditinggalkan. Sesuatu yang saya suka adalah membelah pane: ctrl+b dan kemudian tekan ". Untuk mengubah dari satu panel yang lain, ctrl+b dan kemudian tekan panah atas/bawah.

Komentar (0)

Saya menggunakan NX NoMachine, yang gratis untuk saya karena itu's hanya saya. Pada dasarnya, itu menjalankan sesi X pada server yang dapat menghubungkan dan memutuskan sambungan dari berulang. X sesi terus berjalan ketika anda're tidak terhubung. Koneksi dapat dilakukan dari mana saja. Anda dapat memilih antara floating windows atau jendela tunggal berisi seluruh desktop (misalnya lengkap Gnome desktop). Klien (yang akan anda jalankan di laptop anda) dapat dijalankan pada Linux, MacOS, Solaris atau Microsoft Windows. Dalam kasus terakhir jika anda memilih jendela mengambang mereka muncul secara individual pada Windows Taskbar.

Saya menggunakan Windows XP laptop (yang saya butuhkan untuk Windows tertentu-tertentu hardware yang saya miliki) sebagai front end untuk dua server Linux menggunakan NX Nomachine. Aku bahkan dapat mencetak ke printer yang terpasang ke laptop Windows dari Linux.

Komentar (0)

Tmux adalah sebuah pilihan yang tersedia untuk menjalankan lama anda-proses yang berjalan di latar belakang.

Aku harus terus berlari lama-proses yang berjalan pada google cloud platform's VM instance/server (dengan OS: Ubuntu 16.0). Di mana saya harus memulai SSH terminal dan dari terminal, saya harus menjaga terminal terhubung untuk menjalankan proses. Sekarang ini, semua adalah baik. Tapi tunggu jika koneksi dengan SSH terminal dihentikan maka lama-proses yang sedang berjalan segera berhenti dan karenanya saya harus re-run mereka sekali lagi setelah terminal ssh restart atau baru, terminal ssh.

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

Terminal Multiplexer (tmux) untuk memulai tmux sesi:

  1. Mulai ssh terminal
  2. Jenis tmux. Ini akan membuka jendela di terminal yang sama.
  3. Jalankan perintah untuk memulai panjang-proses yang berjalan di session tmux.

Sekarang bahkan jika SSH terminal ditutup/dihentikan tiba-tiba tmux sidang akan tetap berjalan mulai lon-proses yang berjalan pada contoh/server.

Jika koneksi dihentikan lalu bagaimana cara untuk menyambungkannya kembali untuk melihat proses yang berjalan di session tmux di latar belakang:

  1. menyambung atau membuka baru ssh terminal. Untuk melihat proses ini(yang terus berjalan di latar belakang) type: tmux melampirkan perintah.

Ingin mengakhiri session tmux:

  1. Menghentikan proses. Kemudian ketik exit di tmux-terminal-window.

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

Untuk rincian lebih lanjut silakan lihat 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/
Komentar (0)