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

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

3
รหัสส่งคืนที่เชื่อถือได้ของกระบวนการพื้นหลัง
สมมติว่าชิ้นส่วนของรหัสทุบตีต่อไปนี้: foo > logfile 2>&1 & foo_pid=$! while ps -p$foo_pid do ping -c 1 localhost done wait $foo_pid if [[ $? == 0 ]] then echo "foo success" fi มีความปลอดภัยหรือไม่ที่จะสมมติว่า$?มีรหัสส่งคืนของfooและไม่ใช่รหัสส่งคืนpingใช่หรือไม่ หากคำตอบของคำถามนั้นคือ: "คุณไม่สามารถสันนิษฐานได้" แล้วฉันจะแก้ไขรหัสชิ้นนี้เพื่อให้แน่ใจว่า$?มีรหัสที่ส่งคืนได้fooอย่างไร

4
จะเกิดอะไรขึ้นถ้าฉันเริ่มงานพื้นหลังมากเกินไป
ฉันต้องทำงานกับอุปกรณ์เครือข่าย 700 ชิ้นโดยใช้สคริปต์ที่คาดไว้ ฉันสามารถทำได้ตามลำดับ แต่จนถึงขณะนี้รันไทม์ประมาณ 24 ชั่วโมง นี่คือสาเหตุส่วนใหญ่เนื่องจากเวลาที่ใช้ในการสร้างการเชื่อมต่อและความล่าช้าในผลลัพธ์จากอุปกรณ์เหล่านี้ (เก่า) ฉันสามารถสร้างการเชื่อมต่อที่สองและให้พวกเขาทำงานแบบขนานได้ดี แต่ฉันจะผลักมันไปได้ไกลแค่ไหน? ฉันไม่คิดว่าฉันสามารถทำทั้งหมด 700 ครั้งได้แน่นอนมีข้อ จำกัด บางอย่าง ของการเชื่อมต่อ telnet VM ของฉันสามารถจัดการได้ ถ้าฉันพยายามเริ่ม 700 ของพวกเขาในการวนรอบบางอย่างเช่นนี้: for node in `ls ~/sagLogs/`; do foo & done กับ CPU 12 CPUs x Intel (R) Xeon (R) CPU E5649 @ 2.53GHz หน่วยความจำ 47.94 GB คำถามของฉันคือ: อินสแตนซ์ทั้งหมด …

1
กระบวนการพื้นหลังถูกประดิษฐ์ขึ้นเมื่อใด
กำลังมองหาทั้งวันที่และการอ้างอิงที่เชื่อถือได้ คาดว่าคำตอบบางครั้งในปี 1960 ข้อมูลนี้เป็นสิ่งจำเป็นสำหรับการเขียนคำขอคุณสมบัติที่มีประสิทธิภาพ

2
anacron ทำงานอย่างไรถ้าไม่ใช่ภูต
ฉันกำลังอ่านเกี่ยวกับความแตกต่างระหว่าง cron และ anacron และฉันรู้ว่า anacron ซึ่งแตกต่างจาก cron ไม่ใช่ daemon ดังนั้นฉันจึงสงสัยว่ามันใช้งานได้จริงอย่างไรถ้าไม่ใช่ภูต

2
รันคำสั่ง bash หลังจากคำสั่งพร้อมกันไหม?
ฉันต้องการเรียกใช้คำสั่งแบบขนาน เมื่อคำสั่งทั้งหมดเหล่านี้เสร็จสิ้นให้เริ่มต้นคำสั่งถัดไป ฉันว่าแนวทางต่อไปนี้จะได้ผล #!/bin/bash command1 & command2 & command3 && command4 แต่มันก็ไม่ได้ ฉันจำเป็นต้องเรียกใช้command4เมื่อคำสั่งสามคำแรกเสร็จสิ้นสมบูรณ์

