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

14
วิธีการเรียกใช้ Node.js เป็นกระบวนการพื้นหลังและไม่ตาย?
ฉันเชื่อมต่อกับเซิร์ฟเวอร์ linux ผ่าน SSH ของ putty ฉันพยายามเรียกใช้เป็นกระบวนการพื้นหลังดังนี้: $ node server.js & อย่างไรก็ตามหลังจาก 2.5 ชั่วโมงเทอร์มินัลจะไม่ทำงานและกระบวนการจะหยุดทำงาน มีอยู่แล้วฉันสามารถทำให้กระบวนการยังมีชีวิตอยู่แม้จะมีการยกเลิกการเชื่อมต่อขั้ว? แก้ไข 1 ที่จริงแล้วฉันพยายามnohupแต่ทันทีที่ฉันปิด Terminal Putty SSH หรือถอดปลั๊กอินเทอร์เน็ตกระบวนการเซิร์ฟเวอร์จะหยุดทันที มีอะไรที่ฉันต้องทำใน Putty หรือไม่? แก้ไข 2 (เมื่อ ก.พ. , 2012) มีความเป็นnode.jsโมดูลตลอดไป มันจะรันเซิร์ฟเวอร์ node.js เป็นบริการ daemon

7
จะรับ ID กระบวนการของกระบวนการพื้นหลังได้อย่างไร
ฉันเริ่มกระบวนการพื้นหลังจากเชลล์สคริปต์ของฉันและฉันต้องการที่จะฆ่ากระบวนการนี้เมื่อสคริปต์ของฉันเสร็จสิ้น วิธีรับ PID ของกระบวนการนี้จากเชลล์สคริปต์ของฉัน เท่าที่ฉันเห็นตัวแปร$!มี PID ของสคริปต์ปัจจุบันไม่ใช่กระบวนการพื้นหลัง

20
วิธีป้องกันกระบวนการพื้นหลังไม่ให้หยุดทำงานหลังจากปิดไคลเอ็นต์ SSH ใน Linux
ฉันกำลังทำงานกับเครื่อง Linux ผ่าน SSH (Putty) ฉันต้องออกจากกระบวนการที่ทำงานในตอนกลางคืนดังนั้นฉันคิดว่าฉันสามารถทำได้โดยเริ่มกระบวนการในพื้นหลัง (ด้วยเครื่องหมายแอมเปอร์แซนด์ท้ายคำสั่ง) และเปลี่ยนเส้นทาง stdout ไปยังไฟล์ แปลกใจของฉันที่ไม่ทำงาน ทันทีที่ฉันปิดหน้าต่าง Putty กระบวนการจะหยุดลง ฉันจะป้องกันไม่ให้สิ่งนั้นเกิดขึ้นได้อย่างไร?

14
ฉันจะรับการอัปเดตตำแหน่งพื้นหลังได้ทุก ๆ นาทีในแอปพลิเคชัน iOS ของฉันได้อย่างไร
ฉันกำลังมองหาวิธีรับการอัปเดตตำแหน่งพื้นหลังทุก ๆ n นาทีในแอปพลิเคชัน iOS ของฉัน ฉันใช้ iOS 4.3 และวิธีแก้ปัญหาควรใช้งานกับ iPhone ที่ไม่ได้รับการเจลเบรคได้ ฉันลอง / พิจารณาตัวเลือกต่อไปนี้: CLLocationManager startUpdatingLocation/startMonitoringSignificantLocationChanges: ใช้งานได้ในพื้นหลังตามที่คาดไว้โดยอิงตามคุณสมบัติที่กำหนดค่า แต่ดูเหมือนว่าเป็นไปไม่ได้ที่จะบังคับให้อัปเดตตำแหน่งทุก ๆ นาที NSTimer: ใช้งานได้เมื่อแอพทำงานในเบื้องหน้า แต่ดูเหมือนจะไม่ได้รับการออกแบบมาสำหรับงานพื้นหลัง การแจ้งเตือนในท้องถิ่น: การแจ้งเตือนในท้องถิ่นสามารถกำหนดเวลาได้ทุก n นาที แต่ไม่สามารถเรียกใช้รหัสบางอย่างเพื่อรับตำแหน่งปัจจุบัน (โดยที่ผู้ใช้ไม่จำเป็นต้องเปิดแอปผ่านการแจ้งเตือน) วิธีการนี้ดูเหมือนจะไม่ใช่วิธีการที่สะอาดเนื่องจากไม่ใช่วิธีการแจ้งเตือนที่ควรใช้ UIApplication:beginBackgroundTaskWithExpirationHandler: เท่าที่ฉันเข้าใจสิ่งนี้ควรใช้เพื่อทำงานบางอย่างให้เสร็จในพื้นหลัง (จำกัด เวลาด้วย) เมื่อแอปถูกย้ายไปที่พื้นหลังแทนที่จะใช้กระบวนการพื้นหลังที่ "ทำงานนาน" ฉันจะใช้การอัปเดตตำแหน่งพื้นหลังปกติเหล่านี้ได้อย่างไร

