Nowe posty

xx Otoczenie najkrótszej frazy (2)
2022-09-25, 12:18:46
xx Skrypt do otwarcia i zamknięcia plików (2)
2022-09-19, 21:18:41
xx potrzebuje by ktoś mi wytłumaczył jedną żecz (4)
2022-09-16, 23:14:22
clip Zmiana ustawień punktu montowania (2)
2022-09-07, 23:20:08
xx Czarny ekran na start - linux mint (2)
2022-09-07, 14:46:31
xx Przydatne Linki (12)
2022-09-07, 14:33:34
xx Czy jest to potrzebne w domu ? (1)
2022-09-07, 08:26:40
xx System pakietów jest uszkodzony (Linux Ubuntu 20.04 LTS) (1)
2022-09-06, 16:50:43
xx Lupa. (5)
2022-09-04, 00:47:38
xx problem z wyburzaniem dell inspirion 15 3552 (1)
2022-09-03, 19:47:29

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

ratus

  • Gość
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: 2591
  • 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.