Jika tugas Anda sudah diluncurkan, sudah terlambat*
untuk mempertimbangkan solusi alternatif yang menyisipkan lapisan tambahan di antara ssh
Anda session dan shell menjalankan perintah, seperti screen
, tmux
, byobu
, nohup
dan sejenisnya.
Jika proses Anda mendukung untuk ditempatkan di latar belakang dan khususnya tidak hang ketika stdout
dan stderr
tidak dapat ditulisi/ditutup, Anda dapat meletakkannya di latar belakang sebelum keluar dengan Kontrol Z dan bg
lalu lepaskan dari shell Anda dengan disown
bawaan.
misalnya:
$ ssh localhost
You have new mail.
Last login: Fri Jun 6 11:26:56 2014
$ /bin/sleep 3600
^Z[1] + Stopped /bin/sleep 3600
$ bg
[1] /bin/sleep 3600&
$ jobs
[1] + Running /bin/sleep 3600
$ disown %1
$ exit
Connection to localhost closed.
$ ps -ef|grep sleep
jlliagre 12864 1 0 21:12 ? 00:00:00 /bin/sleep 3600
jlliagre 13056 12477 0 21:13 pts/18 00:00:00 grep sleep
$
*
Seperti yang dikomentari Bob, sebenarnya ada beberapa cara retas untuk membuat ulang sesi tty di Linux. repty, retty, injcode dan neercs. Tampilan paling canggih adalah reptyr tetapi Anda mungkin memerlukan hak akses root untuk mengaktifkan ptrace untuk meretas proses Anda.
Salah satu solusinya adalah dengan menggunakan layar GNU. Anda dapat memulai screen
, jalankan perintah Anda, lalu lepaskan dengan C-a d
. Nanti untuk menyambungkan kembali, lakukan screen -r
, dan Anda kembali ke sesi sebelumnya.
Manfaat layar lainnya adalah manajemen jendela (sehingga Anda dapat beralih ke shell lain saat perintah Anda berjalan, tanpa memerlukan koneksi SSH baru), dan ini memungkinkan perintah Anda untuk tetap berada di latar depan, baik di sesi saat ini atau nanti.
Edit: Seperti disebutkan dalam komentar, ini hanya akan berfungsi jika Anda ingat untuk memulai screen
sebelum menjalankan perintah. Jika perintah sudah berjalan, maka Anda memerlukan solusi @jlliagre.