วางกระบวนการในพื้นหลังโดยไม่หยุด - (ctrl + z)?


16

หากฉันเริ่มต้นกระบวนการโดยพิมพ์ตามปกติที่บรรทัดคำสั่งเช่น

wget http://site.com/bigfile.zip

แล้วตัดสินใจว่าฉันต้องการย้ายไปที่พื้นหลังฉันรู้ว่าฉันสามารถใช้บางอย่างเช่นctrl+zแล้วbg 1(หรือjobsก่อนถ้าจำเป็นต้องได้รับรหัส) เพื่อวางไว้ในพื้นหลัง

คำถามของฉันคือหากมีวิธีการย้ายงานจากเบื้องหน้าไปยังพื้นหลังโดยตรงโดยไม่หยุด - เช่นทางลัดอื่นนอกเหนือจากctrl+zนั้นจะทำเช่นนั้น

ฉันยังตระหนักว่าฉันสามารถผนวก&ท้ายคำสั่งเดิมเพื่อเริ่มต้นในพื้นหลัง แต่คำถามนั้นเกี่ยวกับเมื่อคุณเริ่มกระบวนการในเบื้องหน้าแล้วรู้ว่าคุณต้องการย้ายไปยังพื้นหลัง

คำตอบ:


14

ใช่แน่นอน: screen (1)คือคำตอบ

ในการเริ่มต้นให้เพิ่มscreen -R~ / .bash_profile หรือเทียบเท่าออกจากระบบและลงชื่อเข้าใช้ใหม่

หากต้องการดำเนินการต่อในพื้นหลังให้กด Control-A จากนั้น N สิ่งนี้จะสร้างหน้าจอเทอร์มินัลใหม่ในเบื้องหน้าในขณะที่กระบวนการทำงานของคุณบนพื้นหลังเป็นไปอย่างราบรื่น

กด Control-A จากนั้น "เพื่อรับรายการหน้าจอแบบโต้ตอบที่คุณเปิดไว้หรือกด Control-A ตามด้วยหมายเลขเพื่อสลับไปยังหน้าจอเฉพาะโดยตรง

ความต้องการดั้งเดิมของคุณคือสามารถย้ายกระบวนการไปยังพื้นหลังโดยไม่หยุด หน้าจอมีประโยชน์เพิ่มเติมสองประการและสิ่งเหล่านี้มีขนาดใหญ่หากคุณต้องการทำหลายสิ่งพร้อมกัน:

  1. คุณสามารถสลับระหว่างกระบวนการต่าง ๆ ได้อย่างคล่องแคล่วกว่าโดยใช้ Control-Z, bg, fg เป็นต้น
  2. หากเทอร์มินัลเซสชันของคุณถูกตัดการเชื่อมต่อกระบวนการของคุณ (เช่นwget http://example.com/bigfile.iso) จะไม่ยุติลง! เชลล์เซสชันทั้งหมดของคุณจะรอคุณอยู่เมื่อคุณเชื่อมต่ออีกครั้ง

สำหรับข้อมูลเพิ่มเติมโปรดอ่านหน้าจอ (1) manpageหรือคู่มือการใช้งานหน้าจอ GNU


1
เพียงให้แน่ใจว่าคุณได้มีscreenแพคเกจติดตั้งครั้งแรก :)
จอร์จ Tasioulis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.