Odpowiedzi:
Musisz także zainstalować, cygrunsrv
aby móc skonfigurować cron jako usługę systemu Windows, a następnie uruchomić cron-config
.
Jeśli chcesz, aby crona aby wysłać e-mail z dowolnego wyjścia musisz również zainstalować albo exim
albo ssmtp
(przed uruchomieniem cron-config
).
Zobacz, /usr/share/doc/Cygwin/cron-*.README
aby uzyskać więcej informacji.
Jeśli chodzi o programy bez .exe
rozszerzenia, są to prawdopodobnie skrypty powłoki pewnego typu. Jeśli spojrzysz na pierwszą linię pliku, zobaczysz, jakiego programu potrzebujesz do ich uruchomienia (np. „ #!/bin/sh
”), Więc być może możesz wykonać je z harmonogramu systemu Windows, wywołując program powłoki (np. „ C:\cygwin\bin\sh.exe -l /my/cygwin/path/to/prog
”. )
cronevents
polecenia, aby wyświetlić zdarzenia (z dziennika evengs systemu Windows). Nigdy ich nie wyrzucamy, ciąłbym kłody co kilka miesięcy.
Masz dwie możliwości:
Zainstaluj crona jako usługę systemu Windows, używając cygrunsrv:
cygrunsrv -I cron -p /usr/sbin/cron -a -n
net start cron
Uwaga, w (bardzo) starych wersjach crona należy użyć -D zamiast -n
Pliki `` inne niż .exe '' to prawdopodobnie skrypty bash, więc możesz je uruchomić za pomocą harmonogramu systemu Windows, wywołując bash w celu uruchomienia skryptu, np:
C:\cygwin\bin\bash.exe -l -c "./full-path/to/script.sh"
wskazówka dotycząca kapelusza http://linux.subogero.com/894/cron-on-cygwin/
Uruchom cygwin-setup i dodaj pakiet „cron” z kategorii „Admin”.
Uruchomimy crona jako usługę przez użytkownika SYSTEM. Dlatego słaby SYSTEM potrzebuje katalogu domowego i powłoki. Plik „/ etc / passwd” będzie je definiować.
$ mkdir /root
$ chown SYSTEM:root /root
$ mcedit /etc/passwd
SYSTEM:*:......:/root:/bin/bash
Uruchom usługę:
$ cron-config
Do you want to remove or reinstall it (yes/no) yes
Do you want to install the cron daemon as a service? (yes/no) yes
Enter the value of CYGWIN for the daemon: [ ] ntsec
Do you want the cron daemon to run as yourself? (yes/no) no
Do you want to start the cron daemon as a service now? (yes/no) yes
Lokalni użytkownicy mogą teraz definiować swoje zaplanowane zadania w ten sposób (crontab uruchomi twój ulubiony edytor):
$ crontab -e # edit your user specific cron-table HOME=/home/foo
PATH=/usr/local/bin:/usr/bin:/bin:$PATH
# testing - one per line
* * * * * touch ~/cron
@reboot ~/foo.sh
45 11 * * * ~/lunch_message_to_mates.sh
Użytkownicy domeny : to nie działa. Słaby cron nie może uruchamiać zaplanowanych zadań w imieniu użytkowników domeny na komputerze. Ale jest inny sposób: cron uruchamia również rzeczy znalezione w tabeli cron na poziomie systemu w „/ etc / crontab”. Więc wstaw tam swój plik, aby SYSTEM zrobił to we własnym imieniu:
$ touch /etc/crontab
$ chown SYSTEM /etc/crontab
$ mcedit /etc/crontab
HOME=/root
PATH=/usr/local/bin:/usr/bin:/bin:$PATH
* * * * * SYSTEM touch ~/cron
@reboot SYSTEM rm -f /tmp/.ssh*
Na koniec kilka słów o wpisach crontab. Są to ustawienia środowiska lub zaplanowane polecenia. Jak widać powyżej, na Cygwin najlepiej jest utworzyć użyteczną ścieżkę PATH. Katalog domowy i powłoka są zwykle pobierane z „/ etc / passwd”.
Jeśli chodzi o kolumny zaplanowanych poleceń, zobacz stronę podręcznika.
Jeśli niektóre wpisy crontab nie działają, najlepszym narzędziem diagnostycznym jest:
$ cronevents
Chciałem tylko dodać, że opcje crona wydają się zmieniać. Należy przekazać -n zamiast -D.
cygrunsrv -I cron -p /usr/sbin/cron -a -n
Zastosowałem instrukcje z tej odpowiedzi i zadziałało Tylko po to, aby wskazać bardziej kopiuj wklej jak odpowiedź (ponieważ procedura instalacji Cygwin jest pewnego rodzaju zaimplementowaną
metodą zapobiegania kopiowaniu i wklejaniu) Kliknij przycisk WinLogo, wpisz cmd.exe, kliknij go prawym przyciskiem myszy, wybierz " Uruchom jako administrator ”. W zachęcie cmd :
cd <directory_where_i_forgot_the setup-x86_64.exe> cygwin installer:
set package_name=cygrunsrv cron
setup-x86_64.exe -n -q -s http://cygwin.mirror.constant.com -P %package_name%
Upewnij się, że instalator nie zgłasza żadnych błędów w monicie ... Jeśli tak - prawdopodobnie masz uruchomione pliki binarne Cygwin lub nie jesteś administratorem systemu Windows lub jakiś dziwny błąd ...
Teraz w cmd promt:
C:\cygwin64\bin\cygrunsrv.exe -I cron -p /usr/sbin/cron -a -D
lub jakąkolwiek pełną ścieżkę do pliku cygrunsrv.exe i uruchom cron jako usługę Windows w wierszu polecenia cmd
net start cron
Teraz w terminalu bash uruchom crontab -e
Skonfiguruj wpis w cronie, przykład poniżej:
#sync my gdrive each 10th minute
*/10 * * * * /home/Yordan/sync_gdrive.sh
# * * * * * command to be executed
# - - - - -
# | | | | |
# | | | | +- - - - day of week (0 - 6) (Sunday=0)
# | | | +- - - - - month (1 - 12)
# | | +- - - - - - day of month (1 - 31)
# | +- - - - - - - hour (0 - 23)
# +--------------- minute
Dowiedziałem się, jak sprawić, by usługa Cygwin cron działała automatycznie po zalogowaniu się do systemu Windows 7. Oto, co zadziałało:
Za pomocą Notatnika utwórz plik C:\cygwin\bin\Cygwin_launch_crontab_service_input.txt
z zawartością no
w pierwszej i yes
drugiej linii (bez cudzysłowów). To są twoje dwie odpowiedzi na monitycron-config
.
Utwórz plik C:\cygwin\Cygwin_launch_crontab_service.bat
z zawartością:
@echo off
C:
chdir C:\cygwin\bin
bash cron-config < Cygwin_launch_crontab_service_input.txt
Dodaj skrót do następujących elementów w folderze Autostart systemu Windows:
Cygwin_launch_crontab_service.bat
Zobacz http://www.sevenforums.com/tutorials/1401-startup-programs-change.html jeśli potrzebujesz pomocy dotyczącej dodawania do Startup. BTW, możesz opcjonalnie dodać je w Startup, jeśli chcesz:
Cygwin
Serwer XWin
Pierwsza jest wykonywana
C:\cygwin\Cygwin.bat
a druga jest wykonywana
C:\cygwin\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe
Prawidłowa składnia do zainstalowania crona w cygwin jako usłudze systemu Windows to przekazanie -n jako argumentu, a nie -D :
cygrunsrv --install cron --path / usr / sbin / cron --args -n
-D zwraca błąd użycia podczas uruchamiania crona w cygwin:
$
$ cygrunsrv --install cron --path / usr / sbin / cron --args -D
$ cygrunsrv --start cron
cygrunsrv: Błąd podczas uruchamiania usługi: QueryServiceStatus: Błąd Win32 1062:
Usługa nie została uruchomiona.
$ cat /var/log/cron.log
cron: nieznana opcja - D
użycie: / usr / sbin / cron [-n] [-x [ext, sch, proc, parc, load, misc, test, bit]]
$
Poniższa strona ma dobre wyjaśnienie.
Instalacja i konfiguracja usługi Cygwin Cron w systemie Windows: https://www.davidjnice.com/cygwin_cron_service.html
PS Musiałem uruchomić terminal Cygwin64 na moim komputerze z systemem Windows 10 jako administrator, aby zainstalować cron jako usługę Windows.
Getting updatedb to work in cron on Cygwin -- debugging steps
1) Make sure cron is installed.
a) Type 'cron' tab tab and look for completion help.
You should see crontab.exe, cron-config, etc. If not install cron using setup.
2) Run cron-config. Be sure to read all the ways to diagnose cron.
3) Run crontab -e
a) Create a test entry of something simple, e.g.,
"* * * * * echo $HOME >> /tmp/mycron.log" and save it.
4) cat /tmp/mycron.log. Does it show cron environment variable HOME
every minute?
5) Is HOME correct? By default mine was /home/myusername; not what I wanted.
So, I added the entry
"HOME='/cygdrive/c/documents and settings/myusername'" to crontab.
6) Once assured the test entry works I moved on to 'updatedb' by
adding an entry in crontab.
7) Since updatedb is a script, errors of sed and find showed up in
my cron.log file. In the error line, the absolute path of sed referenced
an old version of sed.exe and not the one in /usr/bin. I tried changing my
cron PATH environment variable but because it was so long crontab
considered the (otherwise valid) change to be an error. I tried an
explicit much-shorter PATH command, including what I thought were the essential
WINDOWS paths but my cron.log file was empty. Eventually I left PATH alone and
replaced the old sed.exe in the other path with sed.exe from /usr/bin.
After that updatedb ran to completion. To reduce the number of
permission error lines I eventually ended up with this:
"# Run updatedb at 2:10am once per day skipping Sat and Sun'
"10 2 * * 1-5 /usr/bin/updatedb --localpaths='/cygdrive/c' --prunepaths='/cygdrive/c/WINDOWS'"
Notes: I ran cron-config several times throughout this process
to restart the cygwin cron daemon.
can't switch user context
mimo że wyraźnie zażądano, aby NIE używać innych kont. Zmiana konta za pomocą crona na cygwin jest najwyraźniej OBOWIĄZKOWA. Musisz powiedzieć NIE bieganiu jako siebie ...