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.
Gunakan nohup
untuk membuat proses anda mengabaikan hangup sinyal:
$ nohup long-running-process &
$ exit
Anda ingin menjadi menggunakan GNU Layar. Ini adalah super awesome!
ssh [email protected]
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 [email protected]
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:
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.Jika anda belum't merencanakan ke depan dan men-setup layar
, dll. hanya lakukan hal berikut:
Ctrl-Z
untuk menangguhkan foreground proses. Ini akan melaporkan pekerjaan # ditangguhkan proses, misalnya:1+ Stopped processName
Kirim processName
untuk latar belakang dengan bg %1
(menggunakan apapun pekerjaan # adalah sebagai berikut %
). Hal ini akan melanjutkan processName
di latar belakang.
Mengakui processName
dengan memungkiri %1
atau memungkiri PID
. Gunakan -h
bendera jika anda ingin mempertahankan kepemilikan sampai anda menghentikan anda saat ini shell.
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.
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.
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
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.
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.
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:
tmux
. Ini akan membuka jendela di terminal yang sama.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:
tmux melampirkan
perintah.Ingin mengakhiri session tmux:
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: