سؤال كيف يمكنني أن أقول ، من سطر الأوامر ، ما إذا كان الجهاز يتطلب إعادة تشغيل الكمبيوتر؟


عند تثبيت تحديثات معينة (مثل نواة جديدة) في Ubuntu Desktop ، ستحصل على إشارة إلى أن إعادة التشغيل مطلوبة (في Lucid ، يتحول رمز الخروج إلى اللون الأحمر).

كيف يمكنني التحقق ، من سطر الأوامر ، ما إذا كان Ubuntu الخادم يتطلب إعادة تشغيل؟

يمكنني grep من أجل "إعادة تشغيل النظام المطلوبة" في /etc/motd، لكني أرغب في حل أكثر أناقة. أيضًا ، أريد حلًا يعمل في الإصدارات الأقدم ، على سبيل المثال ، هاردي (8.04 LTS).


219
2017-07-28 21:49


الأصل


إذا كنت تقوم بصيانة الخادم ، فستطور قريبًا أيضًا حالة استشعار أو لا يتطلب التحديث إعادة التشغيل. لا تحتاج معظم التحديثات إلى إعادة التشغيل أو إعادة تشغيل الخدمة فقط (يجب أن تقوم بذلك تلقائياً). - eXlin


الأجوبة:


يمكنك ببساطة معرفة ما إذا كان الملف /var/run/reboot-required موجود أم لا.

على سبيل المثال ، قد يخبرك أي من هذه "بعدم وجود ملف من هذا القبيل" أو "لم يتم العثور على الملف" إذا لم تكن بحاجة إلى إعادة التشغيل ، وإلا (إذا احتجت إلى إعادة التشغيل) فسيتواجد الملف وستعرض هذه الأوامر معلومات حول الملف:

file /var/run/reboot-required
stat /var/run/reboot-required
ls /var/run/reboot-required

في النص البرمجي bash ، يمكنك استخدام:

#!/bin/bash
if [ -f /var/run/reboot-required ]; then
  echo 'reboot required'
fi

257
2017-07-28 22:02



هذا يعمل ، ويعمل على هاردي أيضا. (لا يعمل على Dapper - 6.06 - التي لا يزال لديّ جهاز واحد. صعبة.) بالمناسبة ، يتم إنشاء ملف / var / run / reboot-required بواسطة / usr / share / update-notifier / notify-reboot - يتم استدعاؤها والتي يتم استدعاؤها من البرامج النصية الخاصة بصيانة الحزم المختلفة. - Marius Gedminas
ستعمل على Dapper أيضًا إذا قمت بتثبيت حزمة المُنبِئ المُحدّث ، باستثناء أنها تريد سحب قيمة جنوم 120 ميجابايت إلى خادمي القديم. - Marius Gedminas
تثبيت أفضل لمعرف التحديث المشترك ، لا يعتمد على أي من عناصر واجهة المستخدم الرسومية (ولكنه غير موجود لـ Dapper). - Marius Gedminas
لم يتم تثبيت FWIW ، التحديث - notifier-common على ملقم Lucid بشكل افتراضي. - Marius Gedminas
شكر! والملف /var/run/reboot-required.pkgs سوف قائمة الحزم التي تتطلب إعادة التشغيل. - nealmcb


في الحزمة debian-goodies هو أمر باسم checkrestart وهو أمر مفيد للغاية. يمكن أن يساعدك الإخراج على تجنب إعادة التشغيل الكامل.


39
2017-09-09 14:51



كيف يمكن أن يجعلني أتجنب إعادة التشغيل الكامل؟ - Oxwivi
يخبرك أن التطبيقات التي تم تشغيلها قامت بتحميل مكتبات مشتركة تمت ترقيتها أثناء تشغيل التطبيق. ثم أعد تشغيل التطبيقات والخدمات يدويًا وتجنب إعادة التشغيل الكامل. لا يساعد مع ترقيات النواة ، وإن كان. - aquaherd
هذا يجب أن يكون الجواب الأعلى. مفيد جدا. حصل OpenSUSE على أداة مضمنة (ويساعدك أيضًا في كيفية تشغيلها). يذهب شامة أوبونتو فقط "إعادة تشغيل ، إعادة تشغيل". على سبيل المثال ، احتاج colord إلى إعادة تشغيل هنا. ومن ثم ، لا حاجة لإعادة تشغيل. - Shiki
aquaherd قد يكون من المفيد جداً التعليق على ذلك في إجابتك؟ - Duncan Jones


عادة إذا كان الملف

/var/run/reboot-required 

موجود يجب عليك إعادة تشغيل الكمبيوتر. يمكنك معرفة ما إذا كان هذا الملف موجودًا باستخدام هذا الأمر البسيط في gnome-terminal.

ls /var/run/reboot-required

32
2017-07-28 21:59



يبدو أن هذا الملف لم يتم إنشاؤه بعد من أداة تحديث الإشعار الشائعة المستخدمة في إنشائه. - Scott


بالإضافة إلى الطرق الأكثر مباشرة التي كتبها آخرون هناك إشارة مفيدة إذا كنت تستخدم byobu - مجموعة من النصوص لجعل شاشة جنو أكثر ملاءمة للمستخدمين. فإنه يعرض مجموعة من المعلومات في أسفل الشاشة ، والتي يمكن أن تشمل ما إذا كان مطلوب إعادة التشغيل - جنبا إلى جنب مع ما إذا كانت التحديثات متوفرة ، والوقت ، والجهوزية ، والذاكرة المستخدمة ...

