Her 30 dakikada bir otomatik olarak nasıl yeniden başlatılır?


14

Ubuntu'mun her 30 dakikada bir yeniden başlatılmasını planlamak istiyorum. Herhangi bir komut veya grafiksel bir yol var mı?


12
Sadece merak ediyorum: 30 dakikada bir yeniden başlatmanın amacı ne olabilir?
Rafał Cieślak

Yanıtlar:


30

Bunu yapmanın en iyi yolu, Ubuntu'nun neden her yarım saatte bir yeniden başlatılmasını istediğinize bağlı olacaktır .

Bu yüzden, bunu neden yapmak istediğinizi açıklamak için sorunuzu düzenlemenizi öneririz.

Her 30 dakikada bir yeniden başlatma ve her yeniden başlatmadan önce kullanıcıları uyarma:

İnsanların makineyi yerel veya uzaktan kullandığını varsayarsak, Ubuntu'nun herhangi bir uyarı yapmadan altlarından yeniden başlatılmasını önlemek en iyisidir. Bu nedenle, rebootkomutu zamanlamak yerine shutdown, kullanıcıyı uyarması için komutun zamanlanmasını öneririm .

5 dakika önce bir uyarı vererek her yarım saatte bir kapanış planlamak için şunu ekleyin /etc/crontab:

#minute hour    mday    month   wday    user    command
*/30    *       *       *       *       root    shutdown -r +5

Aslında bir yumruk satırı eklemek zorunda değilsiniz. Anlaşılır olması için ekledim - zaten orada olduğu gibi bir şey.

  • Bu, -r( +5) komut çalıştırıldıktan beş dakika sonra sistemi yeniden başlatmaya ( ) inecek şekilde zamanlar . Her yarım saatte bir çalışır ( */30). Bkz man cronve man 5 crontab.
  • +5Kullanıcıların yeniden başlatmalardan uyarıldıktan sonra ne kadar süreceklerini değiştirmek için başka bir şeye geçin.
  • 0,30Eğer tercih ederseniz, dakikadan az da çalışacaktır. (Benzer şekilde, her 20 dakikada bir olsaydı, */20veya yazabilirsiniz 0,20,40.)
  • Yap emin /sbinolduğunu PATHüstüne yakın belirtilen değişken /etc/crontab. Aksi takdirde, shutdown(altında command) olarak çağrılmalıdır /sbin/shutdown.

Makine o sırada çalışıyorsa, komut her zaman yarım saat işareti üzerinde çalışır . Bu, duruşların her yarım saatte bir duyurulmasına ve saatin 5 ve 35 dakika sonrasında yapılmasına neden olur.

  • Buradaki bir avantaj, bir yöneticinin yeni açıklanan kapatmayı iptal edebilmesidir sudo shutdown -c.
  • Bilgisayar, zamanlanan komutun çalıştırılacağı belirli zamanlarda kapalıysa çalışmaz. Bu ihtiyaçlarınız için yeterli değilse, yeniden başlatmalarınızı farklı bir şekilde planlamanız gerekir. (Bu, kullanımıyla ilgili değildir, shutdownancak planlama yapıyorsanız eşit olarak geçerlidir reboot.) Bu durumda, lütfen özel gereksinimlerinizi açıklamak için sorunuzu düzenleyin. (Bunu tavsiye ederim anacron, ancak zaman aralıklarınız çok kısa.)

Yöneticilerin otomatik yeniden başlatmaların olmasını önlemesini kolaylaştırmak:

Bunu, bir yöneticinin otomatik olarak zamanlanan tüm yeniden başlatmaları askıya almasını kolaylaştıracak şekilde ayarlamak isteyebilirsiniz:

#minute hour    mday    month   wday    user    command
*/30    *       *       *       *       root    [ -e /etc/noautoreboot ] || shutdown -r +5

