คำถามติดแท็ก background-process

กระบวนการ 'เบื้องหลัง' เป็นกระบวนการคอมพิวเตอร์ที่เรียกใช้ "เบื้องหลัง" (เช่นในพื้นหลัง) และไม่มีการแทรกแซงจากผู้ใช้ งานทั่วไปสำหรับการใช้กระบวนการดังกล่าวรวมถึงการบันทึกการตรวจสอบระบบการตั้งเวลาและการแจ้งเตือนผู้ใช้ ใช้แท็กนี้สำหรับคำถามใด ๆ เกี่ยวกับกระบวนการพื้นหลัง

11
ฉันจะรันคำสั่งที่จะอยู่รอดได้อย่างไรปิดเทอร์มินัล
บางครั้งฉันต้องการเริ่มกระบวนการและลืมมันไป ถ้าฉันเริ่มต้นจากบรรทัดคำสั่งเช่นนี้ redshift ฉันปิดเทอร์มินัลไม่ได้ไม่เช่นนั้นจะทำให้กระบวนการหยุดทำงาน ฉันสามารถเรียกใช้คำสั่งในลักษณะที่ฉันสามารถปิดเทอร์มินัลโดยไม่ฆ่ากระบวนการได้หรือไม่?

4
วิธีรับ pid ของคำสั่งที่ดำเนินการครั้งสุดท้ายในเชลล์สคริปต์?
ฉันต้องการมีเชลล์สคริปต์เช่นนี้: my-app & echo $my-app-pid แต่ฉันไม่ทราบวิธีการรับ pid ของคำสั่งที่ดำเนินการเพียง ฉันรู้ว่าฉันสามารถใช้jobs -p my-appคำสั่งเพื่อ grep pid แต่ถ้าฉันต้องการรันเชลล์หลาย ๆ ครั้งวิธีนี้จะไม่ทำงาน เพราะjobspecไม่ชัดเจน

8
จะยุติกระบวนการพื้นหลังได้อย่างไร?
ฉันได้เริ่มต้น wget &บนเครื่องระยะไกลในพื้นหลังใช้ ทันใดนั้นมันก็หยุดดาวน์โหลด ฉันต้องการที่จะยุติกระบวนการของมันแล้วเรียกใช้คำสั่งอีกครั้ง ฉันจะยุติมันได้อย่างไร ฉันไม่ได้ปิดหน้าต่างเชลล์ แต่เท่าที่ทราบมันไม่ได้หยุดการใช้Ctrl+ Cและ+CtrlZ

5
วิธีหยุดชั่วคราวและนำกระบวนการพื้นหลังมาทำงานเบื้องหน้า
ฉันมีกระบวนการที่ทำงานอยู่เบื้องหน้า ฉันหยุดทำงานโดยCtrl+ Zจากนั้นให้ทำงานในพื้นหลังbg <jobid>ต่อ ฉันสงสัยว่าจะระงับกระบวนการที่ทำงานในพื้นหลังได้อย่างไร ฉันจะนำกระบวนการพื้นหลังมาสู่เบื้องหน้าได้อย่างไร แก้ไข: กระบวนการส่งออกไปยัง stderr ดังนั้นฉันจะออกคำสั่งfg <jobid>ในขณะที่กระบวนการส่งออกไปยังเทอร์มินัลได้อย่างไร

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

9
จะไม่ทำสิ่งใดตลอดไปอย่างสง่างาม?
ผมมีโปรแกรมที่ก่อให้ข้อมูลที่เป็นประโยชน์ในแต่ยังอ่านจากstdout stdinฉันต้องการเปลี่ยนเส้นทางเอาต์พุตมาตรฐานไปยังไฟล์โดยไม่ต้องให้อะไรกับอินพุตมาตรฐาน จนถึงตอนนี้ดีมาก: ฉันทำได้: program > output และไม่ทำอะไรเลยใน tty อย่างไรก็ตามปัญหาคือฉันต้องการทำในพื้นหลัง ถ้าฉันทำ: program > output & โปรแกรมจะถูกระงับ ("ถูกระงับ (อินพุต tty)") ถ้าฉันทำ: program < /dev/null > output & โปรแกรมหยุดทำงานทันทีเนื่องจากถึง EOF ดูเหมือนว่าสิ่งที่ฉันต้องการก็คือการเข้าไปในท่อสิ่งที่ไม่ได้ทำอะไรสำหรับจำนวนเงินที่แน่นอนของเวลาและไม่ได้อ่านprogram stdinแนวทางต่อไปนี้ใช้ได้ผล: while true; do sleep 100; done | program > output & mkfifo fifo && cat fifo | program > output …

