ฉันต้องการเปลี่ยนเส้นทางเอาต์พุตที่สร้างจากแอปพลิเคชันพื้นหลังใน Linux เป็น / dev / null
ฉันใช้โปรแกรมแก้ไขข้อความ kate และพิมพ์ข้อความดีบักทั้งหมดบนเทอร์มินัลซึ่งฉันต้องการเปลี่ยนเส้นทางไปที่ / dev / null
มีความคิดอย่างไรที่จะทำ?
ขอบคุณ
ฉันต้องการเปลี่ยนเส้นทางเอาต์พุตที่สร้างจากแอปพลิเคชันพื้นหลังใน Linux เป็น / dev / null
ฉันใช้โปรแกรมแก้ไขข้อความ kate และพิมพ์ข้อความดีบักทั้งหมดบนเทอร์มินัลซึ่งฉันต้องการเปลี่ยนเส้นทางไปที่ / dev / null
มีความคิดอย่างไรที่จะทำ?
ขอบคุณ
คำตอบ:
คุณใช้:
yourcommand > /dev/null 2>&1
หากควรทำงานในพื้นหลังให้เพิ่มไฟล์ &
yourcommand > /dev/null 2>&1 &
>/dev/null 2>&1หมายถึงการเปลี่ยนเส้นทางstdoutไปยัง/dev/nullAND stderrไปยังสถานที่ที่เป็นstdoutจุดในขณะนั้น
หากคุณต้องการstderrที่จะเกิดขึ้นบนคอนโซลและมีเพียงstdoutไป/dev/nullคุณสามารถใช้:
yourcommand 2>&1 > /dev/null
ในกรณีนี้stderrจะถูกเปลี่ยนเส้นทางไปยังstdout(เช่นคอนโซลของคุณ) และหลังจากนั้นต้นฉบับstdoutจะถูกเปลี่ยนเส้นทางไปที่/dev/null
หากโปรแกรมไม่ควรยุติคุณสามารถใช้:
nohup yourcommand &
ไม่มีพารามิเตอร์ใด ๆ เอาต์พุตทั้งหมดจะลงจอดใน nohup.out
dup2()ที่เกิดขึ้นทันทีหลังจากที่แต่ก่อนfork() exec*()เมื่อexec*()ดำเนินการโปรแกรมแล้วเชลล์ไม่มีความสามารถในการเปลี่ยนทิศทางผลลัพธ์ของกระบวนการนั้น แก้ไขฉันถ้าฉันผิด แต่ฉันไม่รู้เกี่ยวกับเชลล์ที่ใช้ฟังก์ชันดังกล่าว
สิ่งเหล่านี้จะเปลี่ยนเส้นทางทั้งสอง:
yourcommand &> /dev/null
yourcommand >& /dev/null
แม้ว่าคู่มือการทุบตีบอกว่าควรใช้แบบแรก