คำถามติดแท็ก job-control

คำถามเกี่ยวกับวิธีต่างๆที่เชลล์สามารถควบคุมงานได้: การระงับการทำงานต่อการยกเลิกการดำเนินการเป็นต้น

2
เปลี่ยนกระบวนการหลักของกระบวนการหรือไม่?
เป็นไปได้หรือไม่ที่จะเปลี่ยนกระบวนการหลักของกระบวนการ ถ้าใช่เป็นอย่างไร ตัวอย่างเช่น, จะscreenจัดการแนบscreenเซสชั่นและกระบวนการทำงานภายในมันไปยังกระบวนการเชลล์ที่แตกต่างกันอย่างไร มีการเปลี่ยนแปลงกระบวนการแม่หรือไม่? ฉันดูเหมือนจะได้ยินวิธีการอื่นของการเปลี่ยนแปลงกระบวนการเชลล์ที่โปรแกรมกำลังทำงานอยู่ แต่ฉันจำไม่ได้ มีการเปลี่ยนแปลงของกระบวนการหลักของโปรแกรมหรือไม่? ฉันคิดว่าdisownในกระบวนการจะเปลี่ยนกระบวนการหลักของกระบวนการเพียงเพราะชื่อdisownมีความหมายว่า แต่ฉันพบว่ามันไม่เป็นความจริง Emacs ไคลเอ็นต์สามารถเชื่อมต่อกับเซิร์ฟเวอร์ emacs บนแท็บเทอร์มินัลอื่น มีการเปลี่ยนแปลงกระบวนการแม่หรือไม่?

1
กระบวนการลบเครื่องหมายบวก
คำสั่งเหล่านี้กำลังทำงานในพื้นหลัง: foo @ contoso ~ $ sleep 30 & foo @ contoso ~ $ sleep 60 & foo @ contoso ~ $ sleep 90 & เครื่องหมายลบและเครื่องหมายบวกหลังจากเรียกใช้กระบวนการงานคืออะไร foo @ contoso ~ $ jobs [1] นอนหลับ 30 & [2] - นอนหลับ 60 & [3] + นอนหลับ 90 &

1
วิธีการหยุดชั่วคราวและดำเนินการต่อกระบวนการอย่าง bash
คำถามนี้เป็นคำถามต่อไปนี้: วิธีหยุดชั่วคราวและดำเนินกระบวนการต่อ ฉันเริ่ม Firefox จากการทุบตีเซสชันใน gnome-terminal แผนผังกระบวนการมีลักษณะดังนี้: $ ps -e -o pid,ppid,cmd -H 1828 1 gnome-terminal 26677 1828 bash 27980 26677 /bin/sh /usr/lib/firefox-3.6.15/firefox 27985 27980 /bin/sh /usr/lib/firefox-3.6.15/run-mozilla.sh /usr/lib/firefox-3.6.15/firefox-bin 27989 27985 /usr/lib/firefox-3.6.15/firefox-bin 28012 27989 /usr/lib/firefox-3.6.15/plugin-container /usr/lib/adobe-flashplugin/libflashplayer.so 27989 plugin true เมื่อฉันCTRL+Zทุบตีมันจะหยุด Firefox เมื่อฉันออกคำสั่งbg(หรือfg) มันจะกลับมาทำงานกับ firefox นี่คือที่คาดไว้ เมื่อฉันออกคำสั่งkill -s SIGTSTP 27980ในเทอร์มินัลอื่นมันจะพิมพ์บรรทัด[1]+ Stopped firefoxในเทอร์มินัลแรก …


4
ปิดใช้งานการควบคุมงานใน bash (CTRL-Z)
มันเกิดขึ้นกับฉันในบางครั้งฉันกดCTRL+ Zโดยไม่ตั้งใจและใบสมัครของฉันหายไปเป็นพื้นหลัง ฉันรู้ว่าฉันสามารถนำมันกลับมาได้fgดังนั้นจึงไม่ใช่เรื่องใหญ่อะไร แต่ฉันสงสัยเกี่ยวกับการjob controlปิดเครื่องนี้อยู่ดี ในชีวิตทั้งชีวิตของฉันฉันไม่สามารถจำหนึ่งครั้งเมื่อฉันต้องการมันก็แค่ดูเหมือนว่าฉันเป็นรูปแบบที่ระลึกในอดีต ตกลงเพื่อปิดใช้งานjob controlทั้งหมดหรือไม่ หรือฉันกำลังพลาดบางสิ่งบางอย่างและคุณสมบัตินี้มีประโยชน์หรือไม่ ฉันจะปิดการใช้งานในฉันได้อย่างไร.bashrc UPDATE: ฉันได้ลองset +mตามที่ @Falsenames แนะนำแล้ว อย่างไรก็ตามสิ่งนี้ใช้ได้เฉพาะเมื่อฉันพิมพ์ในเทอร์มินัล การเพิ่มset +mเข้าไปในของฉัน.bashrcไม่มีผล

