จะเกิดอะไรขึ้นถ้าฉันปล่อยให้แอพทำงานโดยไม่ตั้งใจและคลิก“ ติดตั้งทันที” ใน Software Updater?


22

Software Updater update-managerจะปรากฏขึ้นและแสดงการปรับปรุงความปลอดภัยสำหรับ Firefox เช่น ฉันจะคลิกที่ "ติดตั้งทันที" เพื่อดำเนินการต่อ

อย่างไรก็ตามจะเกิดอะไรขึ้นถ้าฉันยังมี Firefox ที่ใช้งานอยู่เมื่อฉันทำสิ่งนี้? มันจะยังคงอัปเดต Firefox หรือไม่ การอัปเดตจะถูกข้ามไปและจะปรากฏขึ้นในครั้งต่อไปหรือไม่ การอัปเดตจะบังคับให้ Firefox ปิดและอาจล้มเหลวหรือไม่ จะอัปเดตซอฟต์แวร์บางส่วนเท่านั้นและอาจทำให้การติดตั้ง Firefox ของฉันหยุดชะงักหรือไม่


10
ไม่มีอะไรเกิดขึ้น Firefox เปิดใน RAM บางครั้งตรวจพบการอัปเดตและแจ้งให้คุณรีสตาร์ทเบราว์เซอร์ แต่บางทีคนที่มีความเข้าใจและการอ้างอิงมากขึ้นอาจให้คำตอบที่ดีกว่า
pLumo

3
ฉันไม่รู้เฉพาะเกี่ยวกับ Ubuntu แต่ใน Arch (และฉันไม่คิดว่ามันแตกต่างกันทั้งหมดในกรณีนี้), อัปเดต firefox ใต้ฝ่าเท้าในขณะที่ทำงานดูเหมือนว่าจะทำงาน แต่แล้วสิ่งแรกที่คุณทำใน Firefox เกิดปัญหา สิ่ง. ฉันมักจะกล่าวเสมอว่าธรรมชาติที่ซับซ้อนของเบราว์เซอร์สมัยใหม่โหลดรันไทม์ทุกชนิด แต่ Firefox เป็นสิ่งเดียวที่เกิดขึ้นกับฉัน
tomsmeding

2
Firefox จะหยุดในครั้งต่อไปที่คุณเปิดแท็บและบอกคุณว่าต้องรีสตาร์ท แอพอื่นอาจทำสิ่งที่แตกต่าง
Michael Hampton

คำตอบ:


40

คุณต้องคิดถึง Windows Unix ทำถูกแล้วจากนั้น Windows ก็เข้ามาและพัฒนาวิธีการทำสิ่งต่าง ๆ ที่ผิด

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

ด้วยระบบปฏิบัติการยูนิกซ์เมื่อไฟล์ได้รับการเปิดโดยกระบวนการที่ว่าไฟล์เดียวกันมักจะสามารถใช้ได้กับกระบวนการแม้ว่าไฟล์ต้นฉบับถูกลบออกจากระบบแฟ้ม

หลังจากการอัปเดตระบบไฟล์จะมีไฟล์เวอร์ชันอื่นและกระบวนการทั้งหมดที่เริ่มต้นหลังจากการอัพเดตจะใช้ไฟล์ใหม่นั้น แต่แตกต่างจาก Windows กระบวนการ Unix เก่าทั้งหมดจะยังคงใช้ไฟล์ต้นฉบับที่พวกเขาเริ่มต้นด้วย แม้ว่าจะไม่สามารถเข้าถึงได้ผ่านระบบไฟล์อีกต่อไปไฟล์เหล่านั้นจะยังคงอยู่ตราบใดที่มีการใช้งาน ในที่สุดเมื่อไม่มีกระบวนการที่ใช้ไฟล์ไฟล์รุ่นเก่าจะถูกลบในที่สุด

แน่นอนคุณอาจตัดสินใจที่จะรีสตาร์ท Firefox (หรือกระบวนการอื่น ๆ ) หากคุณต้องการได้รับประโยชน์จากการอัปเดตทันที ทางเลือกเป็นของคุณ


ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
Thomas Ward

18

โดยทั่วไปแล้วการอัพเดตโปรแกรมในขณะที่เปิดอยู่นั้นจะไม่มีปัญหาตามที่ผู้ตอบคำถามคนอื่น ๆ ได้อธิบายไว้กระบวนการที่ทำงานอยู่จะยังคงสามารถทำงานต่อไปแม้ว่าจะลบโปรแกรมที่ทำงานได้แล้วก็ตาม

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

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


1
นอกจากนี้ด้วยแอปพลิเคชันที่ซับซ้อนเช่น Firefox ทุกสิ่งที่อาจจำเป็นต้องจัดการกับสิ่งที่พบไม่ได้โหลดลงในหน่วยความจำเมื่อโปรแกรมเปิดตัว ดังนั้นส่วนประกอบที่โหลดได้ตามต้องการอาจสร้างความไม่ตรงกันของเวอร์ชัน ฉันมักจะ Firefox ค้างเมื่ออัพเดทในขณะที่มันกำลังทำงานอยู่
fixer1234

มันไม่ได้เป็นเพียงเบราว์เซอร์ที่มีโมเดลหลายกระบวนการ แต่สถานการณ์ใด ๆ ที่ใช้ไลบรารีสำหรับ IPC และห้องสมุดสามารถโหลดก่อนและหลังการอัพเดท - แม้ว่าเบราว์เซอร์อาจเป็นตัวอย่างที่เป็นที่รู้จักมากที่สุดในทุกวันนี้ (COM interop บน Windows ค่อนข้างแพร่หลายหมายถึงอีกหลายโปรแกรมที่สามารถทำสิ่งนี้โดยปริยาย ฉันไม่สามารถจินตนาการได้ว่า Chrome หลีกเลี่ยงปัญหานี้อย่างสมบูรณ์ด้วยกระบวนการ zygote - มันโหลดไลบรารีทุก ๆ รายการที่อาจต้องใช้เมื่อเริ่มต้นหรือไม่?
Voo

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

@Ray Fun fact: dlopen ใช้ชื่อไฟล์ แต่ไม่ใช่ file descriptors ดังนั้นมันอาจจะไม่ง่ายอย่างที่คุณคิดว่ามันจะเป็น (คุณสามารถเล่นกับ / proc ได้ แต่ปัญหาที่ใหญ่กว่าก็คือการกำจัดกรณีการใช้งานส่วนใหญ่ที่ใช้การโหลดแบบไดนามิกเริ่มต้นด้วย
Voo

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