จากการติดตามคำถามนี้ฉันต้องการทราบว่า STDOUT และ STDERR ของโปรแกรมที่ฉันเรียกใช้disown -h
นั้นถูกเปลี่ยนเส้นทางไปที่ใด
จากการติดตามคำถามนี้ฉันต้องการทราบว่า STDOUT และ STDERR ของโปรแกรมที่ฉันเรียกใช้disown -h
นั้นถูกเปลี่ยนเส้นทางไปที่ใด
คำตอบ:
disown
ไม่เปลี่ยนโปรแกรม STDOUT / ERR พวกเขาจะยังคงไปที่ใดก็ตามที่คุณเปลี่ยนเส้นทาง (โดยใช้>
ฯลฯ ) หากคุณไม่ได้เปลี่ยนเส้นทางพวกเขาจะเข้าสู่เทอร์มินัลที่คุณเริ่มโปรแกรมจาก (จนกว่าคุณจะปิดเทอร์มินัลนั้นซึ่งในกรณีนี้จะถูกยกเลิก)
หากต้องการแสดงตัวอย่างให้รันสิ่งนี้ในเทอร์มินัล:
bash -c 'while true; do sleep 1; echo hi; done' &
สิ่งนี้จะพิมพ์ "สวัสดี" ทุกวินาที (และรบกวนคุณชะมัด ;-)) หากคุณdisown
โปรแกรมหลังจากเริ่มต้น "hi" จะดำเนินการต่อไป คุณจำเป็นต้องค้นหา PID ของเชลล์ (ใช้เช่น ps) และฆ่ามันเพื่อให้มันหยุด
แก้ไข:
ขึ้นอยู่กับความคิดเห็นที่อาจจะสิ่งที่คุณต้องการจะทำคือการกู้คืนการส่งออกของโปรแกรมหลังจากที่คุณdisown
เอ็ดมันและปิดสถานีมันก็ทำงานในนี้จะอธิบายในคำถามนี้:. หลังจากที่ความเป็นจริงระยะไกล nohup กับ tcsh ( ขอบคุณนักต้มตุ๋น quixote)