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:
disownkhô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 disownchươ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 disownvà đó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).