Sebagai tindak lanjut dari pertanyaan ini , saya ingin tahu di mana STDOUT dan STDERR dari program yang saya jalankan disown -h
diarahkan ke.
Sebagai tindak lanjut dari pertanyaan ini , saya ingin tahu di mana STDOUT dan STDERR dari program yang saya jalankan disown -h
diarahkan ke.
Jawaban:
disown
tidak mengubah program STDOUT / ERR. Mereka masih akan pergi ke mana pun Anda mengarahkan mereka (menggunakan >
dll.) Jika Anda tidak mengarahkan mereka, mereka akan terus masuk ke terminal tempat Anda memulai program (sampai Anda menutup terminal itu, dalam hal ini mereka akan dibuang).
Untuk menggambarkan, jalankan ini di terminal:
bash -c 'while true; do sleep 1; echo hi; done' &
Ini akan mencetak "hai" setiap detik (dan Anda sangat kesal ;-)). Jika Anda disown
program setelah memulai, "hai" hanya akan melanjutkan. Anda perlu menemukan PID shell (menggunakan mis. Ps) dan membunuhnya untuk menghentikannya.
Edit:
Berdasarkan komentar, mungkin yang benar-benar ingin Anda lakukan adalah memulihkan output dari program setelah Anda disown
mengeditnya dan menutup terminal yang digunakan. Ini dijelaskan dalam pertanyaan ini: Nohup jarak jauh yang sebenarnya dengan tcsh ( terima kasih kepada quack quixote).