Temat: cron nie działa na D-Link DWR-921 C3 po aktualizacji do openwrt 21.02

Na 19.07 skryt do rebootu routera przez cron działał bez zarzutu. Po aktualizacji do 21.02 mam co jakiś czas downtime dopóki ręcznie routera nie zresetuję.

To skrypt:

#!/bin/sh
touch /tmp/checknet.sh-lastrun
sleep 300
if ! ping -q -c 5 -W 10 google.com > /dev/null; then
    (reboot) &
fi

/etc/crontabs/root:

*/10 * * * * /bin/checknet.sh

Plik /tmp/checknet.sh-lastrun nie istnieje.

logread -e cron:

Fri Dec 10 12:28:00 2021 cron.err crond[1469]: USER root pid 19484 cmd /bin/checknet.sh
Fri Dec 10 12:29:00 2021 cron.err crond[1469]: USER root pid 19485 cmd /bin/checknet.sh
Fri Dec 10 12:30:00 2021 cron.err crond[1469]: USER root pid 19486 cmd /bin/checknet.sh
Fri Dec 10 12:31:00 2021 cron.err crond[1469]: USER root pid 19500 cmd /bin/checknet.sh

Jakieś pomysły co może być przyczyną i jak to naprawić?

2

Odp: cron nie działa na D-Link DWR-921 C3 po aktualizacji do openwrt 21.02

Zrobiłeś skrypt pod windowsem? Pokaż wyniki poleceń

ls -la /bin/checknet.sh
/bin/checknet.sh

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: cron nie działa na D-Link DWR-921 C3 po aktualizacji do openwrt 21.02

Nie, skrypt był bezpośrednio wpisany przez nano na urządzeniu, skopiowany z maszyny na Linuksie.

ls -la /bin/checknet.sh

-rwxr-xr-x    1 root     root           126 Dec  3 13:56 /bin/checknet.sh

/bin/checknet.sh

-ash: /bin/checknet.sh: not found

sh /bin/checknet.sh

 (bez outputu)

4

Odp: cron nie działa na D-Link DWR-921 C3 po aktualizacji do openwrt 21.02

Skasuj go i zrób jeszcze raz na openwrt. Jak widzisz - system pisze że nie ma takiego pliku, wygląda jak byś go jednak źle robił.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: cron nie działa na D-Link DWR-921 C3 po aktualizacji do openwrt 21.02

Rzeczywiście po utworzeniu od nowa wynik komendy jest inny. Dzięki! Potrafisz mi jeszcze powiedzieć co odpowiada za to, że system uważa, że not found gdy poda się bezwzględną ścieżkę bez niczego więcej, a że już wszystko działa gdy dodam sh albo ./ i jak tego uniknąć? Rozumiem, że nie-uniksowe new line uniemożliwiają wykonywanie?

6

Odp: cron nie działa na D-Link DWR-921 C3 po aktualizacji do openwrt 21.02

Tak, shell nie potrafi już wykonać czegoś co wg niego nie jest skryptem (i nie jest binarką).

Żeby się wykonywał musi być "na ścieżce" czyli w katalogach określonych przez zmienną środowiskową PATH. Jak dodasz ./ to oznacza bieżący katalog, linusie w przeciwieństwie do windowsa nie szuka w bieżącym katalogu chyba że jawnie to powiesz.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.