จะตรวจสอบสถานะ“ apt-get upgrade” หลังจากการเชื่อมต่อ ssh หายไปได้อย่างไร?


16

ฉันมักจะอัพเกรดการติดตั้ง Ubuntu ผ่านการเชื่อมต่อ ssh บางครั้งการเชื่อมต่อ SSH นี้จะหายไปหรือฉันตั้งใจจะปิดหน้าต่างเทอร์มินัล

เป็นไปได้หรือไม่ที่จะตรวจสอบสถานะการอัพเกรดหลังจากที่ ssh ล็อกอินเข้าสู่คอมพิวเตอร์อีกครั้ง?

คำตอบ:


33

บันทึกต่อไปนี้เกี่ยวข้องกับการอัพเกรด apt:

/var/log/apt/history.log
/var/log/apt/term.log
/var/log/dpkg.log

หากคำสั่งเคยdist-upgradeมีการบันทึกเพิ่มเติมใน:

/var/log/dist-upgrade

FYI, โดยปกติจะปลอดภัยเพียงแค่เรียกใช้การอัปเกรดอีกครั้งและ apt จะดำเนินการต่อเมื่อมีการหยุดทำงานเนื่องจากกระบวนการขาดการเชื่อมต่อ อย่างไรก็ตาม ...

Primer Screen GNU:

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

ติดตั้งหน้าจอ:

sudo apt-get install screen

เรียกใช้หน้าจอ:

screen

หลังจากรันหน้าจอคุณจะได้รับพรอมต์บรรทัดคำสั่งเหมือนกับเทอร์มินัลปกติ จากนั้นคุณสามารถเรียกใช้การอัพเกรดจากหน้าจอภายใน:

sudo apt-get upgrade

เพื่อทำความเข้าใจว่างานนี้ "ถอด" หน้าจอโดยการกดCtrl + A, D สิ่งนี้จะนำคุณกลับไปที่เทอร์มินัลที่ไม่ใช่หน้าจอ คุณสามารถดูรายการหน้าจอที่กำลังรันด้วย

screen -list

หากคุณมีหน้าจอเดียวที่ทำงานอยู่คุณสามารถติดตั้งใหม่ด้วย:

screen -raAd

(หน้าจอนี้จะแยกออกในกรณีที่มีการเชื่อมต่อที่อื่นและติดตั้งใหม่กับเทอร์มินัลที่คุณกำลังใช้งานอยู่)

โดยทั่วไปแล้วคุณไม่สามารถเลื่อน 'ปกติ' จากภายในหน้าจอโดยไม่ต้องตั้งค่าเพิ่มเติม หากต้องการเลื่อนภายในหน้าจอให้กดCtrl-Escเพื่อเข้าสู่โหมดเคอร์เซอร์ จากนั้นคุณสามารถเลื่อนขึ้นและลงกับJและK กดEscอีกครั้งเพื่อออกจากโหมดเคอร์เซอร์

มีทรัพยากรมากมายบนเน็ตพร้อมใช้งานสำหรับฟังก์ชั่นหน้าจอเพิ่มเติม มันเป็นเครื่องมือมาตรฐานที่ทรงคุณค่าสำหรับการบริหารระบบ

ดูสิ่งนี้ด้วย:


2
+1 สำหรับตอบคำถามจริงและพูดถึงหน้าจอจริง ๆ :)
Nanne

2
นอกจากนี้screen -x- แนบไปกับหน้าจอที่ทำงานอยู่โดยไม่ต้องแยกออกจากคนอื่น
เอสเอฟ

สิ่งนี้มีประโยชน์ แต่รวมถึงการป้องกันเพิ่มเติมจากคำตอบ นอกจากนี้ยังมีการอ้างถึงบันทึกที่ถูกต้องเพื่อดู แต่ผู้ใช้มือใหม่อาจไม่คุ้นเคยกับtail -fคำสั่งและตัวเลือกการตั้งค่าสถานะซึ่งจะช่วยให้ผู้ใช้สามารถสังเกตความคืบหน้าในเวลาจริง (หรือดูว่ามันล้มเหลว) เมื่อ "re- เข้าสู่ระบบ." ฉันรู้ว่ามันเก่าและเป็นที่ยอมรับ แต่ฉันคิดว่าควรเพิ่มหางไว้ในชุดคำสั่งนี้เนื่องจากขาดรายละเอียดนี้คำตอบด้านล่างโดย @TheAnonymousBear นั้นตรงกว่าและตรงประเด็นมากขึ้น @doublerebel
oemb1905

มักsudo dpkg --configure -aจะยังคงอัพเกรด apt เมื่อยังคงใช้
อันตราย 89

10

นอกเหนือจากคำตอบของ doublerebel แล้วฉันสังเกตเห็นทางเลือกอื่นในวันนี้

เมื่อคืนฉันเข้านอนหลังจากเริ่มอัพเกรด SSH ฉันลืมที่จะเริ่มต้นอย่างโง่เขลาscreenและสูญเสียเซสชั่น SSH ของฉันในชั่วข้ามคืน

