ฉันจะเริ่มงานที่หยุดทำงานใน Linux ต่อได้อย่างไร?


343

ฉันจะเริ่มงานที่หยุดทำงานใน Linux ต่อได้อย่างไร? ฉันใช้ emacs และกด ctrl-z โดยไม่ตั้งใจซึ่งทำให้ฉันกลับไปที่คอนโซล ฉันเห็นได้เมื่อพิมพ์ 'jobs'

[*****]$ jobs
[1]+  Stopped                 emacs test_queue.cpp

นี่เป็นขั้นตอนการทำงานปกติสำหรับ Vim หากคุณต้องการเก็บคำสั่งไว้ในประวัติทุบตีของคุณคุณจะต้องCtrl-zพิมพ์คำสั่งแล้วดำเนินการต่อ เห็นได้ชัดว่าคุณสามารถเรียกใช้คำสั่งโดยไม่ปล่อย Vim ผ่าน:!คำสั่ง ed
icc97

คำตอบ:


382

คำสั่งfgคือสิ่งที่คุณต้องการใช้ คุณยังสามารถระบุหมายเลขงานได้หากมีงานที่หยุดมากกว่าหนึ่งงาน


59
สำหรับการอ้างอิง fg คือ "เบื้องหน้า" คุณสามารถทำงานต่อในพื้นหลังด้วย "bg"
Sirex

261

คำสั่งควบคุมงานทั่วไปใน Linux คือ:

  • งาน - รายการงานปัจจุบัน
  • fg - ทำงานต่อที่อยู่ในคิว
  • fg% [หมายเลข] - งานต่อ [หมายเลข]
  • bg - งานต่อไปในคิวลงในพื้นหลัง
  • bg% [หมายเลข] - ดันงาน [หมายเลข] ลงในพื้นหลัง
  • kill% [number] - ฆ่าหมายเลขงาน [number]
  • kill - [สัญญาณ]% [หมายเลข] - ส่งสัญญาณ [สัญญาณ] ไปยังหมายเลขงาน [หมายเลข]
  • ยกเลิก% [หมายเลข] - ปฏิเสธกระบวนการ (ไม่มีเทอร์มินัลอื่นจะเป็นเจ้าของ) ดังนั้นคำสั่งจะยังคงอยู่แม้หลังจากปิดเทอร์มินัลแล้ว

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


30
ฉันหลีกเลี่ยง "kill% 1" เพราะพิมพ์ผิดว่า "kill 1" มันแย่จริงๆ :)
barrycarter

5
@barrycarter นั่นเป็นเรื่องจริงมาก ฉันมักจะทำfgและCtrl-C;)
Majenko

6
@barry: ซึ่งเป็นสาเหตุให้ init ใน Upstart ละเว้น SIG {TERM, KILL} ตามค่าเริ่มต้น
Hello71

7
และแน่นอนว่า "ไม่เคยทำงานแบบรูท";)
barrycarter

47

คุณยังสามารถพิมพ์%<process_name>; เช่นคุณกด Ctrl-Z เป็น emacs จากนั้นคุณสามารถพิมพ์%emacsในคอนโซลและนำกลับมาที่พื้นหน้า


เป็นสิ่งที่ดีมากที่ต้องรู้
ZAD-Man

33

เพียงเพื่อเพิ่มคำตอบอื่น ๆทุบตีช่วยให้คุณข้ามfgถ้าคุณระบุหมายเลขงาน

ตัวอย่างเช่นสิ่งเหล่านี้เทียบเท่าและกลับมาทำงานล่าสุด:

%
%%
fg
fg %

งานต่อเหล่านี้ # 4:

%4
fg 4

2
ขณะนี้เป็นชนิดของเย็นก็ยังพบว่ามันง่ายที่จะพิมพ์กว่าfg %
rr-

3
%มันเยี่ยมมากขอบคุณ! ในฐานะนักพิมพ์แบบสัมผัสฉันพบว่าfgมันน่ารำคาญมาก (นิ้วเดียวกัน) แต่แล้วเป็นcdเช่นนั้น
Gauthier

และคุณสามารถเริ่มต้นได้ในพื้นหลังที่มีทั้งหรือเพียงแค่bg % % &
Wildcard

ในกรณีของฉันเมื่อฉันพยายามที่จะใช้ fg ฉันเห็นกระบวนการหยุดปรากฏขึ้นและหายไปอย่างรวดเร็วและเพียง <fg%> ประสบความสำเร็จในการเรียกคืน
Lefi Tarik

20

หากคุณไม่ได้เรียกใช้จากเทอร์มินัลปัจจุบันให้ใช้ps aux | grep <process name>เพื่อค้นหาหมายเลขกระบวนการ (pid) จากนั้นดำเนินการต่อด้วย:

kill -SIGCONT <pid>

(แม้จะมีชื่อkillเป็นเพียงเครื่องมือในการส่งสัญญาณไปยังกระบวนการอนุญาตให้กระบวนการสื่อสารกันกันและกัน "สัญญาณฆ่า" เป็นเพียงหนึ่งในสัญญาณมาตรฐานจำนวนมาก)

เคล็ดลับโบนัส: ใส่อักขระตัวแรกของชื่อกระบวนการด้วย[]เพื่อป้องกันgrepคำสั่งปรากฏในผลลัพธ์ เช่นเพื่อค้นหาemacsกระบวนการใช้ps aux | grep [e]macs


2
นอกจากนี้ยังใช้งานได้หากคุณปฏิเสธกระบวนการที่หยุดทำงาน
mabraham

คุณสามารถเข้าถึงอินพุต / เอาต์พุตของมันเมื่อมันเกิดขึ้นได้fgไหม?
Ciprian Tomoiagă

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