ฉันจะป้องกัน nohup ไม่ให้สร้างไฟล์ ~ / nohup.out ได้อย่างไร


16

ฉันใช้คำสั่ง$ nohup ...เพื่อเริ่มแอปพลิเคชันในพื้นหลังเพื่อให้ฉันสามารถปิดหน้าต่างเทอร์มินัลได้ในภายหลัง

~/nohup.outเมื่อการดำเนินการจะสร้างไฟล์

ตัวอย่าง:

orschiro@x230:~$ nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py"
nohup: ignoring input and appending output to 'nohup.out'

ฉันจะป้องกันไม่ให้nohupสร้างได้nohup.outอย่างไร


2
byobuนอกจากนี้คุณยังอาจพิจารณา :)
Andrea Lazzarotto

ขอบคุณ @AndreaLazzarotto! คุณช่วยยกตัวอย่างวิธีการใช้ให้ฉันได้ไหม
orschiro

2
ดีฉันขอแนะนำให้คุณดูวิดีโอที่นี่: byobu.coโดยทั่วไปสำหรับสิ่งที่คุณต้องการให้คุณเรียกใช้byobuเริ่มสิ่งที่คุณต้องการแล้วกดF6และคุณเสร็จแล้ว คุณสามารถกลับไปใช้มันได้byobuอีกครั้ง
Andrea Lazzarotto

ยอดเยี่ยม คุณอาจต้องการเพิ่มนี่เป็นคำตอบอย่างเป็นทางการ?
orschiro

ในทางเทคนิคข้อเสนอแนะของฉันไม่ตอบคำถามของคุณเลยมันเป็นเพียงทางเลือก : D
Andrea Lazzarotto

คำตอบ:


20

คุณสามารถเปลี่ยนเส้นทางผลลัพธ์ได้ทุกที่ที่คุณต้องการตัวอย่างเช่น

nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py" >/dev/null 2>&1

การเปลี่ยนเส้นทางป้องกันไม่ให้ไฟล์เอาต์พุตเริ่มต้นnohup.outถูกสร้างขึ้น /dev/nullหากคุณไม่ต้องการข้อมูลเลยให้ส่งไปที่นั่น

ในทุบตีคุณสามารถย่อ>/dev/null 2>&1ไป&>/dev/null

สำหรับโปรแกรมที่ฉันใช้บ่อยฉันจะสร้างนามแฝง (และเพิ่มไปยังของฉัน.bashrc) ตัวอย่างเช่น

alias show_state='nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py" >/dev/null 2>&1'

ตอนนี้สิ่งที่ฉันต้องพิมพ์ก็คือ show_state


2
@orschiro: หลังจากไม่กี่ปีมันจะไม่เป็นความลับและคุณจะจำได้;) ฉันขอแนะนำให้ติดกับมันเพราะการลบชื่อออกหมายความว่าคุณจะไม่ได้รับประสบการณ์นั้นและรู้ว่าผู้ประกอบการเปลี่ยนเส้นทาง BASH ทำงานอย่างไรด้านบน จากหัวของคุณเป็นทักษะที่สำคัญ
การแข่งขัน Lightness กับโมนิก้า

สิ่งนี้จะไม่ดีไปกว่าฟังก์ชั่นหรือไม่? สิ่งที่ชอบshow_state () { /bin/bash -c "$@" &>/dev/null }? (คำเตือน: ไวยากรณ์ไม่ดีและอาจไม่ทำงาน! เป็นเพียงตัวอย่าง!) หนึ่ง nitpick: ทำไมshow_stateเมื่อคุณทิ้งผลลัพธ์ของnohup?
Ismael Miguel

ฉันไม่ทราบว่าสคริปต์ทำอะไรกับ @IsmaelMiguel แต่ฉันคิดว่ามันเป็นตัวบ่งชี้ที่มีไอคอนถาดไม่พิมพ์ "สถานะ" (ไม่ว่าจะเป็นอะไร) ไปยัง stdout แน่นอนว่าฟังก์ชั่นอาจสนุกกว่านามแฝง ^. ^
Zanna

โอ้ฉันเข้าใจแล้ว! ขออภัยไม่เห็นชื่อ.pyไฟล์ และใช่ฟังก์ชั่นนั้นสนุกกว่า ฉันมีฟังก์ชั่นนี้เขียนไม่ดีบนเดสก์ท็ shutup() { source "$@" >/dev/null 2>&1 & }Debian: และมันใช้งานได้ บางทีคุณอาจจะแนะนำสิ่งที่คล้ายกัน แต่ดีกว่าเยอะไหม
Ismael Miguel

ฉันไม่เคยรู้ว่ามันใช้&>งานได้ (และในใจของฉันมันดูเหมือนพื้นหลังและการเปลี่ยนเส้นทาง stdout) >&ฉันมักจะได้เรียนรู้ว่ามันเป็น เป็นมาตรฐานหรือไม่
Random832
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.