3
ถ้าคุณ ^ Z จากกระบวนการมันจะ "หยุด" คุณจะสลับกลับมาได้อย่างไร
ฉันตั้งใจ "หยุด" telnetกระบวนการของฉัน ตอนนี้ฉันไม่สามารถ "เปลี่ยนกลับ" เป็นมันและฉันไม่สามารถฆ่ามันได้ (มันจะไม่ตอบสนองkill 92929โดยที่ 92929 เป็นกระบวนการ) ดังนั้นคำถามของฉันคือถ้าคุณมีกระบวนการหยุดในบรรทัดคำสั่ง linux อย่างไรคุณเปลี่ยนกลับเป็นมันหรือฆ่ามันโดยไม่ต้องหันไปkill -9?

5
เรียกใช้หลายคำสั่งและฆ่าพวกเขาเป็นหนึ่งในทุบตี
ฉันต้องการเรียกใช้หลายคำสั่ง (โปรเซส) ในเชลล์เดียว พวกเขาทั้งหมดมีผลผลิตต่อเนื่องของตัวเองและไม่หยุด เล่นกับพวกเขาในการแบ่งพื้นหลัง-Ctrl Cผมอยากจะเรียกพวกเขาเป็นกระบวนการเดียวที่จะสามารถที่จะหยุดทั้งหมดของพวกเขาด้วย (subshell อาจจะ?) -CtrlC โดยเฉพาะฉันต้องการเรียกใช้การทดสอบหน่วยด้วยmocha(โหมดดู) เรียกใช้เซิร์ฟเวอร์และเรียกใช้การประมวลผลไฟล์ล่วงหน้า (โหมดดู) และดูผลลัพธ์ของแต่ละรายการในหน้าต่างเทอร์มินัลเดียว โดยทั่วไปฉันต้องการหลีกเลี่ยงการใช้งานนักวิ่ง ฉันสามารถรับรู้ได้โดยเรียกใช้กระบวนการในพื้นหลัง ( &) แต่จากนั้นฉันต้องใส่พวกเขาลงในเบื้องหน้าเพื่อหยุดพวกเขา ฉันต้องการที่จะมีกระบวนการห่อหุ้มพวกเขาและเมื่อฉันหยุดกระบวนการมันจะหยุด 'ลูก' ของมัน

6
วิธีฆ่าเซสชัน SSH ที่เริ่มต้นด้วยตัวเลือก -f (ทำงานในพื้นหลัง)
ฉันหลงทางไปแล้ว จากหน้าคน: -f Requests ssh to go to background just before command execution. หลังจากเริ่ม SSH ด้วย-fตัวเลือกฉันมีอุโมงค์ทำงาน แต่หลังจากใช้เสร็จฉันก็ไม่รู้จะโต้ตอบกับมันอย่างไร ตัวอย่างเช่นฉันไม่สามารถปิดอุโมงค์ SSHเมื่อฉันทำเสร็จแล้ว วิธีปกติฉันรู้ว่าไม่ทำงาน ตัวอย่างเช่นjobsคืนค่าอะไร ~คำสั่งไม่รับรู้ (และผมไม่ทราบว่าวิธีการที่จะใช้มันต่อไป) อย่างไรก็ตามpgrepบอกฉันว่าอุโมงค์ SSH ยังคงทำงานอยู่ (หลังจากฉันปิดเทอร์มินัล ฯลฯ ) ฉันจะโต้ตอบกับมันได้อย่างไร ฉันจะปิดมันได้อย่างไร

7
เรียกใช้งานคำสั่งรีโมตปลดการเชื่อมต่อ ssh อย่างสมบูรณ์
ฉันมี 2 เครื่องคอมพิวเตอร์และlocalpcremoteserver ฉันต้องการที่จะดำเนินการคำสั่งบางอย่างเกี่ยวกับlocalpc remoteserverสิ่งหนึ่งที่ต้องทำคือเริ่มสคริปต์สำรองที่ทำงานหลายชั่วโมง ฉันต้องการคำสั่งlocalpcให้ "ดับไฟ" จากนั้นทำงานโดยอิสระอย่างremoteserverเต็มที่เหมือนlocalpcไม่เคยมีมาตั้งแต่แรก นี่คือสิ่งที่ฉันทำไปแล้ว: remoteserver ภายในมีสคริปต์: /root/backup.sh localpc มีกำหนดการทำงานนี้: ssh root@remoteserver 'nohup /root/backup.sh' & ฉันกำลังทำสิ่งนี้อย่างถูกวิธีหรือไม่? มีวิธีที่ดีกว่าในการทำเช่นนี้? ฉันจะพบปัญหาใด ๆ ในการทำเช่นนี้หรือไม่?

4
อะไรคือความแตกต่างระหว่างการเรียกใช้โปรแกรมเป็น daemon และฟอร์กมันลงในพื้นหลังด้วย '&'
อะไรคือความแตกต่างในทางปฏิบัติจากมุมมองดูแลระบบเมื่อปรับใช้บริการบนระบบที่ใช้ระบบปฏิบัติการยูนิกซ์?

