Theo dõi câu hỏi này , tôi muốn biết STDOUT và STDERR của chương trình mà tôi đã chạy disown -h
được chuyển hướng đến đâu.
Theo dõi câu hỏi này , tôi muốn biết STDOUT và STDERR của chương trình mà tôi đã chạy disown -h
được chuyển hướng đến đâu.
Câu trả lời:
disown
không thay đổi chương trình STDOUT / ERR. Họ vẫn sẽ đi đến bất cứ nơi nào bạn chuyển hướng họ (sử dụng, >
v.v.). Nếu bạn không chuyển hướng chúng, chúng sẽ tiếp tục đi vào thiết bị đầu cuối mà bạn đã khởi động chương trình từ đó (cho đến khi bạn đóng thiết bị đầu cuối đó, trong trường hợp đó chúng sẽ bị loại bỏ).
Để minh họa, hãy chạy cái này trong một thiết bị đầu cuối:
bash -c 'while true; do sleep 1; echo hi; done' &
Điều này sẽ in "hi" mỗi giây (và làm phiền bạn khủng khiếp ;-)). Nếu bạn disown
chương trình sau khi bắt đầu, "hi" sẽ tiếp tục. Bạn cần tìm PID của shell (sử dụng ví dụ ps) và giết nó để làm cho nó dừng lại.
Biên tập:
Dựa trên các nhận xét, có thể điều bạn thực sự muốn làm là khôi phục đầu ra của chương trình sau khi bạn chỉnh sửa disown
và đóng thiết bị đầu cuối mà nó đang chạy. Điều này được giải thích trong câu hỏi này: Không có từ xa thực tế với tcsh ( nhờ quixote quackote).