Skonfigurowałem plik crontab użytkownika w następujący sposób:
*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh
Ale się nie wykona. Czekałem około 10-15 minut. Dlaczego?
Polecenie auto-update.sh działa łatwo, jeśli jest wykonywane ręcznie. Jak mogę rozdzielić łańcuch wykonawczy i uruchomić mój skrypt z crona?
KeepAlive
iQueueDirectories
).Odpowiedzi:
Środowisko, w którym działa zadanie cron, jest nieco inne niż interaktywna powłoka; prawdopodobnie skrypt działa, ale nie powiedzie się. Jedną z największych różnic jest to, że dla zadań cron domyślna ŚCIEŻKA to po prostu „/ usr / bin: / bin”, więc jeśli użyjesz poleceń, których nie ma w / usr / bin lub / bin, nie będą one znalezione, chyba że skrypt albo ustawi własną PATH, albo nie podaje wyraźnych ścieżek do poleceń. Inną dużą różnicą jest to, że nie jest ona połączona z sesją interaktywną, więc jeśli spróbuje zrobić coś interaktywnego (odczyt z terminala itp.), To się nie powiedzie. Spróbuj zmienić wpis cron na:
... i sprawdź, czy w dzienniku pojawi się coś informacyjnego.
źródło
ps -ax | grep [c]ron
i sprawdziłbym, czy wyświetla listę uruchomionych demonów cron (/ usr / sbin / cron). Jeśli tak, wypróbuj test rejestratora bmike. W każdym razie sprawdź dzienniki (/var/log/system.log i element „Wszystkie wiadomości” w narzędziu konsoli) i sprawdź, czy jest coś istotnego.Trudno powiedzieć, ale co, jeśli dodasz drugie zadanie crona do wykonywania co około 5 minut i wywoła ono jakieś narzędzie zbudowane w systemie, które rejestruje wiadomości do system.log?
W ten sposób będziesz wiedział, że cron działa dla danego użytkownika i może skupić się na uruchomieniu crona lub naprawieniu skryptu, aby działał w środowisku ograniczonego crona. (Możesz spojrzeć na zegar ścienny i wybrać kilka razy, które wkrótce się pojawią, a nawet kilka następnych minut - np. Edycja o 12:34 wstaw 35, 36, 37, 38 dla minut, aby uruchomić i zapisać plik cron .)
źródło
Od dawna zadajesz to pytanie, ale wydaje się, że w tym wątku nie znalazło się żadne rozwiązanie.
W zależności od sposobu tworzenia crontab użytkownika może być konieczne wykonanie tego po edycji:
Aby sprawdzić, czy nowy crontab (również po jego modyfikacji) został aktywowany, sprawdź za pomocą:
źródło
Miałem ten sam problem. Musisz dodać ścieżkę do skryptu bash:
źródło
Miałem ten sam problem. Zniknęło po dodaniu nowego wiersza po mojej pracy w pliku crontab (jestem w sumie crontab n00b, więc nie mam pojęcia, czy takie zachowanie jest powszechnie znane, czy nie).
źródło