Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: crontab w Debianie  (Przeczytany 660 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: 2763
  • 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.