Pregunta

Algunos de los comandos de cygwin .exe los archivos, por lo que se pueden ejecutar con el estándar Programador de Windows, pero otros no tienen un .exe extensión, por lo que no se pueden ejecutar de DOS (parece).

Por ejemplo yo quiero updatedb para ejecutar todas las noches.

¿Cómo puedo hacer cron trabajo?

¿Fue útil?

Solución

Es necesario instalar también cygrunsrv lo que puede establecer cron como un servicio de Windows, a continuación, ejecutar cron-config.

Si desea que los trabajos de cron para enviar correo electrónico de cualquier salida que también tendrá que instalar cualquiera exim o ssmtp (antes de ejecutar cron-config.)

Vea /usr/share/doc/Cygwin/cron-*.README para más detalles.

En cuanto a los programas sin una extensión .exe, son probablemente los scripts de shell de algún tipo. Si nos fijamos en la primera línea del archivo se podía ver qué programa se debe utilizar para ejecutar ellos (por ejemplo, "#!/bin/sh"), por lo que quizá ellos posible ejecutar desde el Programador de Windows mediante una llamada al programa de shell (por ejemplo, "C:\cygwin\bin\sh.exe -l /my/cygwin/path/to/prog ".)

Otros consejos

Existen dos opciones:

  1. Instalar cron como un servicio de Windows, utilizando cygrunsrv:

    cygrunsrv -I cron -p /usr/sbin/cron -a -n
    
    net start cron
    
      

    Tenga en cuenta, en el (muy) viejas versiones de cron es necesario utilizar -D en lugar de -n

  2. Los ficheros '.exe' no son probablemente scripts bash, para que pueda ejecutarlos a través del programador de Windows mediante la invocación de bash para ejecutar la secuencia de comandos, por ejemplo:.

    C:\cygwin\bin\bash.exe -l -c "./full-path/to/script.sh"
    

http://linux.subogero.com/894/cron- en cygwin /

Iniciar el cygwin-configuración y añadir el paquete “cron” de la categoría “Admin”.

Vamos a correr cron como un servicio por el sistema del usuario. Por lo tanto, deficiente sistema necesita un directorio de inicio y una concha. El archivo “/ etc / passwd” definirá ellos.

$ mkdir /root
$ chown SYSTEM:root /root
$ mcedit /etc/passwd
SYSTEM:*:......:/root:/bin/bash

El iniciar el servicio:

$ 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

Los usuarios locales ahora puede definir sus tareas programadas como esto (crontab comenzará su editor favorito):

$ 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

usuarios de dominio : no funciona. Pobres cron no pude ejecutar las tareas programadas en nombre de los usuarios del dominio de la máquina. Pero hay otra manera: cron también dirige la materia que se encuentra en la tabla de comandos a nivel de sistema en “/ etc / crontab”. Así que insertar su suf allí, para que el sistema lo hace en su propio nombre:

$ 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*

Finalmente unas palabras sobre las entradas crontab. Son ya sea la configuración del entorno o comandos programados. Como se ha visto anteriormente, en Cygwin lo mejor es crear un camino utilizable. dir Inicio y shell normalmente se toman de “/ etc / passwd”.

En cuanto a las columnas de comandos programados consulte la página de manual.

Si ciertas entradas crontab no se ejecutan, la mejor herramienta de diagnóstico es la siguiente:

$ cronevents

Sólo quería añadir que las opciones de Cron parecen haber cambiado. Necesita para pasar -n en lugar de -D.

cygrunsrv -I cron -p /usr/sbin/cron -a -n

Se aplica las instrucciones de esta respuesta y funcionó Sólo para señalar una copia más pegar como respuesta (porque cygwin procedimiento de instalación es una especie de anti-copiar-pegar en práctica en cuanto a)
Haga clic en el botón WinLogo, escriba cmd.exe, haga clic derecho, seleccione "Start como administrador". En cmd mensaje:

 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%

Asegúrese de que el instalador no lanza ningún error en el símbolo ... Si es así - es probable que tenga algunos binarios cygwin correr o no eres un administrador de Windows, o algún insecto extraño ...

Ahora en cmd puntual:

 C:\cygwin64\bin\cygrunsrv.exe -I cron -p /usr/sbin/cron -a -D   

o lo que sea ruta completa del archivo que pueda tener a la cygrunsrv.exe y iniciar el cron como servicio de Windows en el cmd

 net start cron

Ahora en golpe terminal ejecutar      crontab -e

establecido que la entrada cron un ejemplo a continuación:

        #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

Me di cuenta de cómo obtener el Cygwin servicio de cron se ejecuta automáticamente cuando inicie sesión en Windows 7.He aquí lo que funcionó para mí:

Con el Bloc de notas, crear el archivo C:\cygwin\bin\Cygwin_launch_crontab_service_input.txt con un contenido de no en la primera línea y yes en la segunda línea (sin las comillas).Estas son las dos respuestas a peticiones de cron-config.

Crear archivo C:\cygwin\Cygwin_launch_crontab_service.bat con el contenido:

@echo off
C:
chdir C:\cygwin\bin
bash  cron-config < Cygwin_launch_crontab_service_input.txt

Agregar un acceso directo a la siguiente en la carpeta de Inicio de Windows:Cygwin_launch_crontab_service.bat

Ver http://www.sevenforums.com/tutorials/1401-startup-programs-change.html si necesita ayuda sobre cómo agregar a Inicio.Por CIERTO, usted lo desea, puede agregar estas en el Inicio, si usted desea:

Cygwin

XWin Servidor

El primero se ejecuta

C:\cygwin\Cygwin.bat

y el segundo ejecuta

C:\cygwin\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe

La sintaxis correcta para instalar cron en cygwin como servicio de Windows es pasar -n como argumento y no D

cygrunsrv --install cron --path / usr / sbin / cron --args -n

-D devuelve error de uso al iniciar cron en cygwin:

$

$ cygrunsrv --install cron --path / usr / sbin / cron --args -D

$ cygrunsrv --start cron

cygrunsrv: Error al iniciar un servicio: QueryServiceStatus: error de Win32 1062:

El servicio no se ha iniciado.

$ cat /var/log/cron.log

cron: opción desconocida - D

Uso: / usr / sbin / cron [-n] [-x [ext, sch, proc, parc, carga, misc, test, bit]]

$

A continuación, la página tiene una buena explicación.

Instalación y Configuración del servicio Cron Cygwin en Windows: https://www.davidjnice.com/cygwin_cron_service.html

PS que tenía que ejecutar Cygwin64 Terminal en mis 10 PC con Windows como administrador para poder instalar cron como servicio de 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.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top