8
วิธีเรียกใช้คำสั่งในพื้นหลังและไม่ได้รับผลลัพธ์
ฉันเขียนสองเชลล์สคริปต์a.shและb.sh. ในa.shและb.shฉันมีอนันต์สำหรับลูปและพวกเขาพิมพ์เอาต์พุตบางส่วนไปยังเทอร์มินัล ฉันต้องการเขียนสคริปต์อื่นที่เรียกใช้ทั้งสองa.shและb.shแต่ฉันต้องการให้ผู้ใช้กลับมาควบคุมเทอร์มินัลทันทีแทนที่จะให้สคริปต์ทำงานไม่สิ้นสุดและฉันต้องการซ่อนเอาต์พุตในเทอร์มินัล

1
ทำไมคอมไพล์ถึงบอกฉันว่า "บรรจุที่เก็บโดยอัตโนมัติในพื้นหลังเพื่อประสิทธิภาพสูงสุด"
หมายเหตุ : ฉันไม่คิดว่านี่เป็นคำถามที่ซ้ำกันซึ่งกำลังพูดถึงแพ็คที่ไม่ใช่พื้นหลังซึ่งแฮงค์คอมไพล์ด้วยข้อความแสดงข้อผิดพลาดที่แตกต่างกันเล็กน้อย ในที่เก็บ git ของฉันทุกครั้งที่ฉันเรียกใช้ (เช่น) git fetchgit จะพิมพ์: Auto packing the repository in background for optimum performance. See "git help gc" for manual housekeeping. ดูเหมือนว่าจะพิมพ์สิ่งนี้ทุกครั้งถ้าฉันทำgit fetchซ้ำ ๆ แม้ว่าจะไม่มีการเปลี่ยนแปลงและไม่มีอะไรgit fetchให้ทำ สิ่งนี้ไม่สมเหตุสมผลกับฉันสักเท่าไหร่ นอกจากนี้ยังดูเหมือนว่าจะเกิดขึ้นกับการดำเนินงานของเครือข่ายอื่น ๆ เช่นและgit pushgit pull คำสั่งจะกลับไปที่พรอมต์ทันทีโดยไม่มีเอาต์พุตเพิ่มเติมและฉันไม่พบกระบวนการคอมไพล์ใด ๆ ที่ทำงานบนเครื่องของฉัน ดูเหมือนว่าจะเกิดขึ้นเฉพาะกับที่เก็บนี้และในเครื่องนี้เท่านั้น git config -l | grep gcไม่ส่งคืนอะไรเลย ฉันจะทำอย่างไรเพื่อวินิจฉัยหรือแก้ไขปัญหานี้ $ git …

6
กระบวนการเบื้องหลังใน Node.js
aproach ที่ดีในการจัดการกระบวนการเบื้องหลังในแอปพลิเคชัน NodeJS คืออะไร? สถานการณ์ : หลังจากที่ผู้ใช้โพสต์บางอย่างไปยังแอปฉันต้องการบีบอัดข้อมูลขอข้อมูลเพิ่มเติมจากแหล่งข้อมูลภายนอก ฯลฯ ทั้งหมดนี้ค่อนข้างใช้เวลานานดังนั้นฉันจึงต้องการให้มันออกจากลูป req / res วิธีที่ดีที่สุดคือมีคิวงานที่คุณสามารถถ่ายโอนงานได้อย่างรวดเร็วและ daemon หรือนักวิ่งงานจะใช้งานที่เก่าแก่ที่สุดและประมวลผลเสมอ ใน RoR ฉันจะทำบางอย่างเช่น Delayed Job Node ที่เทียบเท่ากับ API นี้คืออะไร

5
จะรันงานพื้นหลังในเว็บแอปพลิเคชันที่ใช้ servlet ได้อย่างไร
ฉันใช้ Java และฉันต้องการให้ servlet ทำงานอย่างต่อเนื่องในแอปพลิเคชันของฉัน แต่ฉันไม่เข้าใจวิธีการทำ servlet ของฉันมีวิธีการที่ให้จำนวนผู้ใช้จากฐานข้อมูลในแต่ละวันรวมทั้งจำนวนผู้ใช้ทั้งหมดจากฐานข้อมูลทั้งหมด ดังนั้นฉันต้องการให้ servlet ทำงานอย่างต่อเนื่องเพื่อสิ่งนั้น

