จะส่งกระบวนการไปสู่พื้นหลังและพื้นหน้าได้อย่างไร


17

ถ้าฉันทำping google.com &กระบวนการจะเป็นพื้นหลังและแสดงรายละเอียด ping ให้ฉัน ฉันยังคงสามารถใช้เทอร์มินัลกับคำสั่งอื่น ๆ ได้ แต่เอาต์พุตจาก ping และเอาต์พุตจากคำสั่งอื่น ๆ จะสับสน (ซึ่งไม่ใช่ปัญหา) แต่ฉันไม่สามารถยุติกระบวนการ ping นี้ได้เลย

สำหรับสิ่งที่ฉันต้องการนำมาไว้ด้านหน้าเบื้องหน้าแล้วกด ctrl + c หรืออะไรบางอย่าง ฉันลองใช้fgแต่ก็ไม่ได้ผล ดังนั้นฉันping google.com &จะกลับมาทำงานเบื้องหน้าได้อย่างไรหลังจากฉันกดปุ่มย้อนกลับที่ส่วนท้ายของคำสั่ง ping ของฉัน


2
ดูเหมือนว่าปัญหาที่คุณต้องการแก้ไขคือการฆ่างานเบื้องหลัง ไม่จำเป็นต้องนำมาไว้ด้านหน้า ใช้jobsเพื่อค้นหา Job ID jidของกระบวนการพื้นหลังและจากนั้นทำkill %jidเพื่อฆ่ามัน
gardenhead

คำตอบ:


30

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

รับงานปัจจุบัน:

$ jobs
[1]+     ping google.com &

เบื้องหน้างานโดยระบุหมายเลข:

fg %1

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

จากนั้นกดctrl+ cเพื่อหยุดและหยุดกระบวนการ

ดังที่ได้กล่าวไว้ในความคิดเห็นคุณสามารถส่งสัญญาณตามหมายเลขงานได้เช่นกัน kill %1

เพื่อความสมบูรณ์ถ้าคุณไม่ได้ใช้&ในขณะที่เรียกกระบวนการคุณสามารถส่งไปยังพื้นหลังโดยการแช่แข็งครั้งแรกด้วยctrl+ zแล้วพิมพ์bg


1
เพียงแค่fgได้โดยไม่ต้องโต้แย้งดูเหมือนว่าจะทำงานมากเกินไปอย่างน้อยเมื่อมีเพียงงานพื้นหลังหนึ่ง
Cedric Reichenbach

1
@CedricReichenbach แก้ไขแล้ว!
Zanna

-2

เพื่อตอบคำถามที่ถามคือวิธีการส่งออกของกระบวนการเพื่อพื้นหลังและเบื้องหน้า? ,teeคำสั่งจะทำ:

ในการคำนวณ tee เป็นคำสั่งในตัวแปลบรรทัดคำสั่ง (shells) โดยใช้สตรีมมาตรฐานซึ่งอ่านอินพุตมาตรฐานและเขียนลงในเอาต์พุตมาตรฐานและไฟล์หนึ่งไฟล์ขึ้นไปโดยทำซ้ำอินพุตอย่างมีประสิทธิภาพ https://en.wikipedia.org/wiki/Tee_(command)


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