วิธีการใช้งานเทอร์มินัลต่อไปหลังจากออกคำสั่ง“ หยุดชั่วคราว”?


8

ฉันพิมพ์suspendในเทอร์มินัลและมันหยุดการทำงานชั่วคราว

ฉันจะกลับไปใช้งานเทอร์มินัลปกติได้อย่างไร ฉันได้ลองCtrl+ C, Ctrl+ D, Ctrl+ Q( ตามที่แนะนำไว้ที่นี่ ) และCtrl+ Zแต่ไม่ได้ผล แน่นอนฉันสามารถปิดเทอร์มินัลแล้วเปิดใหม่ได้ แต่ไม่มีวิธีใดที่จะ "กลับมาทำงาน" ในเทอร์มินัลต่อไปได้?

ฉันใช้ Ubuntu GNOME 16.04 โดยมีเชลล์เริ่มต้น (ทุบตี)


ขออภัยที่ฉันถามที่นี่ แต่จุดประสงค์ของคำสั่งนี้คืออะไร
pa4080

1
หากต้องการหยุดการเรียกใช้สคริปต์และให้ดำเนินการต่อในภายหลัง;)
Rinzwind

คำตอบ:


10

จากลิงค์ของคุณ:

จนกว่าจะได้รับสัญญาณ SIGCONT

นั่นจะเป็น kill -SIGCONT {pid}

  • killall -CONT bash จะดำเนินการต่อทั้งหมด
  • kill -18 {pid} จะเหมือนกัน
  • และเป็นเช่นนั้น kill -s CONT {pid}

ตามรายการนี้ควรเป็น control-z แต่คุณต้องใช้ control-z เพื่อหยุดกระบวนการ:

18 - SIGCONT - Resume process, ctrl-Z (2nd)
19 - SIGSTOP - Pause the process / free command line, ctrl-Z (1st)

คุณต้องการ {pid} ของเซสชันเชลล์ที่ทำงานอยู่ในเทอร์มินัล


และยังมีคำสั่งควบคุมงาน :

fg, bg

The fg command switches a job running in the background into the foreground. 
The bg command restarts a suspended job, and runs it in the background. 
If no job number is specified, then the fg or bg command acts 
upon the currently running job.

มันควรจะเป็น Ctrl + Q ด้วย แต่นั่นก็ไม่ทำงานด้วยเหตุผลบางอย่าง ฉันคิดว่าเนื่องจากเชลล์ถูกระงับมันไม่สามารถรับ Ctrl + Q (SIGCONT) จากเซสชันที่ถูกระงับ มันใช้งานได้อย่างที่คุณบอกว่าคุณใช้kill -SIGCONT PIDแต่ฉันไม่สามารถหาวิธีง่ายๆในการรับ PID ของเซสชันที่ถูกระงับเมื่อฉันเปิดเทอร์มินัลจำนวนมาก
terdon

มันไม่ทำงาน ฉันใช้ ps aux | คำศัพท์ grep เพื่อรับ pid ของเทอร์มินัลลอง SIGCONT ทั้ง 3 รูปแบบ แต่ก็ไม่มีใครทำงาน เมื่อฉันเพิ่งฆ่า pid เทอร์มินัลก็ปิดดังนั้นฉันจึงมี pid ที่ถูกต้อง
Cerberus

@Cerberus คุณต้องการให้ PID ของเซสชันเชลล์ทำงานในเทอร์มินัลไม่ใช่ของตัวเอง pgrep bashหากคุณมีเพียงหนึ่งสถานีที่เปิดก็ควรจะหาง่ายด้วย หากไม่ใช้pstree -pให้ค้นหา PID ของเทอร์มินัลที่นั่นและดู PID ของลูก ๆ ซึ่งหนึ่งในนั้นควรเป็นเซสชัน bash ของคุณ
terdon

ฉันจะต้องมีเทอร์มินัลสองเซสชันอย่างน้อยในสถานการณ์หนึ่งจะถูกระงับและอีกอันที่จะส่ง SIGCONT
Cerberus

1
SIGCONT จะถูกละเว้นปกติดังนั้นทำไมไม่เพียงแค่ไฟkillall -CONT bash? :-)
Jonas Schäfer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.