สมมติว่ามี 2 งานt1, t2ซึ่งสามารถดำเนินการได้ในทางอนุกรมดังต่อไปนี้:
t1 ; t2
# OR
t1 && t2
ตอนนี้สมมติว่าฉันลืมเรียกใช้t2และt1กำลังทำงานอยู่ ฉันสามารถเพิ่มt2ไปยังไปป์ไลน์เพื่อให้สามารถดำเนินการได้หลังจากt1เสร็จสิ้นหรือไม่
สมมติว่ามี 2 งานt1, t2ซึ่งสามารถดำเนินการได้ในทางอนุกรมดังต่อไปนี้:
t1 ; t2
# OR
t1 && t2
ตอนนี้สมมติว่าฉันลืมเรียกใช้t2และt1กำลังทำงานอยู่ ฉันสามารถเพิ่มt2ไปยังไปป์ไลน์เพื่อให้สามารถดำเนินการได้หลังจากt1เสร็จสิ้นหรือไม่
คำตอบ:
ใช่คุณสามารถ:
fgหรือ%เพิ่มสิ่งที่คุณต้องการในรายการและดำเนินการเช่น:
fg ; systemctl suspend # or
% ; systemctl suspend
เนื่องจากfgส่งคืนค่าส่งคืนของงานที่ดำเนินการต่อรายการตัวดำเนินการที่ชอบ&&และ||ทำงานตามที่คาดไว้:
fg && echo "Finished successfully!" # or
% && echo "Finished successfully!"man bash/ JOB CONTROLพูดเกี่ยวกับตัวละครที่ถูกระงับ:
พิมพ์ ระงับ ตัวอักษร (ปกติ
^Z, Control- Z)bashในขณะที่กระบวนการที่กำลังทำงานอยู่สาเหตุที่กระบวนการจะหยุดและผลตอบแทนในการควบคุม (... ) ผู้ใช้อาจจัดการกับสถานะของงานนี้โดยใช้bgคำสั่งเพื่อดำเนินการต่อในพื้นหลังfgคำสั่งเพื่อดำเนินการต่อในเบื้องหน้าหรือkillคำสั่งเพื่อฆ่ามัน A มี^Zผลทันทีและมีผลข้างเคียงเพิ่มเติมที่ทำให้เกิดผลลัพธ์ที่รอดำเนินการและหัวพิมพ์จะถูกยกเลิก
fgอธิบายไว้ในman bash/ คำสั่งเชลล์อาคาร :
fg [ jobspec ]
Resume jobspecในเบื้องหน้าและทำให้งานปัจจุบัน หากjobspecไม่มีอยู่จะใช้แนวคิดของเชลล์ของงานปัจจุบัน ค่าส่งคืนคือคำสั่งที่วางไว้ในส่วนหน้าหรือความล้มเหลวหากรันเมื่อปิดการควบคุมงานหรือเมื่อเปิดใช้งานด้วยการควบคุมงานที่เปิดใช้งานหาก jobspec ไม่ได้ระบุงานที่ถูกต้องหรือjobspecระบุงานที่เริ่มโดยไม่มีการควบคุมงาน .
อ่านเพิ่มเติม (นอกเหนือจากman bash) ในการควบคุมงาน:
^Z^Zและ%-;%+;t3ก็ดีพอในบางกรณี แต่มันก็ยังห่างไกลจากการแก้ปัญหาที่แท้จริง
ฉันเห็นวิธีนี้ที่นี่: /superuser/334272/how-to-run-a-command-after-an-already-running-existing-one-finishes
โดยที่คุณทำCtrl+ zเพื่อหยุด (หยุดชั่วคราว) อันดับแรกจากนั้นคุณเรียกใช้คำสั่งที่ไม่ได้รับเช่น: fg && ./missed_cmd.shและมันจะทำงานทันทีที่fgเสร็จสิ้น
fg(หน้าคำสั่ง) จะนำงานระงับออนไลน์และ&&จะให้แน่ใจว่าคำสั่งที่ไม่ได้มีการเรียกใช้เฉพาะในกรณีที่คำสั่งแรกประสบความสำเร็จ
t3ในหรือt1; t2; t3t1 && t2 && t3