2
ทำไม SSH ไม่รอกระบวนการพื้นหลัง
ทำไมมันssh -tไม่รอให้งานพื้นหลังเสร็จ? ตัวอย่าง: ssh user@example 'sleep 2 &' ใช้งานได้ตามที่คาดไว้เนื่องจาก ssh กลับมาหลังจาก 2 วินาทีในขณะที่ ssh user@example -t 'sleep 2 &' ไม่รอsleepให้เสร็จและส่งคืนทันที ทุกคนสามารถอธิบายเหตุผลที่อยู่เบื้องหลังสิ่งนี้ได้ไหม มีวิธีssh -tรอกระบวนการพื้นหลังทั้งหมดให้เสร็จก่อนที่จะส่งคืนหรือไม่ กรณีการใช้งานของฉันคือฉันเริ่มต้นสคริปต์ด้วยssh -tและสคริปต์นี้เริ่มงานพื้นหลังต่าง ๆ ที่ควรมีชีวิตอยู่หลังจากสคริปต์หลักเสร็จสิ้น ด้วยssh -tสิ่งนี้เป็นไปไม่ได้จนถึงตอนนี้

1
กระบวนการ / usr / libexec / packagekitd ทำอะไร
กระบวนการนี้ทำให้แบนด์วิดธ์ของฉัน: กระบวนการนี้ทำอะไร? ปลอดภัยที่จะฆ่าหรือไม่ ปลอดภัยที่จะลบแพ็กเกจทั้งหมด (เพื่อป้องกันไม่ให้เริ่มต้นใหม่อีกครั้ง) หรือฉันควรป้องกันไม่ให้ทำงานในพื้นหลังโดยอัตโนมัติอีกครั้ง? ฉันกำลังใช้งาน Fedora 23

1
ทำไมบางโปรแกรมกลับสู่เชลล์ทันทีขณะที่บางโปรแกรมไม่ทำจนกว่าการประมวลผลจะเสร็จสมบูรณ์?
ฉันได้อ่านจากหนังสือระบบปฏิบัติการสมัยใหม่ว่าเมื่อคำสั่งถูกเรียกใช้เชลล์จะสร้างกระบวนการลูกรอจนกระทั่งลูกประมวลผลเสร็จสิ้นแล้วจึงรอคำสั่งอื่นจากผู้ใช้ geditแท้จริงนี่คือกรณีที่หลายโปรแกรมเช่น geditขั้วไม่ได้ใช้คำสั่งจนกว่าฉันจะได้ปิด อย่างไรก็ตามเมื่อฉันเปิดตัวแก้ไขรหัสatomเชลล์จะคืนค่าทันทีพร้อมที่จะยอมรับคำสั่งถัดไปแม้จะมีตัวแก้ไขที่ทำงานอยู่ การปิดเทอร์มินัลไม่ได้ปิดอะตอม นี่หมายความว่าตัวแก้ไขเปิดไม่เป็นกระบวนการลูกหรือไม่? กลไกพื้นฐานที่ทำให้สิ่งนี้เป็นไปได้คืออะไร? วิ่งps au | grep atomให้ <username> 8042 0.0 0.0 15944 2264 pts/1 S+ 00:55 0:00 grep --color=auto atom

3
เชลล์สคริปต์รอคำสั่งพื้นหลัง
ฉันกำลังเขียนสคริปต์ แต่มีบางสิ่งที่ฉันต้องการฉันไม่สามารถหาวิธีที่จะทำ ... ฉันต้องสร้างคำสั่งในพื้นหลัง "command1 &" จากนั้นบางส่วนในสคริปต์ฉันต้องรอให้เสร็จก่อนที่ฉันจะ command2 โดยทั่วไปฉันต้องการสิ่งนี้: หมายเหตุ: แต่ละคำสั่งจะทำงานในไดเรกทอรีเฉพาะ! ในตอนท้ายของ while ในขณะที่ command1 ของฉันสร้าง 4 ไดเร็กตอรี่, ซึ่งแต่ละอันรันโพรเซสเฉพาะ, ดังนั้นจำนวนโพรเซสที่กำลังทำงานอยู่คือ 4 a=1 while [$a -lt 4 ] . command1 #Generates 1 Process a= `export $a +1` done #Wait until the 4 process end and then run the command2 . command2 …

