Dari man nohup
:
Jika input standar adalah terminal, arahkan dari / dev / null. Jika output standar adalah terminal, tambahkan output nohup.out
jika mungkin, $HOME/nohup.out
sebaliknya. Jika kesalahan standar adalah terminal, arahkan kembali ke output standar. Untuk menyimpan output ke FILE, gunakan nohup COMMAND > FILE
.
(sepenuhnya direvisi berdasarkan komentar)
Ketika keluar dari shell atau menutup terminal, proses anak akan dikirim SIGHUP (hangup, nama berasal dari saat terminal akan melakukan panggilan ke komputer UNIX) untuk memberi tahu mereka bahwa terminal tidak ada lagi terhubung. Selain itu, ketika proses shell berakhir, aliran stdin, stdout, dan stderr proses anak akan ditutup. Biasanya ini menyebabkan proses anak mati. Biasanya ini adalah hal yang baik karena menghindari meninggalkan proses yang berjalan tanpa pengguna.
Tujuan dari nohup
program ini adalah untuk menjaga proses tetap berjalan bahkan setelah shell berakhir dan terminal terputus. Dengan demikian, mengarahkan outputnya ke terminal benar-benar mengalahkan tujuan. Jawaban asli saya ( nohup COMMAND | cat
) tidak membantu karena: ketika terminal ditutup, output kucing ditutup dan kucing mati yang merusak pipa dan mengirimkan SIGPIPE ke proses nohup yang menyebabkannya mati. Saya telah menjawab pertanyaan tanpa memikirkan tujuannya.
Untuk mencapai tujuan Anda, jalankan nohup COMMAND > FILE
untuk memilih nama file untuk mengarahkan output. Kemudian gunakan tail -f FILE
untuk menonton output pada terminal.
Demikian pula, seseorang dapat menggunakan konstruksi shell berikut: COMMAND >FILE 2>&1 </dev/null &
untuk menjalankan perintah yang stdio stream tidak terhubung ke terminal dan dapat terus berjalan setelah terminal ditutup. Selain itu, di zsh, jalankan shell-builtin disown
untuk memberi tahu zsh untuk meninggalkan proses alih-alih membunuhnya saat shell berakhir.