ฉันเพิ่งจะเริ่มค้นคว้าrettyเมื่อฉันสังเกตเห็นว่าrootเริ่มscreenเซสชันแล้ว

me@GAMMA:~$ ps aux | grep -E 'release|upgrade|apt'
root      6208  0.0  0.0  29140  1628 ?        Ss   01:57   0:05 SCREEN -e \0\0 -L -c screenrc -S ubuntu-release-upgrade-screen-window /tmp/ubuntu-release-upgrader-1h6_g4/raring --mode=server --frontend=DistUpgradeViewText
root      6209  0.2  5.6 287428 93144 pts/2    Ss+  01:57   3:13 /usr/bin/python /tmp/ubuntu-release-upgrader-1h6_g4/raring --mode=server --frontend=DistUpgradeViewText
root      6239  0.0  0.0  50052  1184 ?        Ss   01:58   0:00 /usr/sbin/sshd -o PidFile=/var/run/release-upgrader-sshd.pid -p 1022
root      7306  0.0  4.6 287432 77284 pts/2    S+   02:43   0:08 /usr/bin/python /tmp/ubuntu-release-upgrader-1h6_g4/raring --mode=server --frontend=DistUpgradeViewText
me       26829  0.0  0.0   9440   956 pts/5    S+   22:18   0:00 grep --color=auto -E release|upgrade|apt

ดังนั้นฉันจึงแสดงrootหน้าจอของและติดไว้:

me@GAMMA:~$ sudo screen -list
There is a screen on:
        6208.ubuntu-release-upgrade-screen-window       (12/11/2013 01:57:58 AM)        (Detached)
1 Socket in /var/run/screen/S-root.
me@GAMMA:~$ sudo screen -x -r

และปัง! ฉันกลับมาในเกมแล้ว


ฉันคิดว่าคุณลืมที่จะเริ่มหน้าจอ หน้าจอทำงานอย่างไรถ้าคุณ "ลืมที่จะเริ่มต้นในหน้าจอ"
oemb1905

1
@ oemb1905 เนื่องจาก Ubuntu เริ่มต้นหนึ่งสำหรับคุณภายใต้ข้อสันนิษฐานว่าคุณจะลืม :)
Huckle

ที่น่าสนใจนี่คือdo-release-upgradeคำสั่งเฉพาะสำหรับ Ubuntu หรือไม่? ฉันไม่เคยต้องการตรวจสอบ Debian ซึ่งฉันใช้เป็นพิเศษเพราะฉันจะเรียกใช้ด้วยตนเองแยกออกแล้วกลับมา และแน่นอนเราใช้sudo apt dist-upgradeหลังจากเปลี่ยน/etc/apt/sources.listแทน
oemb1905

ฉันพบว่ามันใช่นี่เป็นอูบุนตูโดยเฉพาะดังนั้นผู้คนที่เป็นเดเบียนบริสุทธิ์อย่างฉันที่คิดว่าการแก้ไข Poach จาก AskUbuntu นั้นไม่น่าจะเกิดขึ้นในระบบของพวกเขา กระทู้ต้นฉบับในหัวข้อนี้: serverfault.com/questions/387547/ …
oemb1905

มันรู้ได้อย่างไรว่าคุณจะติดตั้งหน้าจอ?
Nacht - Reinstate Monica

4

ในการดูเอาต์พุตแบบเรียลไทม์จากaptงานเบื้องหลังให้ใช้:

sudo tail -f /var/log/apt/term.log

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

0

มีปัญหาเดียวกันหมดการเชื่อมต่อของฉันและกระบวนการ dpkg กำลังรอการป้อนข้อมูล

อาจลองครั้งต่อไป: sudo dpkg --configure -a


1
เมื่อฉันลองสิ่งนี้สิ่งที่ฉันได้รับคือ"dpkg: error: dpkg frontend is locked by another process"
CivMeierFan

ฉันทำ grep บริบทเพื่อดูว่าโชคดีที่มันเป็น subprocess ที่สร้างข้อความโต้ตอบรอการป้อนข้อมูลดังนั้นฉันสามารถฆ่ามันโดยไม่ฆ่ากระบวนการอัพเกรด apt ทั้งหมด
CivMeierFan

วิธีการนี้จะไม่สนใจการตรวจสอบว่ากระบวนการ dpkg ยังคงทำงานอยู่ในระบบหรือไม่ ยิ่งไปกว่านั้นถ้ามันทำงานอยู่นี่อาจเป็นอันตรายที่สุดหรือเลวร้ายที่สุดเพราะ dpkg จะล็อคมันไว้/var/dpkg/lockถ้ามันยังทำงานอยู่ และไม่คำนึงถึงว่าจะไม่ตอบคำถามว่า "ตรวจสอบสถานะการอัปเกรด" และจะทำงานได้เมื่อการอัปเกรดล้มเหลว (และเฉพาะเมื่อการล็อคไม่ทำงาน) ฉันจะไม่แนะนำวิธีการนี้ให้กับทุกคน ด้วยความนับถือ oemb1905
oemb1905
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.