Question

Certaines commandes Cygwin sont des fichiers .exe, afin que vous puissiez les exécuter avec le standard de Windows Scheduler, mais d'autres n'ont pas une extension de .exe ne peut donc pas être exécuté à partir du DOS (il semble).

Par exemple, je veux updatedb à courir tous les soirs.

Comment puis-je faire le travail cron?

Était-ce utile?

La solution

Vous devez installer également cygrunsrv de sorte que vous pouvez définir Cron comme un service Windows, puis exécutez cron-config.

Si vous voulez que les crontab pour envoyer un courrier électronique de toute sortie, vous aurez également besoin d'installer soit exim ou ssmtp (avant d'exécuter cron-config.)

Voir /usr/share/doc/Cygwin/cron-*.README pour plus de détails.

En ce qui concerne les programmes sans extension .exe, ils sont probablement des scripts shell d'un certain type. Si vous regardez la première ligne du fichier que vous pouvez voir ce programme que vous devez utiliser pour les exécuter (par exemple, « #!/bin/sh »), de sorte que vous pourriez peut-être les exécuter à partir du planificateur Windows en appelant le programme shell (par exemple, « C:\cygwin\bin\sh.exe -l /my/cygwin/path/to/prog ».)

Autres conseils

Vous avez deux options:

  1. Installer Cron en tant que service Windows, en utilisant cygrunsrv:

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

    Note, en (très) anciennes versions de Cron vous devez utiliser -D au lieu de -n

  2. Les fichiers 'non .exe' sont probablement des scripts bash, afin que vous puissiez les exécuter via le planificateur Windows en appelant bash pour exécuter le script, par exemple:.

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

Pointe du chapeau http://linux.subogero.com/894/cron- sur Cygwin /

Démarrez le Cygwin-setup et ajouter le package « cron » de la catégorie « Admin ».

Nous courons Cron en tant que service par l'utilisateur SYSTEM. Une mauvaise SYSTEM a donc besoin d'un répertoire et une coquille. Le fichier « / etc / passwd » va les définir.

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

Le début du service:

$ 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

Les utilisateurs locaux peuvent maintenant définir leurs tâches planifiées comme celui-ci (crontab va commencer votre éditeur préféré):

$ 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

Les utilisateurs du domaine : il ne fonctionne pas. Cron pauvres ne parvient pas à exécuter des tâches planifiées pour le compte des utilisateurs de domaine sur la machine. Mais il y a une autre façon: gère également des trucs Cron trouvés dans la table cron niveau du système dans « / etc / crontab ». Donc, insérez votre suff là, afin que le système qu'il fait en son nom propre:

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

Enfin quelques mots sur les entrées crontab. Ils sont soit des paramètres de l'environnement ou des commandes planifiées. Comme on le voit ci-dessus, sur Cygwin il est préférable de créer un chemin utilisable. Accueil dir et la coquille sont normalement prises à partir « / etc / passwd ».

Quant aux colonnes de commandes programmées voir la page de manuel.

Si certaines entrées crontab ne fonctionnent pas, le meilleur outil de diagnostic est ceci:

$ cronevents

Je voulais juste ajouter que les options Cron semblent avoir changé. Vous avez besoin de passer -n plutôt que -D.

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

appliqué les instructions de cette réponse et cela a fonctionné Juste pour signaler une plus copier coller comme réponse (parce que cygwin procédure d'installation est une sorte d'anti-copier-coller sage mis en œuvre)
Cliquez sur le bouton WinLogo, tapez cmd.exe, clic droit, choisissez « Démarrer en tant qu'administrateur ». cmd invite:

 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%

Assurez-vous le programme d'installation ne jette aucune erreur dans l'invite ... Si elle a - vous avez probablement quelques Cygwin en cours d'exécution ou que vous n'êtes pas un administrateur Windows ou un bug bizarre ...

cmd PROMT:

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

ou tout autre chemin complet du fichier que vous pourriez avoir à cygrunsrv.exe et démarrer le Cron comme service Windows dans l'invite cmd

 net start cron

bash borne run      crontab -e

vous mettre en place l'entrée d'un Cron exemple ci-dessous:

        #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

Je me suis dit comment obtenir le service Cron Cygwin en cours d'exécution automatiquement lorsque je me suis connecté à Windows 7. Voici ce qui a fonctionné pour moi:

En utilisant le Bloc-notes, créez le fichier C:\cygwin\bin\Cygwin_launch_crontab_service_input.txt avec no contenu sur la première ligne et yes sur la deuxième ligne (sans les guillemets). Ce sont vos deux réponses aux invites pour cron-config.

Créer un fichier C:\cygwin\Cygwin_launch_crontab_service.bat avec le contenu:

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

Ajouter un raccourci vers le suivant dans le dossier de démarrage de Windows: Cygwin_launch_crontab_service.bat

Voir http://www.sevenforums.com/tutorials/1401 -startup-programmes-change.html si vous avez besoin d'aide sur la façon d'ajouter au démarrage. BTW, vous pouvez éventuellement ajouter ces dans le démarrage si vous voulez:

Cygwin

XWin serveur

Le premier exécute

C:\cygwin\Cygwin.bat

et la seconde exécute

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

La syntaxe correcte pour installer Cron Cygwin comme service Windows est de passer -n comme argument et pas -D :

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

-D renvoie une erreur d'utilisation lors du démarrage Cron Cygwin:

$

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

$ cygrunsrv --start Cron

cygrunsrv: Erreur lors du démarrage d'un service: QueryServiceStatus: erreur Win32 1062:

Le service n'a pas été démarré.

$ cat /var/log/cron.log

Cron: option inconnue - D

Utilisation: / usr / sbin / Cron [-n] [-x ext [, sch, proc, parc, charge, misc, test, bit]]

$

Ci-dessous la page a une bonne explication.

Installation et configuration du Cygwin Cron service dans Windows: https://www.davidjnice.com/cygwin_cron_service.html

PS Je devais courir Cygwin64 Terminal sur mon Windows 10 PC en tant qu'administrateur pour installer Cron en tant que service 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.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top