Apa cara terbaik untuk menjalankan perintah ssh jarak jauh di latar tetapi masih ditampilkan?

14

Saya perlu menjalankan perintah SSH dari jarak jauh dengan output ditampilkan secara lokal. Tetapi jika koneksi terputus saya ingin perintah tetap berjalan.

Saya tidak berbicara banyak tentang masuk dan menjalankan tetapi melakukan ssh user @ remotehost 'command && command etc'

Bagaimana saya bisa memastikan perintah berjalan meskipun koneksi terputus?

vfclists
sumber

Jawaban:

26

Cara terbaik untuk melakukan ini adalah menggunakan layar, yang membuat sesi tetap terbuka dengan cara yang terus-menerus bahkan jika koneksi mati (dan jika Anda ingin mulai menggunakannya lagi Anda dapat melakukan screen -rdan itu akan membukanya lagi).

Awalan perintah apa pun yang ingin Anda jalankan screen(mis. ssh -t user@host screen command) Harus melakukan pekerjaan itu.

Jika Anda ingin menjalankannya di latar belakang shell, Anda juga dapat menambahkan &semuanya.

Falcon Momot
sumber
Anda mungkin perlu menggunakan ssh -t untuk mengalokasikan terminal agar perintah dapat dijalankan. Jika tidak, kesalahannya adalah "Harus terhubung ke terminal."
bonsaiviking
11

Apakah Anda ingin memiliki sesi persisten yang dapat Anda lanjutkan, atau hanya untuk menghentikan pemutusan dari membunuh ekseksi?

Untuk yang pertama, gunakan screen, untuk yang terakhir nohup,.

Shane Madden
sumber
7

Seperti disebutkan sebelumnya, screenbisa melakukan semua trik. Tapi bukan hanya yang Anda butuhkan. Saya telah menggunakan layar selama bertahun-tahun dan sekarang menggunakannya setiap kali saya masuk ke sistem. Cobalah untuk menginstal screendan membuat ~/.screenrcdengan konfigurasi seperti itu:

sessionname     vcflists
startup_message off
deflogin        off
vbell           off
msgminwait      0
msgwait         10
log             off
backtick        1 0 0 hostname
caption splitonly "%?%F%{= yk}%:%{= Kk}%? %n %t%="
hardstatus alwayslastline "%{= rY}  %1`  %{= kg} %0c %{= bY}  %-w%{= Yk} %n %t %{-}%+w %=%{g}%l "

Kemudian jalankan screen -Rd vcf. Itu adalah doa yang lebih disukai dari layar. Anda akan menyambung kembali ke sesi yang dibuat sebelumnya dengan nama vcf * (atau diperingatkan jika ambigu) atau, jika sesi belum dibuka, itu akan dibuat. CTRL+ Aadalah kunci meta yang melakukan segalanya. CTRL+A C( CTRL+ A, lalu C) buat jendela (layar) baru di dalam sesi. CTRL+A SPACEpindahkan fokus ke jendela berikutnya dalam satu putaran. CTRL+A Dlepaskan sesi saat ini menjaga semua jendela berfungsi antara koneksi. Jika Anda telah meluncurkan beberapa tugas looooong, Anda dapat melepaskan dari layar dan memasangnya kembali nanti untuk melihat apa yang terjadi. Hal yang sama terjadi jika sesi ssh Anda hilang - layar tetap hidup dengan semua jendela yang terbuka dan semua tugas diluncurkan.

Jika Anda ingin menutup beberapa jendela di dalam layar - hanya exitdari shell di dalamnya. Jika Anda ingin menutup semua shell / tugas di semua jendela dan keluar dari layar - cukup tekan CTRL+A CTRL+\dan tekan "Y" saat ditanya.

Untuk semua sisanya lihat layar pria.

Kondybas
sumber
2

Saya telah melihat alternatif ini untuk koneksi ssh "like" yang andal:

http://mosh.mit.edu/

Rodrigo Prior Bechelli
sumber
Dari situs tersebut, mosh (shell ponsel) terlihat seperti alat baru yang menjanjikan. Ini sangat baru.
bgvaughan
1

Saya biasanya akan melakukan:

nohup mycommand &

tail -f nohup.out
gyin
sumber