1
กำลังออกจากเครื่องที่รัน“ nohup ./my_script &” =>“ คุณมีงานอยู่” ตกลงเพื่อออก
ว่าฉันทำงานต่อไปนี้ในกล่องระยะไกลกับความคิดในการป้องกันการฆ่างานเมื่อฉันยกเลิกการเชื่อมต่อสถานี nohup ./my_script.sh & เมื่อฉันพยายามออกจากเทอร์มินัลฉันได้รับคำเตือนดังต่อไปนี้: zsh: you have running jobs ฉันเข้าใจว่าไม่เป็นไร เป็นเพียงการบอกฉันว่าฉันมีงาน / กระบวนการทำงานในพื้นหลัง หากฉันยกเลิกการเชื่อมต่อเครื่องงาน / กระบวนการจะยังคงทำงานต่อไปถูกต้องหรือไม่

4
ใช้คำสั่ง nohup หลายคำในพื้นหลัง
มีสองคำสั่ง cmd1 และ cmd2 ในทั้งสอง cmd2 ใช้เวลานานกว่าจะเสร็จสิ้น จำเป็นต้องเรียกใช้ cmd2 และ cmd1 พยายามเรียกใช้งานด้วยวิธีต่อไปนี้: bash$ (nohup ./cmd2>result2 &) && nohup ./cmd1>result1 & หรือ bash$ (nohup ./cmd2>result2 &) ; nohup ./cmd1>result1 & แต่ทั้งสองครั้งที่ฉันเห็น cmd1 ไม่รอให้ cmd2 เสร็จสิ้นและ result1 ก็จะเต็ม วิธีที่จะทำให้ cmd1 ทำงานหลังจาก cmd2 เมื่อทั้งสองควรเป็นกระบวนการ nohup และทำงานในพื้นหลัง?

2
เรียกใช้คำสั่งแบบขนานและรอให้กลุ่มคำสั่งกลุ่มหนึ่งเสร็จสิ้นก่อนเริ่มถัดไป
ฉันมีสคริปต์รวมถึงหลายคำสั่ง ฉันจะจัดกลุ่มคำสั่งให้ทำงานร่วมกันได้อย่างไร (ฉันต้องการสร้างกลุ่มคำสั่งหลายกลุ่มภายในแต่ละกลุ่มคำสั่งควรทำงานแบบขนาน (ในเวลาเดียวกัน) กลุ่มควรทำงานต่อเนื่องกันโดยรอกลุ่มหนึ่งให้เสร็จก่อนเริ่ม กลุ่มถัดไป) ... เช่น #!/bin/bash command #1 command #2 command #3 command #4 command #5 command #6 command #7 command #8 command #9 command #10 ฉันจะรันคำสั่งทุก ๆ 3 คำสั่งเพื่อ gether ได้อย่างไร? ฉันเหนื่อย: #!/bin/bash { command #1 command #2 command #3 } & { command #4 command …

3
ในเชลล์สคริปต์ฉันจะ (1) เริ่มคำสั่งในพื้นหลังได้อย่างไร (2) รอ x วินาที (3) เรียกใช้คำสั่งที่สองขณะที่คำสั่งนั้นกำลังทำงานอยู่
นี่คือสิ่งที่ฉันต้องเกิดขึ้น: เริ่มกระบวนการ A ในพื้นหลัง รอ x วินาที เริ่มกระบวนการ B ในเบื้องหน้า ฉันจะรอให้เกิดขึ้นได้อย่างไร ฉันเห็นว่า 'หลับ' ดูเหมือนว่าจะหยุดทุกอย่างและฉันไม่ต้องการ 'รอ' เพื่อให้กระบวนการ A สิ้นสุดโดยสิ้นเชิง ฉันเคยเห็นลูปเป็นระยะเวลาหนึ่งแล้ว แต่ฉันสงสัยว่ามีบางอย่างที่สะอาดกว่านี้หรือไม่