Adlı bir dosya varsa bu bir yeniden başlatma zamanlama olmaz dışında - beş dakika uyarısı ile, her yarım saatte - Bu programlar aynı şekilde yeniden başlatılır noautorebootbulunmaktadır /etc.

  • Bu kontrol dosyası aşağıdakilere sahip bir yönetici tarafından oluşturulabilir:

    sudo touch /etc/noautoreboot
    
  • Şununla silinebilir:

    sudo rm /etc/noautoreboot
    
  • Önemli olan dosyanın var olup olmadığının, var olup olmadığına dikkat edin .

  • Yeniden başlatma planlanır ve kullanıcılar uyarılır ise, o zaman dosya oluşturulur, (hemen yaklaşan) yeniden başlatma hala ortaya çıkar.

  • Bu nasıl çalışıyor? Bu kullanan kısa devre -evaluated veya operatörü ( ||için kısaltma olarak):

    Eğer /etc/noautoreboot yoksa, çalıştırın shutdown -r +5.

    Bu cevap nasıl kısa devre açıklar ve ve ya operatörler gerçekleştirebilir if- thenmantık. Kısa, sezgisel ve gayri resmi bir açıklama için komutu şu şekilde okuyabilirsiniz:

    /etc/noautorebootmevcut! Ya da koş shutdown -r +5.

    Bkz man [Test kendisi yapılır nasıl olduğunu görmek için.


12

Bunu Oturum Yöneticisine yeniden başlatmak istediğimizi söyleyerek yapmayı seviyorum. Bu, kök izinleri olmadan yapılabilir ve sistemin yeniden başlatılacağı konusunda bizi uyaran güzel bir pencere alırız - hatta istersek yeniden başlatmayı iptal edebiliriz.

Grafiksel Yol - Tercih Edilen Yöntem

gnome-scheduleUbuntu Yazılım Merkezi'nden yükleyin . Ek bir şey kurmak istemiyorsanız, Terminal Yolu'nu yapın.

gnome-scheduleKısa çizgiden açın , tekrarlanan yeni bir görev oluşturun ve şu seçenekleri ayarlayın:

  • Açıklama: ne istersen
  • Komut: dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
  • Komutun hemen altındaki X Uygulaması'nı seçin .
  • Gelişmiş Tarih ve Saat:
    • Dakika: 0,30

Diğer seçenekleri varsayılan değerlerinde bırakın. Ekle'ye tıklayın .


Terminal Yolu - Ek Yazılım Gerektirmez

Terminalden çalıştırın:

crontab -e

Bu satırı ekle:

0,30 * * * * DISPLAY=:0 dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot

Kaydet çık. nano(Varsayılan olanı) kullandığınızı varsayarsak , Ctrl + o ve Ctrl + x tuşlarına basın .

DISPLAY'iniz gerçekten farklıysa bunun işe yaramayacağını lütfen unutmayın :0ve bu nedenle bu yöntem tercih edilmez. Ancak, dürüst olmak gerekirse, bilgisayarınızı her 30 dakikada bir yeniden başlatıyorsanız, DISPLAY'iniz muhtemelen her zaman olacaktır :0.

Gnome veya Unity kullanmıyor musunuz?

Yukarıda açıklanan her iki yöntem de hem Gnome oturumlarında hem de Unity'de bulunan bazı gnome bileşenlerine bağlıdır. Bunu başka bir ortamda (Kubuntu'nun KDE'si, Kubuntu'nun LXDE'si gibi) yapmak istiyorsanız, bunun yerine komutu bununla değiştirseniz iyi olur:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

Bu onay istemez ve aracılıksız olarak yeniden başlatılır, ancak elbette ConsoleKit'i manuel olarak kaldırmadığınız varsayılarak tüm ortamlarda çalışır.


6

sudo crontab -eKomut satırından çalıştırın ve bu satırı dosyaya ekleyin:

0,30 * * * * reboot

Bu, sisteme komutu reboother 30 dakikada bir root olarak çalıştırmasını söyler . Zaman sözdizimine genel bir bakış için buraya bakın: http://linuxmoz.com/crontab-syntax-tutorial/


3
Bu, rebootolması gerektiği gibi çalışmaz rootve bu kullanıcının kişisel crontab ekler, bu yüzden o kök olmayan kullanıcı olarak çalışır. (Aynı şey sudo rebootişe yaramayacaktır çünkü sudobir şifre istemeye ve başarısız olmaya çalışacaktır.) Bunun /etc/crontabiçin kullanılmalıdır (sözdiziminin biraz farklı olduğunu unutmayın).
Eliah Kagan

1
Sen ihraç edebileceği sudo crontab -eve daha sonra bir cron girişi oluşturmak.
Tass

-3

cronHer 30 dakikada bir iş planlamak için kullanın . Bu işi basitçe sahip bir kabuk betiğine yönlendirin

reboot

içinde.

Yana cronkök olarak çalışır, izinler bakımından özel bir şey yapmak gerekmez.

Güncelleme

Evet, aslında hiçbir sistemimde hiçbir zaman kullanıcı tabanlı crontabs (kullanıcıların kullanıcı düzeyinde zamanlanmış görevler yapmasına izin vermenin daha iyi yolları vardır) görevler. Günlük dönüşleri (bugün hala gerçekleşen) gibi şeyler

Yeniden başlatma doğru çalışmak için kök olarak çalıştırılmalıdır ZORUNLU, alternatif yapışkan bitini ayarlamaktır, böylece normal bir kullanıcı olarak çalıştırıldığında aslında kök olarak yürütülür ve beklendiği gibi çalışır, ancak bunu yaparken sunucunuzu düzenli olarak izin vermeye kadar açarsınız. kullanıcıları istediği zaman yeniden başlatacak.

Muhtemelen SUDO'ya bir çağrıyı otomatikleştirebilirsiniz, ancak SUDO ile bir şifre ihtiyacını otomatik hale getirip getiremeyeceğinizden emin değilim. SU kullanarak kabuk)

Sistem geniş crontab'da kurduysanız, o zaman her şey root olarak çalıştırılır, bu yüzden ifadem doğrudur (sadece sistem genişliğinin kullanılması gerektiğini belirtmeyi ihmal ettim)

Sorunuza gelince "Neden bir senaryoya sarın?" Peki neden olmasın? OP bir kabuk betiğine koyarsa, gelecekte bir noktada ona eklemesi gerekir, işi bulmak, kaldırmak, kabuk betiği ile değiştirmek yerine crontab'ı açmak yerine betiğe ekler, sonra eski + yeni ile bir komut dosyası yazın.

Ultrix / Solaris ve hatta VAX kadar sistemler ile çalışan bir Sys Yönetici / Geliştirici olarak 20 yılı aşkın bir süredir bana önemli bir nokta öğretti.

Başlangıçta kolaylaştırabilirseniz, yaşam süresi boyunca kolay kalır.

Gerçekten bu "Minimalist" tutum alamadım modern sistem sys bir sürü var, mümkün olduğunca az yapmak başarının anahtarıdır. Bu günlerde çoğu sunucu kolayca başladığım her şeyden 20 kat + daha güçlüdür ve bu tür bir senaryo (kabuk komut dosyalarında kaydırma) o zaman pratik yapılmasını önerdi, bu yüzden şimdi yapmamanın gerçekten bir argümanı yok.

Gerçekten hardcore Unix / Linux'a gitmek istemiyorsanız, bu durumda hepsini cron girişine etiketleyin ve her şeyi yapılması gerektiği gibi birbirine bağlayın :-)

Bununla birlikte, kazıyorum ve aynı zamanda bu günlerde birçok erkeğin derin uçlara atıldığını ve bir şeyler yapmasını söylediklerini anlıyorum, bu nedenle oturup yeni teknikler (ve genellikle) hakkında bilgi edinme zamanından (ve genellikle eğimden) yoksunlar. bu durumda eski) veya hatta iş dışında bu şeylerle oynamak istiyorum.

Kişisel olarak, koştuğum sunucular arasında tek bir sunucum var, bu sadece etrafta oynamam için adanmış, bu yüzden bu gibi şeyleri test edebilirim ... bu daha iyi A veya B, bu yüzden herhangi birine tavsiyede bulunmamın sebebi yok bu.


Güncellememi görün .. İstersen bana 1
puanımı

Tekrar deneyin ... sabırlı olun ...
shawty

2
Bu artık bir cevap değil! (Ayrıca, yapışkan bit ve setuid bitini karıştırıyorsunuz .)
Eliah Kagan

Evet bu bir cevap, ben yazdım, bir cevap olarak ekledim bu yüzden bir cevap !!!
shawty
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.