ฉันกำลังพยายามใช้เชลล์สคริปต์เพื่อเริ่มคำสั่ง ฉันไม่สนใจว่า / เมื่อไหร่ / อย่างไร / ทำไมมันจบ ฉันต้องการให้กระบวนการเริ่มต้นและทำงาน แต่ฉันต้องการกลับไปที่เชลล์ของฉันทันที ...
nohup, &และdisown , คลิกที่นี่เพื่อเลื่อนไปที่คำตอบที่สี่
ฉันกำลังพยายามใช้เชลล์สคริปต์เพื่อเริ่มคำสั่ง ฉันไม่สนใจว่า / เมื่อไหร่ / อย่างไร / ทำไมมันจบ ฉันต้องการให้กระบวนการเริ่มต้นและทำงาน แต่ฉันต้องการกลับไปที่เชลล์ของฉันทันที ...
nohup, &และdisown , คลิกที่นี่เพื่อเลื่อนไปที่คำตอบที่สี่
คำตอบ:
คุณสามารถเรียกใช้สคริปต์ในพื้นหลัง:
$ myscript &
โปรดทราบว่าสิ่งนี้แตกต่างจากการใส่ไว้&ในสคริปต์ของคุณซึ่งอาจไม่ทำตามที่คุณต้องการ
&อยู่ในสคริปต์และคุณไม่มีwaitคำสั่งพื้นหลังจะถูกฆ่าเมื่อสคริปต์ออก
myscriptปรับเปลี่ยนสภาพแวดล้อมเทอร์มินัลเช่น มันเป็นคำสั่งเริ่มต้นเทอร์มินัลที่ไม่จำเป็นในทันทีและอาจล่าช้าคำสั่งนี้จะยังคงแก้ไขสภาพแวดล้อมเทอร์มินัลหรือไม่
ทุกคนก็ลืมdisownไป ดังนั้นนี่คือบทสรุป:
& ทำให้งานอยู่เบื้องหลัง
disown ลบกระบวนการออกจากการควบคุมงานของเชลล์ แต่ยังคงปล่อยให้กระบวนการเชื่อมต่อกับเทอร์มินัล
SIGHUP(หากเชลล์ได้รับ a SIGHUPมันจะส่งไฟล์SIGHUPไปยังกระบวนการด้วยซึ่งโดยปกติจะทำให้กระบวนการยุติลง)nohupยกเลิกการเชื่อมต่อกระบวนการจาก terminal, เปลี่ยนเส้นทางการส่งออกไปยังและโล่จากnohup.outSIGHUP
SIGHUPที่ส่ง&(เป็นงานพื้นหลัง)disownDebian หรือ OS X ฉันคิดว่ามันเป็นโปรแกรม แต่ดูเหมือนว่าฉันจะเข้าใจผิด มันคืออะไร?
nohup cmd
ไม่แฮงค์เมื่อคุณปิดเครื่อง เอาต์พุตตามค่าเริ่มต้นไปที่ nohup.out
คุณสามารถรวมสิ่งนี้เข้ากับพื้นหลัง
nohup cmd &
และกำจัดผลลัพธ์
nohup cmd > /dev/null 2>&1 &
คุณยังสามารถdisownสั่ง พิมพ์cmd, Ctrl-Z, bg,disown
tail nohup.outซึ่งจะแสดง 10 บรรทัดสุดท้ายของเอาต์พุตคำสั่ง ฉันใช้สิ่งนี้สำหรับงานสำรองข้อมูล rsync เพื่อดูว่าไฟล์นั้นอยู่ที่ไฟล์ใด
jobsกับ
หรืออีกวิธีหนึ่งหลังจากที่คุณเรียกใช้โปรแกรมแล้วคุณสามารถกด Ctrl-Z ซึ่งจะหยุดโปรแกรมของคุณแล้วพิมพ์
bg
ซึ่งทำให้โปรแกรมที่หยุดล่าสุดของคุณอยู่เบื้องหลัง (มีประโยชน์หากคุณเริ่มต้นบางสิ่งโดยไม่มี '&' และยังคงต้องการให้อยู่ในส่วนหลังโดยไม่ต้องรีสตาร์ท)
screen -m -d $command$เริ่มคำสั่งในเซสชันแยก คุณสามารถใช้screen -rแนบกับเซสชันที่เริ่มต้น เป็นเครื่องมือที่ยอดเยี่ยมมีประโยชน์อย่างยิ่งสำหรับการประชุมระยะไกล อ่านเพิ่มเติมได้ที่man screen.