Krótki przegląd: Mam skrypt, który codziennie tworzy kopię zapasową mojego repozytorium kodu źródłowego z SVN w archiwum na ten dzień. Przetestowałem skrypt i działa bardzo dobrze, o ile uruchamiam go jako sudo, z powodu własności katalogu wyjściowego.
Problem polega na tym, że chcę uruchamiać to codziennie, więc umieściłem link do niego w katalogu /etc/cron.daily. Oto zawartość katalogu.
thom@spenser:/etc/cron.daily$ ls -l
total 60
-rwxr-xr-x 1 root root 189 2011-09-14 02:21 apport
-rwxr-xr-x 1 root root 15535 2011-10-06 11:30 apt
-rwxr-xr-x 1 root root 314 2011-08-08 16:57 aptitude
lrwxrwxrwx 1 root root 24 2012-02-28 11:05 backup -> /usr/local/bin/backup.sh
-rwxr-xr-x 1 root root 502 2011-06-08 11:48 bsdmainutils
-rwxr-xr-x 1 root root 256 2011-10-06 04:04 dpkg
-rwxr-xr-x 1 root root 372 2011-10-04 16:50 logrotate
-rwxr-xr-x 1 root root 1353 2011-07-27 07:17 man-db
-rwxr-xr-x 1 root root 606 2011-08-17 09:16 mlocate
-rwxr-xr-x 1 root root 249 2011-06-24 05:36 passwd
-rwxr-xr-x 1 root root 2417 2011-07-01 17:25 popularity-contest
-rwxr-xr-x 1 root root 383 2011-09-30 15:09 samba
-rwxr-xr-x 1 root root 3594 2011-09-19 20:07 standard
thom@spenser:/etc/cron.daily$
Problem polega na tym, że po prostu nigdy nie działa. Oto uprawnienia dla tego skryptu:
thom@spenser:/etc/cron.daily$ ls -l /usr/local/bin/backup.sh
-rwxr-xr-x 1 root root 260 2012-02-28 11:03 /usr/local/bin/backup.sh
Pomysły?
Odpowiedzi:
Próbowałem tego
Odkryłem, że mój plik update.ubuntu nie pojawił się. Zauważyłem również, że mój plik ma rozszerzenie (ma w nim kropkę).
Kroki, aby to naprawić.
run-parts --test /etc/cron.daily
tym razem pojawiła się moja teczka!źródło
Może to być jedna z kilku rzeczy:
Ścieżka rootowania:
src: https://help.ubuntu.com/community/CronHowto
Lub po prostu użyj pełnych ścieżek do każdego polecenia w skrypcie:
/bin/ls
zamiastls
na przykład. (which ls
w linii poleceń dla ścieżek).Zgłoszono tutaj dziwny błąd dotyczący kropek w nazwie pliku . Może rozciągać się na plik, który łączysz, choć wydaje się to mało prawdopodobne.
Czy zapisujesz dane wyjściowe z pliku kopii zapasowej? Umieść coś takiego w pierwszym wierszu, aby ustalić, czy w ogóle nie działa, czy działa, ale w pewnym momencie ulega awarii.
/bin/echo "Attempting to run backup" >> /path-to-home/backup.log
Alternatywnie spróbuj dodać skrypt bezpośrednio do pliku crontab:
będzie działać o 15:30 każdego dnia, jeśli maszyna jest włączona. użyj * * * * * podczas testowania, aby uruchamiać się raz na minutę, aż zacznie działać.
źródło
Grep syslog dla wiadomości takich jak;
pliki muszą być ograniczone do (wystarczające) w 644):
źródło