3
การเชื่อมต่อ SSH พื้นหลังถาวรเพื่อสร้างอุโมงค์ย้อนกลับ: วิธีที่ถูกต้องคืออะไร?
คำถามที่เกี่ยวข้อง: เริ่มการเชื่อมต่อ ssh จากเซิร์ฟเวอร์ไปยังไคลเอนต์ คำตอบจากที่นั่นช่วยฉันได้มากคำสั่งนี้ทำในสิ่งที่ฉันต้องการ: ssh -R 2225:localhost:22 loginOfServerWithPublicIP@publicIP ดังนั้นฉันจึงเขียนสคริปต์เพื่อเชื่อมต่อใหม่ตลอดเวลา: #!/bin/bash while true; do echo "try to connect..." ssh -o ServerAliveInterval=240 -R 2225:localhost:22 user@host echo "restarting in 5 seconds.." sleep 5 done /etc/crontabและเพิ่มความมันไป แต่ฉันพบว่าใช้งานได้ถ้าเพียงฉันรัน "ด้วยมือ" จากเปลือก แต่ถ้ามันถูกเรียกโดย cron, ssh เชื่อมต่อและเสร็จสิ้นทันที (ดังนั้นสคริปต์ด้านบนจะเชื่อมต่อใหม่ตลอดเวลา) จากman sshฉันพบว่าสำหรับการเชื่อมต่อพื้นหลังฉันควรโทรด้วย-nกุญแจ แต่มันไม่ได้ช่วย จากนั้นฉันแค่มองไปรอบ ๆ เพื่อหาสคริปต์ที่คล้ายกันและฉันพบว่ามันใช้งานได้ถ้าฉันเรียกtail -f somethingเช่นคำสั่ง "ไม่สิ้นสุด" …

1
GNU parallel vs & (ฉันหมายถึงพื้นหลัง) vs xargs -P
ฉันสับสนเกี่ยวกับความแตกต่างหรือข้อได้เปรียบ (ถ้ามี) ของการใช้งานชุดหนึ่งใน.shสคริปต์โดยใช้GNU parallel คำตอบของEg Ole Tange : parallel ./pngout -s0 {} R{} ::: *.png &แทนที่จะพูดบ่วงผ่านพวกเขาวางไว้ในพื้นหลัง คำตอบของFrostschutzเช่น: #copied from the link for illustration for stuff in things do ( something with stuff ) & done wait # for all the something with stuff ในระยะสั้นพวกเขามีเพียง syntactically หรือจริงแตกต่างกันอย่างไร และถ้าแตกต่างกันจริงเมื่อฉันควรใช้แต่ละ

5
ฉันใช้ `&`: ทำไมกระบวนการไม่ทำงานในพื้นหลัง
ฉันรู้ว่าฉันสามารถต่อท้าย&คำสั่งเพื่อเรียกใช้กระบวนการในพื้นหลัง ฉันกำลังเข้า SSH ในกล่อง Ubuntu 12.04 และรันโปรแกรมไพ ธ อนด้วย$python program.py &- แต่เมื่อฉันไปปิดหน้าต่างเทอร์มินัลฉันได้รับข้อความแจ้งว่าการปิดเทอร์มินัลจะเป็นการฆ่ากระบวนการที่กำลังทำงานอยู่ ทำไมนี้ ฉันใช้เครื่องหมายและการเรียกใช้กระบวนการในพื้นหลัง ฉันจะให้มันทำงานได้อย่างไรโดยไม่คำนึงว่าฉันเป็น SSH หรือไม่

4
สี่งานพร้อมกัน…ฉันจะทำอย่างไร
ฉันมีรูปภาพ PNG จำนวนหนึ่งอยู่ในไดเรกทอรี ฉันมีแอปพลิเคชันชื่อ pngout ที่ฉันเรียกใช้เพื่อบีบอัดรูปภาพเหล่านี้ แอปพลิเคชันนี้ถูกเรียกใช้โดยสคริปต์ที่ฉันทำ ปัญหาคือสคริปต์นี้ทำทีละครั้งสิ่งนี้: FILES=(./*.png) for f in "${FILES[@]}" do echo "Processing $f file..." # take action on each file. $f store current file name ./pngout -s0 $f R${f/\.\//} done การประมวลผลครั้งละหนึ่งไฟล์ใช้เวลานาน หลังจากเรียกใช้แอพนี้ฉันเห็นว่าซีพียูเพียง 10% ดังนั้นฉันจึงค้นพบว่าฉันสามารถแบ่งไฟล์เหล่านี้ออกเป็น 4 แบทช์แต่ละแบทช์ในไดเรกทอรีและไฟ 4 จากสี่หน้าต่างเทอร์มินัลสี่กระบวนการสี่ดังนั้นฉันมีสี่อินสแตนซ์ของสคริปต์ของฉันในเวลาเดียวกัน งานใช้เวลา 1/4 ของเวลา ปัญหาที่สองคือฉันเสียเวลาในการแบ่งภาพและแบทช์และคัดลอกสคริปต์ไปยังสี่ไดเรกทอรีเปิด windows terminal 4, bla …

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