Risposte:
È inoltre necessario installare in cygrunsrv
modo da poter impostare cron come servizio Windows, quindi eseguire cron-config
.
Se desideri che i cron job inviino email di qualsiasi output, dovrai anche installare exim
o ssmtp
(prima di eseguire cron-config
).
Vedi /usr/share/doc/Cygwin/cron-*.README
per maggiori dettagli.
Per quanto riguarda i programmi senza .exe
estensione, sono probabilmente script di shell di qualche tipo. Se guardi la prima riga del file potresti vedere quale programma devi usare per eseguirli (es. " #!/bin/sh
"), Quindi potresti forse eseguirli dallo scheduler di Windows chiamando il programma shell (es. " C:\cygwin\bin\sh.exe -l /my/cygwin/path/to/prog
". )
cronevents
comando per visualizzare gli eventi (dal registro di Windows evengs). Non vengono mai scartati, potrei i tronchi ogni pochi mesi.
Hai due opzioni:
Installa cron come servizio Windows, usando cygrunsrv:
cygrunsrv -I cron -p /usr/sbin/cron -a -n
net start cron
Nota, nelle (molto) vecchie versioni di cron devi usare -D invece di -n
I file 'non .exe' sono probabilmente script bash, quindi puoi eseguirli tramite lo scheduler di Windows invocando bash per eseguire lo script, ad esempio:
C:\cygwin\bin\bash.exe -l -c "./full-path/to/script.sh"
cappello a punta http://linux.subogero.com/894/cron-on-cygwin/
Avvia cygwin-setup e aggiungi il pacchetto "cron" dalla categoria "Admin".
Eseguiremo cron come servizio dall'utente SYSTEM. Un povero SYSTEM necessita quindi di una directory home e di una shell. Il file "/ etc / passwd" li definirà.
$ mkdir /root
$ chown SYSTEM:root /root
$ mcedit /etc/passwd
SYSTEM:*:......:/root:/bin/bash
L'avvio del servizio:
$ 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
Gli utenti locali ora possono definire le loro attività pianificate in questo modo (crontab avvierà il tuo editor preferito):
$ 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
Utenti di dominio : non funziona. Un cron scadente non è in grado di eseguire attività pianificate per conto degli utenti del dominio sulla macchina. Ma c'è un altro modo: cron esegue anche cose trovate nella tabella cron a livello di sistema in "/ etc / crontab". Quindi inserisci qui il tuo suff, in modo che SYSTEM lo faccia per proprio conto:
$ 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*
Infine alcune parole sulle voci crontab. Sono impostazioni dell'ambiente o comandi pianificati. Come visto sopra, su Cygwin è meglio creare un PATH utilizzabile. La directory home e la shell sono normalmente prese da "/ etc / passwd".
Per quanto riguarda le colonne dei comandi schedulati vedere la pagina di manuale.
Se alcune voci di crontab non vengono eseguite, il miglior strumento di diagnostica è questo:
$ cronevents
Volevo solo aggiungere che le opzioni per cron sembrano essere cambiate. È necessario passare -n anziché -D.
cygrunsrv -I cron -p /usr/sbin/cron -a -n
Applicato le istruzioni da questa risposta e ha funzionato solo per indicare una più copia incolla come risposta (perché la procedura di installazione di cygwin è una sorta di anti-copia-incolla implementata)
Fare clic sul pulsante WinLogo, digitare cmd.exe, fare clic con il tasto destro, scegliere " Avvia come amministratore ". Nel prompt di 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%
Assicurati che il programma di installazione non generi errori nel prompt ... In caso affermativo, probabilmente hai alcuni binari di cygwin in esecuzione o non sei un amministratore di Windows o qualche bug strano ...
Ora in cmd promt:
C:\cygwin64\bin\cygrunsrv.exe -I cron -p /usr/sbin/cron -a -D
o qualsiasi percorso completo del file che potresti avere per cygrunsrv.exe e avvia il cron come servizio di Windows nel prompt di cmd
net start cron
Ora nel terminale bash esegui crontab -e
imposta la tua voce cron un esempio sotto:
#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
Ho capito come far funzionare automaticamente il servizio cron di Cygwin quando ho effettuato l'accesso a Windows 7. Ecco cosa ha funzionato per me:
Utilizzando Blocco note, crea un file C:\cygwin\bin\Cygwin_launch_crontab_service_input.txt
con il contenuto no
sulla prima riga e yes
sulla seconda riga (senza virgolette). Queste sono le tue due risposte alle richieste di cron-config
.
Crea file C:\cygwin\Cygwin_launch_crontab_service.bat
con contenuto:
@echo off
C:
chdir C:\cygwin\bin
bash cron-config < Cygwin_launch_crontab_service_input.txt
Aggiungi un collegamento a quanto segue nella cartella Avvio di Windows:
Cygwin_launch_crontab_service.bat
Vedi http://www.sevenforums.com/tutorials/1401-startup-programs-change.html se hai bisogno di aiuto su come aggiungere a Startup. BTW, puoi opzionalmente aggiungerli in Startup se desideri:
Cygwin
XWin Server
Il primo viene eseguito
C:\cygwin\Cygwin.bat
e il secondo viene eseguito
C:\cygwin\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe
La sintassi corretta per installare cron in cygwin come servizio Windows è passare -n come argomento e non -D :
cygrunsrv --install cron --path / usr / sbin / cron --args -n
-D restituisce un errore di utilizzo all'avvio di cron in cygwin:
$
$ cygrunsrv --install cron --path / usr / sbin / cron --args -D
$ cygrunsrv --start cron
cygrunsrv: Errore durante l'avvio di un servizio: QueryServiceStatus: Win32 errore 1062:
Il servizio non è stato avviato.
$ cat /var/log/cron.log
cron: opzione sconosciuta - D
utilizzo: / usr / sbin / cron [-n] [-x [ext, sch, proc, parc, load, misc, test, bit]]
$
La pagina sotto ha una buona spiegazione.
Installazione e configurazione del servizio Cygwin Cron in Windows: https://www.davidjnice.com/cygwin_cron_service.html
PS Ho dovuto eseguire Cygwin64 Terminal sul mio PC Windows 10 come amministratore per installare cron come servizio 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
anche se è stata fatta esplicita richiesta di NON usare altri account. Il cambio di account con cron su cygwin è apparentemente OBBLIGATORIO. Devi dire NO a correre come te stesso ...