Crontab'da başlangıçta çalıştırma komutu


24

Yeniden başlattıktan sonra Linux'umuza bir komut vermek istedim, crontab kullanarak yapılabileceğini gördüm. Bu komutu çalıştırmak istedim

sudo ifdown eth0 && sudo ifup -v eth0

crontab'ta sadece şunu yapabilirim:

@reboot sudo ifdown eth0 && sudo ifup -v eth0

ya da bir betiğe saklamak zorunda mıyım?

teşekkür ederim


7
Crontab, eth0'u yeniden başlatmak için yanlış bir araç gibi görünüyor. Neden bu komutu (sudo olmadan) /etc/rc.local 'a koymuyorsunuz?
mikewhat

Bunu ne için yapman gerekiyor? Bu görevler genellikle önyükleme işlemi sırasında otomatik olarak yapılır ve neredeyse edilir ASLA otomatik önyükleme süreçlerinden ayrı olarak çalıştırılmaları gerekir ...
Thomas Ward

1
@mikewhat, şu anda aşırı oy kullanamıyorum, ancak bunu önerdiğiniz için teşekkür etmek istiyorum.
Lottie

Yanıtlar:


34

Bu işe yaramadan önce burada birkaç not:

  1. sudoBir cron işinde kullanmayın . Bunun rootyerine kendi yerine crontab dosyasını düzenleyin , örneğin sudo crontab -eve sonra komutları girin sudo.
  2. Her ne şekilde bahsedildiği gibi, bu kullanım için garip bir kullanımdır cronve muhtemelen çizgiden /etc/rc.localönce yerleştirilmesi daha iyi olur exit 0.
  3. Bize tam olarak ne aradığınızı söylerseniz, sizi bir log veya config seçeneğine yönlendirebiliriz (başlangıçta ağ servislerinizi yeniden başlatmak biraz zor olabilir).
  4. Çoğu sistemde @rebootsert bir kapanma veya çökmeden sonra da çalışılmalıdır, ancak YMMV için farklı cron uygulamaları vardır. Her ikisini de iddia eden farklı yerlerde yorumlar gördüm.

EDIT (2016/02/17): Mutlak yollardaki yanlış bulanıklığın kaldırılması; kudos @muru
EDIT (2016/10/17): Eklenen kapanış notu
EDIT (2017/09/11): Yenilenen kapanış notu. Bundan tam olarak emin değilim.


Tamam, sadece açıklığa kavuşturmak istiyorum, sadece komutun tamamını etc/rc.localsudo olmadan yazmalıyım . öyleyse sadece ifdown olacak eth0 && sudo ifup -v eth0 exit 0
Lottie

cronkullanır PATHverilen /etc/environmentvar ki, /sbin.
muru

Ne önerdiysen onu yaptım ve işe yaradı. teşekkür ederim
Lottie

1
@ TheSchwa Olmalı. 12.04 beri En azından, /etc/pam.d/cronyükler pam_env, böylece /etc/environmentokumak ve varsayılan edilmelidir PATHkullanılan kümesi içinde. Bu cevap 12.04 çıkmadan hemen önce gönderildi.
muru

2
@ TheSchwa Cron'un yeniden başlatılmasının soğuk açılışta çalışmadığı ifadesi yanlış. Crond arka plan programı başladığında yeniden başlatmalı satırlar çalışır. Sıcak bir önyükleme, soğuk önyükleme veya önyükleme olup olmadığına bakılırsa ben de el ile kapatıp yeniden başlattım. Crond arka plan programı neden yeniden başlatıldığını bilmiyor ya da umursamıyor, her ne zaman başlatılırsa yeniden başlatılacak satırları çalıştıracak.
Kurt Fitzner

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.