ฉันมักจะอัพเกรดการติดตั้ง Ubuntu ผ่านการเชื่อมต่อ ssh บางครั้งการเชื่อมต่อ SSH นี้จะหายไปหรือฉันตั้งใจจะปิดหน้าต่างเทอร์มินัล
เป็นไปได้หรือไม่ที่จะตรวจสอบสถานะการอัพเกรดหลังจากที่ ssh ล็อกอินเข้าสู่คอมพิวเตอร์อีกครั้ง?
ฉันมักจะอัพเกรดการติดตั้ง Ubuntu ผ่านการเชื่อมต่อ ssh บางครั้งการเชื่อมต่อ SSH นี้จะหายไปหรือฉันตั้งใจจะปิดหน้าต่างเทอร์มินัล
เป็นไปได้หรือไม่ที่จะตรวจสอบสถานะการอัพเกรดหลังจากที่ ssh ล็อกอินเข้าสู่คอมพิวเตอร์อีกครั้ง?
คำตอบ:
บันทึกต่อไปนี้เกี่ยวข้องกับการอัพเกรด 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อีกครั้งเพื่อออกจากโหมดเคอร์เซอร์
มีทรัพยากรมากมายบนเน็ตพร้อมใช้งานสำหรับฟังก์ชั่นหน้าจอเพิ่มเติม มันเป็นเครื่องมือมาตรฐานที่ทรงคุณค่าสำหรับการบริหารระบบ
ดูสิ่งนี้ด้วย:
screen -x
- แนบไปกับหน้าจอที่ทำงานอยู่โดยไม่ต้องแยกออกจากคนอื่น
tail -f
คำสั่งและตัวเลือกการตั้งค่าสถานะซึ่งจะช่วยให้ผู้ใช้สามารถสังเกตความคืบหน้าในเวลาจริง (หรือดูว่ามันล้มเหลว) เมื่อ "re- เข้าสู่ระบบ." ฉันรู้ว่ามันเก่าและเป็นที่ยอมรับ แต่ฉันคิดว่าควรเพิ่มหางไว้ในชุดคำสั่งนี้เนื่องจากขาดรายละเอียดนี้คำตอบด้านล่างโดย @TheAnonymousBear นั้นตรงกว่าและตรงประเด็นมากขึ้น @doublerebel
sudo dpkg --configure -a
จะยังคงอัพเกรด apt เมื่อยังคงใช้
นอกเหนือจากคำตอบของ 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
และปัง! ฉันกลับมาในเกมแล้ว
do-release-upgrade
คำสั่งเฉพาะสำหรับ Ubuntu หรือไม่? ฉันไม่เคยต้องการตรวจสอบ Debian ซึ่งฉันใช้เป็นพิเศษเพราะฉันจะเรียกใช้ด้วยตนเองแยกออกแล้วกลับมา และแน่นอนเราใช้sudo apt dist-upgrade
หลังจากเปลี่ยน/etc/apt/sources.list
แทน
ในการดูเอาต์พุตแบบเรียลไทม์จากapt
งานเบื้องหลังให้ใช้:
sudo tail -f /var/log/apt/term.log
tail
) หลังจากสิ่งที่พวกเขาเรียกว่า "เข้าสู่ระบบใหม่"
มีปัญหาเดียวกันหมดการเชื่อมต่อของฉันและกระบวนการ dpkg กำลังรอการป้อนข้อมูล
อาจลองครั้งต่อไป: sudo dpkg --configure -a
"dpkg: error: dpkg frontend is locked by another process"
/var/dpkg/lock
ถ้ามันยังทำงานอยู่ และไม่คำนึงถึงว่าจะไม่ตอบคำถามว่า "ตรวจสอบสถานะการอัปเกรด" และจะทำงานได้เมื่อการอัปเกรดล้มเหลว (และเฉพาะเมื่อการล็อคไม่ทำงาน) ฉันจะไม่แนะนำวิธีการนี้ให้กับทุกคน ด้วยความนับถือ oemb1905