Saya ssh
mengedit ke server saya dan berlari wget -r -np zzz.aaa/bbb/ccc
dan mulai bekerja. Kemudian koneksi internet saya (di rumah saya) terputus dan saya khawatir dengan anggapan bahwa wget
itu hup
ped karena ssh
koneksi terputus dan terminal mati. Tapi kemudian saya ssh
mengedit ke server saya dan menyadari bahwa itu masih berjalan dan memasukkan output wget.log
dan mengunduh barang. Bisakah seseorang tolong jelaskan kepada saya apa yang mungkin terjadi di sini?
Inilah yang ps
memberi saya:
PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
32283 0.6 29.4 179824 147088 ? S 14:00 1:53 wget -r -np zzz.aaa/bbb/ccc
Apa artinya (tanda tanya) ?
di kolom tty
?
logind
, perilaku defaultlogind
adalah untuk membunuh (SIGTERM) semua proses milik pengguna ketika pengguna logout. Jadi perilaku ini khusus untuk sistem.KillUserProcesses=no
.Jawaban:
Program (dan skrip) dapat memilih untuk mengabaikan sebagian besar sinyal, kecuali beberapa yang suka
KILL
. TheHUP
sinyal dapat ditangkap dan diabaikan jika perangkat lunak sehingga ingin.Ini dari
src/main.c
satuwget
sumber (versi 1.19.2):Sedikit lebih jauh ke bawah pengendali sinyal diinstal:
Jadi sepertinya
wget
tidak mengabaikan paraHUP
sinyal, tetapi memilih untuk terus memproses dengan output diarahkan ke file log.Diminta dalam komentar: Arti
?
dalamTTY
kolom output darips
dalam pertanyaan adalah bahwawget
proses tidak lagi terkait dengan terminal / TTY. TTY hilang ketika koneksi SSH terputus.sumber
Sederhana :
wget
tidak dibatalkanSIGHUP
. Itu terjadiSIGTERM
danSIGINT
.Tidak ada apa-apa di
man
halaman tetapi jika Anda mengirimSIGHUP
ke suatuwget
proses maka Anda mendapatkan ini di terminal:sumber
kill -HUP pid
perintah untuk menunjukkan bagaimana seseorang dapat mengirimSIGHUP
ke suatu proses.