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.