Crontab İn Doğru Düzgün Calismamasi
-
Merhaba basit bir iş için Amazon aws açtım. Bir scriptim var. Post atıyor. Mesela cronu 1 dakikaya ayarladım. Onda biraz sorun yaşamadım. Denemek için 59 dakikada bir attiriyorum. Hem 59 geçe hem 01 gece atıyor. İki saatte bir ayarlıyorum bir türlü olmadı.
Crontab.guru daki konfigürasyonlar düzenli çalışmıyor. Bu durum sunucu ile alkali olabilir mi?
0 */2 * * * python3 /home/admin/test/sendgroup.py >> /home/admin/test/cron1.log 2>&1
Bu iki saatti mesela çalışmadı.
59 dakikada atması için */59 * * * * bunu kullanıyorum ise yaramıyor. 01 gecede atıyor.
Neden olabilir?
Cron çalışıyor mu komutu sudo systemctl status cron.service olumlu dönüyor çalışıyor yani
Her güncelleme sonrası sudo /sbin/service cron restart restart atıyorum yine bakıyorum başlama saati güncel ama bir türlü istediğim zaman atmiyor
-
hocam cron doğru gibi duruyor. 2 saatte bir çalışması lazım : 0 */2 * * * python3
bu da her ellidokuzuncu dakikada çalışır : */59 * * * *. yani mesela şu an 00:38, şu ana 59 dakika ekle. sonra o ana 59 dakika daha ekle falan.
ama 59 geçe çalıştırmak istersen (12:59, 13:59 vs gibi) : 59 * * ... yapman lazım
-
python3 yerine /usr/bin/python3 yazıp denermisin?
-
@yolbulucu 59 dakikada bir çalışma var. Ama 01 gecede çalışıyor. Hatta tam 59 gecelerde çalışıyor
@torpedo_XL yarın denerim hocam
-
tarzan bunu yazdı
@yolbulucu 59 dakikada bir çalışma var. Ama 01 gecede çalışıyor. Hatta tam 59 gecelerde çalışıyor
@torpedo_XL yarın denerim hocam
01 de çalışabilir hocam, her saat 1 dk geride çalışacak işte. şu an 13:59 da çalıştı, 59 dakika sonra çalışacak yani 14.58, sonra 15:57 vs diye gidecek.
-
@yolbulucu hocam sorun iki defa çalışması. İki defa çalışması doğru değil. Sadece 59 geçe çalışması lazım. Zaman damgası var scriptte gecikme problem değil yani. Sorun dediğim gibi iki defa çalışma var.
-
Olmadı Python ile cron harici çalışacak birşey kodlayacagim. Kendi zamanini kendisi sayar. Ama amzondaki debianda bir sıkıntı var. Anlamadım ne olduğunu.
-
systemd ile de yapabilirsin
/etc/systemd/system/ altına
sendgroup.service
[Unit] Description=Send Group Script [Service] Type=oneshot # Script bir kez çalışacak ve bitecek ExecStart=/usr/bin/python3 /home/admin/test/sendgroup.py >> /home/admin/test/cron1.log 2>&1 User=admin # Scripti hangi kullanıcının çalıştıracaksa onu ekle [Install] WantedBy=multi-user.target
bir de sendgroup.timer dosyası oluştur
[Unit] Description=Send Group Timer [Timer] Unit=sendgroup.service # Hangi servisi tetikleyeceğini belirtir OnCalendar=*:0/59 # Her saat başının 0. dakikasından başlayarak her 59 dakikada bir Persistent=true # Sistem yeniden başlatılsa bile zamanlamayı hatırlamasını sağlar [Install] WantedBy=timers.target
En son aktif edip durumunu kontrol etmek için de bu komutları kullanabilirsin
sudo systemctl enable sendgroup.timer sudo systemctl start sendgroup.timer sudo systemctl list-timers --all sudo systemctl status sendgroup.timer
-
@JpnTr sağol hocam deneyeyim bunuda
-
Benzer cloud projeleri için python da "schedule" kütüphanesini kullanıyorum. OS dan bağımsız proje içinde kendi crontab oluşturmak gibi düşün.
schedule py dosyanı başlangıçta nohup da çalıştırman yeterli.
-
cukurova bunu yazdı
Benzer cloud projeleri için python da "schedule" kütüphanesini kullanıyorum. OS dan bağımsız proje içinde kendi crontab oluşturmak gibi düşün.
schedule py dosyanı başlangıçta nohup da çalıştırman yeterli.
Yanıtın gözümden kaçmış hocam. Teşekkür ederim bakarım buna da ((:
Bu arada @JpnTr nin yazdığını denedim ama hata verdi.
start sonrası şu hatayı verdi
"Failed to start sendgroup.timer: Unit sendgroup.timer has a bad unit file settin g.
See system logs and 'systemctl status sendgroup.timer' for details.
"statusde de şu şekilde belirtiyor.
"
○ sendgroup.timer - Send Group Timer
Loaded: bad-setting (Reason: Unit sendgroup.timer has a bad unit file setting.)
Active: inactive (dead)
Trigger: n/a
Triggers: ● sendgroup.serviceJan 27 20:43:18 systemd[1]: /etc/systemd/system/sendgroup.timer:7: Failed to parse boolean value, ignoring: true # Sistem yeniden başlatılsa bile zaman>
Jan 27 20:43:18 systemd[1]: sendgroup.timer: Timer unit lacks value setting. Refusing.
Jan 27 20:45:39 systemd[1]: /etc/systemd/system/sendgroup.timer:5: Unit type not valid, ignoring: sendgroup.service # Hangi servisi tetikleyeceğini bel>
Jan 27 20:45:39 systemd[1]: /etc/systemd/system/sendgroup.timer:6: Failed to parse calendar specification, ignoring: *:0/59 # Her saat başının 0. dakik>
Jan 27 20:45:39 systemd[1]: /etc/systemd/system/sendgroup.timer:7: Failed to parse boolean value, ignoring: true # Sistem yeniden başlatılsa bile zaman>
Jan 27 20:45:39 systemd[1]: sendgroup.timer: Timer unit lacks value setting. Refusing.
Jan 28 19:07:02 systemd[1]: /etc/systemd/system/sendgroup.timer:5: Unit type not valid, ignoring: sendgroup.service # Hangi servisi tetikleyeceğini bel>
Jan 28 19:07:02 systemd[1]: /etc/systemd/system/sendgroup.timer:6: Failed to parse calendar specification, ignoring: *:0/59 # Her saat başının 0. dakik>
Jan 28 19:07:02 systemd[1]: /etc/systemd/system/sendgroup.timer:7: Failed to parse boolean value, ignoring: true # Sistem yeniden başlatılsa bile zaman>
Jan 28 19:07:02 systemd[1]: sendgroup.timer: Timer unit lacks value setting. Refusing."