Ubuntu'mun her 30 dakikada bir yeniden başlatılmasını planlamak istiyorum. Herhangi bir komut veya grafiksel bir yol var mı?
Ubuntu'mun her 30 dakikada bir yeniden başlatılmasını planlamak istiyorum. Herhangi bir komut veya grafiksel bir yol var mı?
Yanıtlar:
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.
İ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, reboot
komutu 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.
-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 cron
ve man 5 crontab
.+5
Kullanı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,30
Eğer tercih ederseniz, dakikadan az da çalışacaktır. (Benzer şekilde, her 20 dakikada bir olsaydı, */20
veya yazabilirsiniz 0,20,40
.)/sbin
olduğ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.
sudo shutdown -c
.shutdown
ancak 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.)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 noautoreboot
bulunmaktadı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ınshutdown -r +5
.
Bu cevap nasıl kısa devre açıklar ve ve ya operatörler gerçekleştirebilir if
- then
mantık. Kısa, sezgisel ve gayri resmi bir açıklama için komutu şu şekilde okuyabilirsiniz:
/etc/noautoreboot
mevcut! Ya da koşshutdown -r +5
.
Bkz man [
Test kendisi yapılır nasıl olduğunu görmek için.
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.
gnome-schedule
Ubuntu Yazılım Merkezi'nden yükleyin . Ek bir şey kurmak istemiyorsanız, Terminal Yolu'nu yapın.
gnome-schedule
Kısa çizgiden açın , tekrarlanan yeni bir görev oluşturun ve şu seçenekleri ayarlayın:
dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
Diğer seçenekleri varsayılan değerlerinde bırakın. Ekle'ye tıklayın .
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 :0
ve 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
.
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.
sudo crontab -e
Komut satırından çalıştırın ve bu satırı dosyaya ekleyin:
0,30 * * * * reboot
Bu, sisteme komutu reboot
her 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/
reboot
olması gerektiği gibi çalışmaz root
ve bu kullanıcının kişisel crontab ekler, bu yüzden o kök olmayan kullanıcı olarak çalışır. (Aynı şey sudo reboot
işe yaramayacaktır çünkü sudo
bir şifre istemeye ve başarısız olmaya çalışacaktır.) Bunun /etc/crontab
için kullanılmalıdır (sözdiziminin biraz farklı olduğunu unutmayın).
sudo crontab -e
ve daha sonra bir cron girişi oluşturmak.
cron
Her 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 cron
kök olarak çalışır, izinler bakımından özel bir şey yapmak gerekmez.
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.