10
ฉันสามารถใช้เธรดเพื่อทำงานระยะยาวบน IIS ได้หรือไม่
ในแอปพลิเคชัน ASP.Net ผู้ใช้คลิกปุ่มบนเว็บเพจจากนั้นจะสร้างอินสแตนซ์อ็อบเจ็กต์บนเซิร์ฟเวอร์ผ่านตัวจัดการเหตุการณ์และเรียกใช้เมธอดบนอ็อบเจ็กต์ วิธีนี้ไปยังระบบภายนอกเพื่อทำสิ่งต่างๆและอาจใช้เวลาสักครู่ ดังนั้นสิ่งที่ฉันต้องการจะทำคือเรียกใช้การเรียกเมธอดนั้นในเธรดอื่นเพื่อให้ฉันสามารถคืนการควบคุมให้กับผู้ใช้ด้วยข้อความ "ส่งคำขอของคุณแล้ว" ฉันมีความสุขพอสมควรที่จะทำสิ่งนี้เป็นไฟและลืมแม้ว่ามันจะดีกว่านี้หากผู้ใช้สามารถสำรวจวัตถุเพื่อดูสถานะได้ สิ่งที่ฉันไม่รู้คือถ้า IIS อนุญาตให้เธรดของฉันทำงานต่อไปแม้ว่าเซสชันผู้ใช้จะหมดอายุ ลองนึกภาพผู้ใช้เริ่มต้นเหตุการณ์และเราสร้างอินสแตนซ์อ็อบเจ็กต์บนเซิร์ฟเวอร์และเริ่มเมธอดในเธรดใหม่ ผู้ใช้พอใจกับข้อความ "ส่งคำขอของคุณแล้ว" และปิดเบราว์เซอร์ของตน ในที่สุดเซสชันผู้ใช้นี้จะหมดเวลาใน IIS แต่เธรดอาจยังคงทำงานอยู่และทำงานได้ IIS จะอนุญาตให้เธรดทำงานต่อไปหรือจะฆ่ามันและกำจัดอ็อบเจ็กต์เมื่อเซสชันผู้ใช้หมดอายุ? แก้ไข: จากคำตอบและความคิดเห็นฉันเข้าใจว่าวิธีที่ดีที่สุดในการดำเนินการนี้คือการย้ายการประมวลผลที่ใช้เวลานานออกนอก IIS นอกเหนือจากสิ่งอื่น ๆ แล้วสิ่งนี้เกี่ยวข้องกับปัญหาการรีไซเคิลโดเมนแอป ในทางปฏิบัติฉันต้องเอาเวอร์ชัน 1 ออกจากพื้นในเวลาที่ จำกัด และต้องทำงานในเฟรมเวิร์กที่มีอยู่ดังนั้นฉันต้องการหลีกเลี่ยงเลเยอร์บริการดังนั้นความปรารถนาที่จะปิดเธรดภายใน IIS ในทางปฏิบัติ "วิ่งยาว" ที่นี่จะใช้เวลาเพียงไม่กี่นาทีและการทำงานพร้อมกันบนเว็บไซต์จะต่ำดังนั้นจึงไม่เป็นไร แต่รุ่นถัดไปจะต้องแยกเป็นชั้นบริการแยกต่างหาก

5
Guzzle การขว้างปา RejectionException แทน ConnectionException บนกระบวนการพื้นหลัง
ฉันมีงานที่ทำงานหลายคนที่มีการร้องขอ HTTP โดยใช้ Guzzle อย่างไรก็ตามบล็อก try-catch ภายในงานนี้ดูเหมือนจะไม่ได้รับGuzzleHttp\Exception\RequestExceptionเมื่อฉันกำลังเรียกใช้งานเหล่านี้ในกระบวนการพื้นหลัง กระบวนการกำลังทำงานอยู่php artisan queue:workซึ่งเป็นผู้ปฏิบัติงานระบบคิว Laravel ที่ตรวจสอบคิวและหยิบงาน แต่ข้อยกเว้นที่ถูกโยนเป็นหนึ่งGuzzleHttp\Promise\RejectionExceptionในข้อความ: คำสัญญาถูกปฏิเสธด้วยเหตุผล: ข้อผิดพลาด cURL 28: หมดเวลาการทำงานหลังจาก 30001 มิลลิวินาทีพร้อมรับ 0 ไบต์ (ดู https://curl.haxx.se/libcurl/c/libcurl-errors.html ) นี่คือการปลอมตัวGuzzleHttp\Exception\ConnectException(ดูhttps://github.com/guzzle/promises/blob/master/src/RejectionException.php#L22 ) เพราะถ้าฉันทำงานที่คล้ายกันในกระบวนการ PHP ปกติที่เรียกใช้โดยไปที่ URL ฉันได้รับข้อความConnectExceptionตามที่ตั้งใจไว้: ข้อผิดพลาด cURL 28: การดำเนินการหมดเวลาหลังจาก 100 มิลลิวินาทีโดยได้รับ 0 จาก 0 ไบต์ (ดูที่ https://curl.haxx.se/libcurl/c/libcurl-errors.html ) โค้ดตัวอย่างที่จะทำให้หมดเวลานี้: try { $c = …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.