ภูมิหลัง & ดียกเว้นสำหรับโปรแกรมที่กลับมาซึ่งต้องมีการโต้ตอบกับคอนโซลในภายหลัง (ตัวอย่างเช่น "apt -y update &" ซึ่งในที่สุดก็เข้าสู่สถานะ STOP เนื่องจากต้องการให้ผู้ใช้ถามคำถาม "บังคับจริง ๆ " ในภายหลัง .... เมื่อไม่มีใครดูอีกแล้ว)
เมื่อต้องการเสียบรูนั้นและแจ้งให้ทราบว่ากระบวนการใดเทอร์มินัลจะไม่สามารถใช้งานได้จริงฉันผนวก <& - ลงในคำสั่งบางคำสั่งของฉันโดยแยกออกจากเทอร์มินัลที่ทำงานอยู่ ตรวจสอบให้แน่ใจ / bin / bash เป็นเชลล์ของคุณหากคุณใช้ สคริปต์จะดำเนินการบันทึกข้อผิดพลาดใด ๆ ที่เกี่ยวข้องกับการไม่มีการแฝงตัวปลอมซึ่งจะทำให้เกิดพรอมต์ใด ๆ
ตัวอย่างเช่น:
`./runme.sh &> runme.log <&- & disown`
เป็นวิธีที่ดีที่สุดของฉันในการยกเลิกการเชื่อมโยงจากเซสชันเทอร์มินัลปัจจุบัน ทั้ง STDOUT และ STDERR เข้าสู่ runme.log มันจะไม่สำคัญว่าคอนโซลหรือเชลล์ของคุณจะยุติลงเร็วกว่านี้หรือถ้าคุณออกจากระบบ / su ไปยังบัญชีอื่น (ไม่มีเทอร์มินัลขยะจาก runme) และต้องขอบคุณแม้แต่ผู้ปกครอง ความสัมพันธ์ PID จะถูกลบออก
UPDATE: แม้ว่าฉันจะมีปัญหากับสัญญาณที่เชื่อมโยงกับชื่อของผู้ปกครองดั้งเดิมดังนั้นตอนนี้ฉันขอแนะนำแทน:
at now <<< "(cmd1; cmd2; etc.) &> logfile.log"
แน่นอนลบ &> หากคุณต้องการรับอีเมลจาก CRON หรือเปลี่ยนเส้นทางทั้งหมดเป็น / dev / null แทนที่จะเป็นไฟล์
screen
) สามารถใช้เพื่อ "ห่อ" กระบวนการที่ใช้เวลานานขึ้นได้ คุณสามารถแยกออกจากมันกลับไปที่เชลล์จากนั้นใส่กลับเข้าไปใหม่และดูผลลัพธ์จากกระบวนการทำงาน การติดตั้งซ้ำสามารถทำได้จากเทอร์มินัลอื่น SSH เป็นต้นนอกจากนี้ยังอาจมีโปรแกรมอื่น ๆ ที่ให้คุณทำสิ่งนี้