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.
command-line
ssh
process
gnu-screen
λ Jonas Gorauskas
sumber
sumber
nohup
mencegat SIGHUP sehingga ketika shell yang berlari itu berhenti dan mengirimkan SIGHUP ke semua anak yang masih berjalan,long-running-process
tidak mati.disown
cukup menghapus pekerjaan yang ditentukan dari daftar anak Bash, sehingga tidak akan mencoba mengirim SIGHUP sama sekali.nohup
adalah program yang terpisah dari shell, jadi ia bekerja dengan semua shell, sedangkandisown
Bash adalah builtin.nohup
menerima perintah untuk dijalankan, sedangkandisown
hanya bekerja setelah pekerjaan dimulai dan Anda telah melatar belakanginya sehingga Anda dapat kembali ke shell.tail -f nohup.out
untuk memeriksa apa yang terjadi ketika Anda kembali.Anda ingin menggunakan Layar GNU. Ini sangat luar biasa!
CTRL+ a, duntuk keluar dari sesi layar Anda
Ketika Anda kembali ke laptop Anda:
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: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.sumber
screen -S name
dan biarkan teman Anda yang lain terhubung dengannyascreen -x name
.tmux
dengantmuxinator
merupakan kombinasi yang bagus untuk pengaturan mewah, sementara saya lebih sukascreen
sebagai solusi cepat dan sederhana.Jika Anda belum merencanakan dan menyiapkan
screen
, dll. Lakukan saja hal berikut:Jika proses Anda berjalan di latar belakang: goto # 3, selain itu:
Ctrl-Z
untuk menangguhkan proses latar depan. Ini akan melaporkan pekerjaan # dari proses yang ditangguhkan, misalnya:Kirim
processName
ke latar belakang denganbg %1
(menggunakan apa pun pekerjaan # yang mengikuti%
). Ini akan dilanjutkanprocessName
di latar belakang.Ditolak
processName
dengandisown %1
ataudisown PID
. Gunakan-h
bendera jika Anda ingin mempertahankan kepemilikan sampai Anda mengakhiri shell Anda saat ini.sumber
&
ketika saya memulainya. Ini sepertinya berhasil!Apa 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. Halaman tutorial dan bantuan tersedia.
byobu 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 aktif saat koneksi ssh Anda terputus. Anda hanya terhubung lagi melalui ssh dan memanggil byobu dan semuanya seperti sebelumnya.
Akhirnya beberapa tangkapan layar byobu.
sumber
Mungkin perlu dicatat
ssh -t lala screen -rxU moo
akan melampirkan ke sesi moo di host lalassh -t lala screen -S moo
akan membuat sesi moo di host laladan
ssh -t lala screen -S moo quux
akan membuat sesi moo di host lala dan menjalankan program quux , berhenti dari sesi saat selesai.sumber
Pertanyaan lama, aneh masih belum ada yang menyarankan tmux , yang bertindak sebagai pembungkus untuk n konsol dan 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 dalam cangkangnya, memulai pekerjaan looong Anda, lalu tekan ctrl + b diikuti oleh d (lepaskan) (
ctrl+b
adalah "ok google" dari tmux, dand
merupakan perintah untuk menutup tanpa keluar dari shell). Ini benar-benar berfungsi jika Anda hanya menutup, misalnya, dempul. Setelah makan malam, ketika Anda terhubung lagi, Anda dapat membuka kembali tmux dengantmux attach
untuk melihat layar Anda persis seperti yang Anda tinggalkan. Sesuatu yang saya sukai adalah panel pemisah:ctrl+b
dan kemudian tekan"
. Untuk mengubah dari satu panel ke yang lain,ctrl+b
lalu tekan panah atas / bawah.sumber
Anda dapat menemukan panduan yang baik di sini: Jaga Sesi SSH Anda Berjalan saat Anda Putus
Sekarang Anda dapat memulai sesi layar baru dengan hanya mengetik layar di baris perintah. Anda akan ditampilkan beberapa informasi tentang layar. Tekan enter, dan Anda akan berada pada prompt normal.
Untuk memutuskan sambungan (tapi biarkan sesi berjalan) Tekan Ctrl+ Adan kemudian Ctrl+ Dsecara berurutan. Anda akan melihat pesan [terlepas]
Untuk menyambung kembali ke sesi yang sudah berjalan
Untuk menyambung kembali ke sesi yang ada, atau membuat yang baru jika tidak ada
Untuk membuat jendela baru di dalam sesi layar yang sedang berjalan Tekan Ctrl+ Adan kemudian Csecara berurutan. Anda akan melihat prompt baru.
Untuk beralih dari satu jendela layar ke Hit Ctrl+ lainnya Adan kemudian Ctrl+ Asecara berurutan.
Untuk daftar jendela layar terbuka Tekan Ctrl+ Adan kemudian Wsecara berurutan
sumber
<kbd>Ctrl</kbd>
untuk menampilkan nama sebagai tombol keyboard.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 ketika 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) 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 laptop Windows XP saya (yang saya perlukan untuk perangkat keras khusus Windows tertentu yang saya miliki) sebagai ujung depan untuk dua server Linux saya menggunakan NX Nomachine. Saya bahkan dapat mencetak ke printer yang terpasang pada laptop Windows saya dari Linux.
sumber