4
ฉันจะย้ายโปรเซสเป็นพื้นหลังและปิดเสียงเอาต์พุตได้อย่างไร
ว่าฉันเริ่มกระบวนการใน terminal และจะส่งออกไปยังข้อผิดพลาดมาตรฐานในขณะที่มันทำงาน ฉันต้องการย้ายกระบวนการไปยังพื้นหลังและปิดเสียงในเวลาเดียวกัน มีวิธีทำโดยไม่หยุดกระบวนการและเริ่มใช้อีกครั้ง&และ> /dev/null 2>&1? ฉันสงสัยว่ามีคำสั่งบางอย่างที่ทำงานได้bg และสามารถเปลี่ยนตัวอธิบายผลลัพธ์ของกระบวนการเป้าหมายได้หรือไม่

4
รับ PID ของคำสั่งใด ๆ ในลำดับของ piped ของคำสั่ง
ถ้า, ในbash, ฉันเรียกใช้งาน: cmd1 | cmd2 | ... | cmdi | ... | cmdn & ในกรณีที่cmd{1..n}ไม่ชัดเจนฉันจะได้รับ PID ได้cmdiอย่างไร อีกวิธีหนึ่งฉันจะส่งสัญญาณcmdiกระบวนการได้อย่างไร (ตัวอย่างเช่นส่งSIGUSR1?) pkill/ pgrep, pidofฯลฯ ดูไม่เหมือนคำตอบที่ดีเนื่องจากกรณีอื่น ๆcmdiอาจจะทำงานรวมทั้งเป็นส่วนหนึ่งของท่อเดียวกัน jobs -pให้ PID ของcmd1สำหรับฉัน i{1..n}สามารถเป็นอะไรก็ได้ใน
11 bash  shell  pipe  job-control 

1
คำสั่ง bash แบบไม่บล็อค
สมมติว่าฉันมีสคริปต์ทุบตีต่อไปนี้: #!/bin/sh gedit rm *.temp เมื่อผมดำเนินการโดยใช้sh ./test.sh, geditปรากฏขึ้น แต่ส่วนหนึ่งไม่ทำงานจนกว่าหลังจากที่ผมใกล้ชิดrmgedit ฉันต้องการให้สคริปต์ทำงานต่อไปแม้ว่าgeditจะไม่ได้ปิด เช่นเดียวกับที่geditไม่ได้ปิดกั้นการดำเนินการทุบตี ตัวอย่างที่ฉันให้ไว้เป็นเพียงตัวอย่าง (การวางไว้rmก่อนจะไม่ทำงานในสถานการณ์จริง)
11 bash  job-control 

1
ฉันจะยกเลิกรายการคำสั่งที่เหลือใน Bash ได้อย่างไร?
ใน Bash บางครั้งฉันจะพิมพ์รายการคำสั่งและการเข้าชมEnterและต่อมาก็ตระหนักว่ามีข้อผิดพลาดบางคำสั่งใกล้จะจบรายการ ฉันรู้ว่าถ้าฉันกดCtrl+ Cมันจะยุติคำสั่งที่กำลังทำงานอยู่และยกเลิกรายการที่เหลือ มีวิธีการยกเลิกรายการที่เหลือโดยไม่ยกเลิกคำสั่งที่กำลังทำงานอยู่หรือไม่? ตัวอย่างเช่นสมมติว่าฉันพิมพ์บางสิ่งบางอย่างเช่น foo; bar หรือ foo && bar ซึ่งfooเป็นคำสั่งที่ใช้เวลานานซึ่งเป็นสิ่งสำคัญมากที่จะไม่ขัดจังหวะและbarทำสิ่งที่ไม่สามารถแก้ไขได้และไม่ต้องการ (พูดshutdown -h nowหรือrm -rf /) ในขณะที่fooยังทำงานอยู่มีวิธีทั่วไปในการบอกเชลล์ให้fooเสร็จ แต่จะไม่ทำงานในbarภายหลังหรือไม่? (ใช่ฉันสามารถเปลี่ยนการอนุญาตbarเพื่อไม่ให้ใช้งานได้ แต่มันไม่สะดวกbarเป็นพิเศษหากเป็นอย่างrmที่ฉันต้องการใช้ในระหว่างนี้และจะไม่ทำงานหากฉันไม่ได้เป็นเจ้าของbarหรือbarเป็นบิวอิน)

1
ทำไมบางครั้งกระบวนการที่มีพื้นหลังจึงหยุดทำงานเอง?
บางครั้งบางครั้งหลังจากที่ฉันแบ็คกราวน์กระบวนการด้วยbgใน bash เมื่อฉันกด Enter ในเชลล์เดียวกันเพื่อแสดงพร้อมท์อีกครั้ง (เพื่อตรวจสอบว่าฉันยังอยู่ใน bash เมื่อแสดงผลลัพธ์บางส่วนจากกระบวนการพื้นหลัง) กระบวนการพื้นหลังดูเหมือนว่าจะหยุดเอง ถ้าฉันทำbgอีกครั้งปัญหาเดียวกันจะเกิดขึ้นอีก fgวิธีเดียวที่จะแก้ไขมันน่าจะเป็น ทำไมสิ่งนี้ถึงเกิดขึ้น

1
“ fg” หมายถึงอะไร
ไม่มีรายการคู่มือสำหรับ ctrl-z หรือ fg "fg" หมายถึงอะไรในบริบทของการควบคุมงาน? กล่าวอีกนัยหนึ่งการพิมพ์ ctrl-z จะระงับงานปัจจุบันให้ฉันกลับไปที่เชลล์และคำสั่ง "fg" จะเปิดใช้งานงานที่ถูกระงับอีกครั้ง "fg" หมายถึงอะไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.