Ada sejumlah solusi.
Background & Menolak Proses
- Buka terminal ssh ke server jauh.
- Mulai
scp
transfer seperti biasa.
- Latar belakang proses scp ( Ctrl+ Z, lalu perintah
bg
.)
- Menolak proses latar belakang (
disown
).
- Hentikan sesi (
exit
) dan proses akan terus berjalan pada mesin jarak jauh.
Satu kelemahan dari pendekatan ini adalah bahwa deskriptor file untuk stdout dan stderr masih akan berisi referensi ke tty sesi ssh Anda. Terminal mungkin hang ketika Anda mencoba keluar karena ini. Anda dapat mengatasi ini dengan mengetik ~.
untuk memaksa menutup klien ssh Anda (bahwa urutan pelarian harus mengikuti baris baru ... lihat juga ~?
). Jika proses yang Anda tinggalkan menulis ke stdout atau stderr, proses tersebut dapat keluar sebelum waktunya jika buffer tty memenuhi batas.
Buat Sesi Layar dan Lepaskan
Layar GNU dapat digunakan untuk membuat sesi terminal jarak jauh, yang dapat dilepas dan terus berjalan di server setelah Anda keluar dari sesi. Anda kemudian dapat login kembali ke server di kemudian hari dan pasang kembali ke sesi.
- Masuk ke server jauh melalui ssh.
- Mulai sesi layar
screen -D -R <session_name>
,.
- Mulai
scp
transfer seperti biasa.
- Lepaskan sesi layar dengan Ctrl+ Alalu d.
- Hentikan sesi ssh (
exit
)
Untuk memasang kembali sesi:
- Masuk ke server jauh melalui ssh.
- Pasang kembali ke sesi layar,
screen -D -R <session_name>
Jalankan Perintah tanpa Hangup
Lihat jawabannya menggunakan nohup
.
Gunakan Penjadwal Tugas
Ini adalah solusi terbaik jika ini adalah jenis tugas berkala yang ingin Anda otomatisasi.
Gunakan crontab
,, at
atau batch
untuk menjadwalkan transfer.
-D -R
bendera dimulaiscreen
. Saya membaca halaman manual dan itu tidak membantu saya memahami:-D -R Attach here and now. ...