في لقطة الشاشة هذه يمكنك أن ترى من 199! على الخط السفلي مع خلفية حمراء أن هناك تحديثات 199 المتاحة ، و ! يعني أن بعض التحديثات الأمنية. تحدد القائمة الموجودة في المقدمة أي إشعارات الحالة التي ينبغي عرضها.

إذا كانت إعادة التشغيل مطلوبة ، فسيتم الإشارة إلى ذلك بواسطة الرمز (R) عرض في الشريط السفلي بنص أبيض على خلفية زرقاء. يمكن قراءة المزيد من التفاصيل والمؤشرات الأخرى في صفحة byobu man.

byobu screenshot


17
2017-07-29 17:59





ال /etc/motd ملف يحصل على معلومات حول ما إذا كان مطلوب من إعادة تشغيل من /var/run/reboot-required ملف.

يمكنك التحقق من محتوى هذا الملف في المحطة باستخدام cat /etc/motd أمر


9
2017-07-28 21:53



التحديث المشترك-المعرف يستخدم لإنشاء هذا ولكن ليس بعد الآن - Scott


أضفت ما يلي إلى ملفي .bash-aliases:

alias rr='if [ -f /var/run/reboot-required ]; then echo "reboot required"; else echo "No reboot needed"; fi'

يبدو أبسط من تثبيت حزمة لهذه المهمة البسيطة نسبيا. ثم أنا فقط تشغيل:

you@somewhere:~$ rr
No reboot needed
you@somewhere:~$ 

6
2017-12-16 13:22





إذا كان لديك حزم إعادة التمهيد أو التحديث - notifier-common مثبتة ، فإنك تحصل على الملفات / var / run / reboot-required و /var/run/reboot-required.pkgs

إعادة تشغيل منبه هو الأحدث في أوبونتو Wily و Xenial. امتداد ديبيان ، ولكن في جيسي- backports

التحديث المخطر شائع أقدم ، في جميع إصدارات Ubuntu بما في ذلك Xenial وديبيان وايزي. ليس في Debian Stretch أو Jessie.

(هناك بعض الخلفية لحزمة إعادة التمهيد - notifier في https://feeding.cloud.geek.nz/posts/introducing-reboot-notifier/  )

إذا لم يكن لديك هذه الحزم مثبتة ، فيمكنك مقارنة إصدار حزمة linux المثبتة ، مع تشغيل الإصدار:

tim@tramp:~$ dpkg -l linux-image-*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                              Version               Architecture          Description
+++-=================================-=====================-=====================-=======================================================================
ii  linux-image-3.16.0-4-amd64        3.16.7-ckt20-1+deb8u4 amd64                 Linux 3.16 for 64-bit PCs
ii  linux-image-amd64                 3.16+63               amd64                 Linux for 64-bit PCs (meta-package)
tim@tramp:~$ more /proc/version
Linux version 3.16.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian <b>3.16.7-ckt20-1+deb8u3</b> (2016-01-17)

يمكنك أن ترى هنا أن أحدث kernel مثبت هو 3.16.7-ckt20-1 + deb8u4 ولكن تشغيل kernel هو 3.16.7-ckt20-1 + deb8u3. لذلك يحتاج هذا النظام إلى إعادة تشغيل. و u4 مقابل U3 الحق في النهاية.

قد تحتاج إلى تمرير المربع أعلاه. في النسخة / proc / version ، يكون الإصدار بالقرب من نهاية السطر الذي يهم.

يعتبر تغيير رمز الإصدار الثانوي للغاية أمرًا نموذجيًا في تحديث kernel الخاص بأمان Debian.

needrestart

خيار آخر هو تثبيت needrestart صفقة.

sudo apt-get install needrestart
sudo needrestart -k

يبدو أن العمل حتى إذا تم تركيب needrestart بعد ترقية النواة.


5
2018-03-06 21:48



كيف ترتبط فقرتك الأولى بإصدارات Ubuntu؟ - muru
نقطة جيدة. شكر. قضيت وقتًا طويلاً في الاختبار وحاولت العبوات التي فاتني بها. لقد قمت بتحريرها لجعل أوضح وتشمل معلومات حزمة أوبونتو. - Tim Bray
وبالعودة إلى 8.04 ، بعد التحديث الذي تطلب إعادة التشغيل ، سيتحول الترس إلى اللون الأحمر. كيف يمكنني استعادة هذا السلوك؟ - PenguinCSC
أوبونتو 14.04 ، أحصل على dpkg-query: no packages found matching linux-image-* - the_nuts
Unknown option: k في أوبونتو 14.04. - Cees Timmerman


لا إجابة على السؤال ، ولكن هناك تحذير بشأن العديد من الردود: /var/run/reboot-required هو ليس مصدر موثوق به أم لا هو مطلوب بالفعل إعادة التشغيل.

اختبار بسيط: عندما تصبح نواة جديدة متاحة ، قم بتثبيتها ، وإعادة تشغيلها. بعد إعادة التشغيل ، قم بتشغيل apt autoremove للتخلص من بعض النواة القديمة التي لم تعد مطلوبة. بعد أن قمت بتشغيل ذلك ، سيذكر أن إعادة التشغيل مطلوبة ، وهذا هراء كامل.


-1
2017-09-14 07:09



حسنًا ، يؤدي إزالة kernel إلى إعادة إنشاء ملف تهيئة grub ، وبعد ذلك ربما يكون من الأفضل إعادة التشغيل ، للتحقق من أنه لا يزال بإمكانك التمهيد. على الأقل هذا هو ما أقوم بتبرير هذه الميزة (mis) لنفسي. - Marius Gedminas