ฉันต้องการเปลี่ยนเส้นทางเอาต์พุตที่สร้างจากแอปพลิเคชันพื้นหลังใน 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/null
AND 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
แม้ว่าคู่มือการทุบตีบอกว่าควรใช้แบบแรก