Shell betiğini crontab ile nasıl çalıştırabilirim?


22

notify.shŞuna benzeyen bir komut dosyası var:

notify-send "hi welcome"

2 PM için crontab bildirimim:

0 14 * * * home/hacks/notify.sh

Ancak, bu işe yaramıyor. Sorun nedir?

Yanıtlar:


39

Komut dosyasında bir # eksik! başlangıçta, hangi komut tercümanının senaryo için kullanılacağını söylemek için çekirdeğin yorumladığı sihir.

Şunun gibi görünmesini sağlayın:

#!/bin/sh
notify-send "hi welcome"

ve betiğin çalıştırılabilir olduğundan emin olun:

ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh

Ayrıca, bunun günde sadece bir kez olmasını istediğinden, crontab'ın saat dilimi kendi saat diliminle aynı mı? Bunu 2 de GMT'de bulabilirsiniz.


+1 Bu cevap harika - özellikle senaryo hakkındaki noktanın çalıştırılabilir olması gerekiyor! Teşekkürler!
— FXQuantTrader

Çok ince bir açıklama. Olumlu oy
— Fokwa Best

18

Crontab'ın çalıştırılması yalnızca kolaydır. Burada crontab işlerinin nasıl çalıştırılacağını söyleyeceğim. Crontab'a takılan herkes için kullanışlıdır.

*/1 * * * * cd /home/hacks && sh notify.sh

Komut dosyasını çalıştırılabilir yapmak için yapmamız gereken:

chmod +x home/hacks/notify.sh

İşte bu betiği her dakika çalıştırıyorum ... Aşağıdaki betiği yaparak, çalışıp çalışmadığını bulmak için bir günlük dosyasına yazabilirsiniz.

günlük yaz

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log

posta göndermek

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" user@domain.com

2
"* / 1 * * * * sh /home/hacks/notify.sh" da işe yaramadı mı?
— user1179459

5

4 hipotez:

  • cron arka plan programı çalışmıyor (bir a ps axfww | grep cronve kontrol et)

  • notify-send, bir terminale veya bir X oturumuna çıktı göndermeye çalışıyor - ancak cronortamın içinden koştu ve "kiminle konuşacağını" bilmiyor.

  • komut dosyanız çalıştırılamaz

  • home/crontab komut yolu komut olarak işletilirse kullanıcıya göre olur. Tam yolu kullanmayı deneyin


1

export DISPLAY=:0Komut dosyanızdaki notify-send satırının üstüne ekleyin . Bu, Lornezog'un ikinci noktasına işaret ediyor.


0

Aşağıdaki komutu kullanarak crontab'ı açmalısınız:

crontab -u username -e (to edit) -l(to list) -r(to remove) 10(minutes) 8-15(hours) *(Day of month) *(month) 1,3,5(days of week) /path/to/script/script_name.sh

Bu, senaryonuzu saat 8: 00-3: 00 arasında saat başı bir kez, her pazartesi, çarşamba ve cuma saatin 10 dakikasında çalıştıracaktır.


0

Öncelikle, crontab komutunu Command ile düzenlemeliyiz ve Inside'dan crontab -edaha çok CrontabYürütülebilirler dizini ve bununla birlikte bu şekilde ekleyin * 14 * * * home/hacks/notify.sh >/dev/null 2>&1.

Cron hizmetini başlat / durdur / yeniden başlat

  • /etc/init.d/crond start /stop / restart
  • service crond start /stop /restart
  • systemctl stop crond.service

systemctl stop crond.service


-2

oldukça basit, üzerinden crontab dosyasının altına aşağıdaki satırı ekleyin: sudo nano /etc/crontab

@reboot root cd /home/pi/node-sonos-http-api && npm start &


Bu sorunun cevabı gibi görünmüyor.
— Ljm Dullaart
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.