1
เหตุใด“ su -c <command> &” จึงอนุญาตให้คำสั่งทำงานในพื้นหลังโดยไม่ต้องวางสาย
ฉันช่วยเพื่อนร่วมงานที่กำลังมีปัญหากับกระบวนการพื้นหลังที่กำลังจะตายเป็นระยะ ฉันพบว่าพวกเขาเริ่มกระบวนการพื้นหลังด้วยการเข้าสู่เซิร์ฟเวอร์และดำเนินการ: su - &lt;user&gt; -c '&lt;command&gt;' &amp; "Aha" ฉันอุทาน "ถ้าคุณเริ่มต้นคำสั่งด้วย" &amp; "คำสั่งจะวางสายเมื่อคุณออกจากเทอร์มินัลการควบคุมคุณต้องใช้บางอย่างเช่น nohup เพื่อให้บรรลุสิ่งนี้จริง ๆ แล้วกระบวนการนี้ต้องรองรับการทำงานเป็น daemon, tut tut" เราทดสอบคำสั่งข้างต้นเพื่อแสดงให้เห็นถึงจุดของฉันและ ... มันดูเหมือนจะทำงาน: กระบวนการเริ่มต้นโดยคำสั่งไม่ได้ออกเมื่อเราออกจากสถานีที่วิ่งคำสั่งดังกล่าว commandเป็นสคริปต์ Python ที่กำหนดเองซึ่งเอาต์พุตไปที่ไฟล์ เท่าที่ฉันสามารถบอกได้ไม่มี "daemonize" ที่ชาญฉลาดเหมือนความสามารถในสคริปต์ มันไม่ได้ทำสิ่งใด ๆ ที่จำเป็นในการใช้งานเป็น daemon ที่ระบุไว้ในWikipedia: Daemon (คำนวณ):หน้าสร้าง การรันคำสั่งเช่นนั้นจะทำงานตามที่คาดไว้: &lt;command&gt; &amp; exit ในกรณีข้างต้นกระบวนการพื้นหลังเริ่มต้นโดยคำสั่งออกเมื่อเราออกจากสถานี คำถามของฉันคือ: เกิดอะไรขึ้นเมื่อเราเพิ่ม "su - -c &amp;" ที่ป้องกันไม่ให้กระบวนการออกจากเมื่อเครื่องของเราออก ฉันต้องการที่จะเข้าใจในรายละเอียดเกี่ยวกับสถานีควบคุมอินพุตมาตรฐานและเอาท์พุท …

3
มี daemon ต่อผู้ใช้ไหม
ฉันต้องเรียกใช้กระบวนการพื้นหลังบางอย่างที่มีชีวิตอยู่ตราบใดที่ฉันเข้าสู่ระบบด้วยผู้ใช้บางคน มีบางสิ่งที่เหมือน daemon ต่อผู้ใช้หรือไม่ ฉันรู้เพียง daemons ทั่วโลกที่อยู่จากการเริ่มต้นคอมพิวเตอร์ 'จนกระทั่งปิด (หรือเริ่มต้น / ฆ่าด้วยตนเอง) สำหรับตอนนี้ฉันได้สร้างสคริปต์ที่ตรวจสอบว่ากระบวนการนั้นมีอยู่แล้วและสร้างกระบวนการหากไม่มี สคริปต์นี้จะมีการเรียกใช้แล้วที่มีคำสั่งจากฉันnohup .profileวิธีนี้กระบวนการเปิดตัวเมื่อเริ่มต้นและจะเปิดตัวเพียงครั้งเดียว (แม้จะมีหลายrxvtคำมาและไป) กระนั้นก็ไม่เคยถูกฆ่าหลังจากฉันเข้าสู่ระบบ (ซึ่งไม่ใช่ภัยพิบัติ แต่ก็สะอาดกว่าที่จะยุติกระบวนการ)

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