Nowe posty

Autor Wątek: crontab w Debianie  (Przeczytany 253 razy)

Offline ratus

  • Nowy na forum
  • *
  • Wiadomości: 9
    • Zobacz profil
crontab w Debianie
« dnia: 2022-02-23, 23:27:06 »
Edytuję crontab -e  wpisując:
*/4 * * * *  echo "wpis co 4 minuty" >> /home/user/test.txt   - działa.

wpis:  */4 * * * *  /home/user/bin/skrypt.bash.sh  - działa, ale wybiórczo, tzn. nie każdy skrypt się uruchamia. ( oczywiście, sprawdzam działanie skryptu wcześniej, odpalając go w powłoce ).
Dlaczego cron kaprysi? Czy (prosty) skrypt działajacy w powłoce musi spełniać jakieś specjalne warunki, żeby cron go akceptował?

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2562
  • 1709
    • Zobacz profil
Odp: crontab w Debianie
« Odpowiedź #1 dnia: 2022-02-24, 19:47:57 »
Raczej Cron działa poprawnie.

1. Problem może leżeć w budowie samego systemu i tego co masz w skrypcie.
Jeśli posiadasz " Systemd " w swojej dystrybucji Linuxa usługi takie jak Cron uruchamiają się raczej losowo, albo prawie losowo.
To oznacza że Cron może wystartować wcześniej niż zalogujesz się do środowiska graficznego.
W tym przypadku jeśli twój skrypt ma wyświetlić powiadomienie, to nie wyskoczy,
bo jeszcze nie zdążyłeś się zalogować, a skrypt już został już wykonany.
- Wiec obstawiałbym że to jest twój problem jeśli występuje losowo. ( i tylko przy starcie systemu )

Żeby opóźnić wykonanie skryptu ja używam komendy " sleep "
Przykład
@reboot         sleep 10 && export DISPLAY=:0.0 && bash /home/user/skrypt

2. Uprawnienia.
Cron sam w sobie nie wie komu, nie wie na które " okno "  wysłać powiadomienie graficzne ( https://www.linuxquestions.org/questions/linux-newbie-8/export-display%3D-0-0-a-682926/ )
oraz w zależności od dystrybucji Linuxa może mieć odebrane odpowiednie uprawnienia.
( Polecenie Cron z konta root i z konta użytkownika może działać odrobine inaczej - nie sprawdzałem )

Przykład jak poradzić sobie z powiadomieniem " notify-send " na Mincie / Ubuntu
( nazwę " użytkownik " należy sobie podmieć na własnego )
* * * * *       export DISPLAY=:0.0 && export XAUTHORITY=/home/UZYTKOWNIK/.Xauthority && sudo -u UZYTKOWNIK /usr/bin/notify-send -u normal -i "info" 'Szefie !!' 'To jest test z Cron-u.'


Edytowane
Przetestuj jeszcze coś takiego, powinno błąd zapisać do pliku  /home/user/Skryptu.log
Wtedy będziesz dokładnie wiedział co go boli.
*/4 * * * *  /home/user/bin/skrypt.bash.sh  &>  /home/user/Skryptu.log
« Ostatnia zmiana: 2022-02-24, 20:25:35 wysłana przez 1709 »
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.