Crontab iş başlangıcı @reboot'dan sonra +1 dakika


42

Her yeniden başlatmada +1 dakikada bir komut dosyası çalıştırmanız gerekir. Bir kayıt yaptım @rebootama senaryom için çok erken. Yeniden başlattıktan bir süre sonra nasıl yürütülür?


2
Neden bu kadar erken ? Belki bir init betiği daha uygun olabilir (bağımlılıklar ile ilgili olarak, örneğin bu betiğin önce kurulması gerekiyor ).
sr_

senaryomun diğerlerinden sonra, son olarak kısa kelimelerle yürütülmesi gerekiyor
Yurij73

işinizin her şeyden sonra yürütülmesi gerektiğinden ve her şeyin kavramı oldukça değişken olduğu için (yeni bir autostart @ reboot uygulamasının eklenmesi pek de nadir değildir) bu amacınıza hizmet ediyor. Görevinizi /etc/rc.local dosyasında belirtilen görevlerin altına koymak genellikle istediğiniz şeydir, ancak sisteminizin başlangıç ​​yapılandırmasına bağlı olarak, bu her zaman geçerli olmayabilir. Öyleyse test edin ve işinize yarayıp yaramadığını görün.
MelBurslan

Upstart için bir dava gibi geliyor?
nafg

Yanıtlar:


64

Senaryo sadece açılıştan bir dakika sonra çalışacak mı, yoksa başka zamanlarda da kullanılabilir mi? Eski durumda, sleep 60betiğinizin başına ekleyebilir veya ikinci durumda, onu crontab dosyasına ekleyebilirsiniz:

@reboot sleep 60 && my_script.sh

Yine de, sr_ tarafından belirtildiği gibi, belki de bunu yanlış bir şekilde ele alıyorsunuzdur ve uygun bir init.d veya rc.d betiği daha sağlam bir çözüm olacaktır.


1
Veya (örneğin gecikme çimdik bir komut satırı seçeneğini kullanın script -s Xda uyarlanabilir sleep Xscript iç).
peterph

Bunu /etc/init.d/ içindeki taskrunner dosyasına uygulayabilir miyim?
Andres Angel

@AndresAngel - Üzgünüm, bilmiyorum. Ben yok olan FreeBSD kullanan taskrunnerbu konuda, ne de,/etc/init.d
D_Bye

rhel7 uykumda hiç çalışmıyor, sonsuza kadar uyur ve asla geri dönmez
Inder R Singh

16

Örneğin, ağ kullanılabilir olduğunda yeniden başlatmadan sonra bir şey çalıştırmanız gerekiyorsa, örneğin, istenen zamanda çalıştırılacak olan systemd birimini yazabilirsiniz (elbette bu sadece systemd bulunan sistemlerde çalışacaktır).

Bunu yapmak /etc/systemd/system/my_script.serviceiçin aşağıdaki içeriklere sahip bir dosya oluşturun :

[Unit]
Description=My script that requires network
After=network.target

[Service]
Type=oneshot
ExecStart=/full/path/to/my_script.sh

[Install]
WantedBy=multi-user.target

Ardından yürütün:

sudo systemctl daemon-reload
sudo systemctl enable my_script

Sen bittin!


11

Kullanırdım at. De olduğu gibi:

@reboot echo /root/bin/do_the_stuff | at now + 2 minutes
# at assigns it an execution time truncated to whole minutes,
# so this means it will execute in 1--2 minutes.

... eklenmiş ihtarla birlikte, gerçekten istediğiniz şey diğer şeylerden sonra çalıştırmaksa, işletim sisteminizin kullandığı başlangıçta nasıl yapılacağını kontrol etmeniz gerektiğidir.

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.