Mam problem z zadaniami crona. Poprzednio ten skrypt działał dobrze na serwerze Mac OS X 10.6, ale po zainicjowaniu go na Lion (klient) skrypt przestał działać.
Zasadniczo to .bat
plik wywołuje a jar
plik (który wywołuje pętlę mysqldump
polecenia) do tworzenia kopii zapasowych kilku baz danych na kilku serwerach i działa doskonale, jeśli jest uruchamiany przez powłokę.
cd /Users/nameoftheuser/Desktop/backupper
/usr/bin/java -cp .:Backupper.jar:lib/mail.jar backupper.Main "/Users/nameoftheuser/Desktop/backupper/listasiti.txt" "/Users/nameofthe/Desktop/backupper/config.properties
Ale jeśli cron uruchomi to samo .bat
plik, wygenerowane kopie zapasowe bazy danych to 0 bajtów.
Wpis crona to:
0 0 sh /Users/path/to/file.bat
Uważam, że problem polega na tym, że cron nie działa jak root
. Albo co jeszcze?
root
crontab, zobacz: superuser.com/questions/344398/… - także: jak początkowo edytujesz crontab? Czy wywołujesz skrypt za pomocą powłokish …
zbyt?cd /Users/nameoftheuser/Desktop/backupper /usr/bin/java -cp .:Backupper.jar:lib/mail.jar backupper.Main "/Users/nameoftheuser/Desktop/backupper/listasiti.txt" "/Users/nameofthe/Desktop/backupper/config.properties"
- Edytowałem crontab za pomocą nano, zalogowanego w terminalu z tym samym użytkownikiem, w którym przechowywany jest skrypt, używając kart zamiast spacji. Skrypt uruchamiany przez powłokę jest bez sh, ale nawet jeśli napisałem to w cronie, nie działa. Zapomniałem powiedzieć, że zainstalowałem środowisko Java, ponieważ w Lionie nie ma zainstalowanego systemu operacyjnego.crontab -e
?Backupper.jar
? Powinieneś go prawdopodobnie zdebugować i zobaczyć, dlaczego pliki mają tylko 0 bajtów.Odpowiedzi:
Zrobiłbym to w systemie OS X i użyłbym launchd zamiast crona. Robisz to, pisząc LaunchAgent. Jest to w zasadzie plik .plist w katalogu / Library / LaunchAgents lub ~ / Library / LaunchAgents, który informuje launchd o tym, jaki skrypt ma zostać uruchomiony i jaki powinien być mechanizm uruchamiania skryptu.
launchd pozwala kontrolować, czy skrypt powinien być uruchamiany przez zalogowanego użytkownika czy użytkownika root.
Lingon.app to dobry sposób na rozpoczęcie pracy z LaunchAgents i zarządzanie nim.
Strona podręcznika Apple Developer Connection może również pomóc.
źródło