Apakah mungkin untuk membiarkan proses dimulai dengan nohup, menulis ke stdout, bukan dalam file? atau mungkin di file dan di layar?
nohup python start.py &
menulis nohup.out
, tapi saya ingin output ke layar, nohup hanya dimaksudkan sebagai lindung nilai ketika koneksi terputus.
Jawaban:
nohup python start.py & tail -f nohup.out
Thetail -f
dapat dibunuh dan restart di akan.screen python start.py
dan lepaskan / sambungkan kembali sesuka hati.sumber
Dari
man nohup
:(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 gunakantail -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-builtindisown
untuk memberi tahu zsh untuk meninggalkan proses alih-alih membunuhnya saat shell berakhir.sumber
tail -f filename
untuk melihat apa yang ditulis ke file.sumber