Pergunta

Alguns comandos do cygwin são arquivos .exe, para que possa executá-los com o do Windows Scheduler padrão, mas outros não têm uma extensão .exe por isso não pode ser executado a partir do DOS (parece).

Por exemplo, eu quero updatedb para executar todas as noites.

Como faço para tornar o trabalho cron?

Foi útil?

Solução

Você precisa também instalar cygrunsrv que você possa definir o cron-se como um serviço Windows, cron-config em seguida, executar.

Se você quiser que os trabalhos do cron para enviar e-mail de qualquer saída que você também vai precisar instalar qualquer exim ou ssmtp (antes de executar cron-config.)

Veja /usr/share/doc/Cygwin/cron-*.README para mais detalhes.

Em relação programas sem uma extensão .exe, provavelmente, são scripts shell de algum tipo. Se você olhar para a primeira linha do arquivo que você pudesse ver o programa que você precisa usar para executá-los (por exemplo, "#!/bin/sh"), para que talvez pudesse executá-los a partir das janelas do programador chamando o programa de shell (por exemplo, "C:\cygwin\bin\sh.exe -l /my/cygwin/path/to/prog ".)

Outras dicas

Você tem duas opções:

  1. Instale cron como um serviço Windows, usando cygrunsrv:

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

    Note, no (muito) versões antigas do cron você precisa usar -D vez de -n

  2. Os arquivos 'não .exe' são provavelmente bash scripts, para que possa executá-los através das janelas do programador invocando bash para executar o script, por exemplo:.

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

tip chapéu http://linux.subogero.com/894/cron- on-cygwin /

Inicie o cygwin-configuração e adicionar o pacote “cron” da categoria “Admin”.

Vamos executar cron como um serviço pelo sistema do usuário. portanto, pobres sistema precisa de um diretório home e uma concha. O arquivo “/ etc / passwd” vai defini-los.

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

A iniciar o serviço:

$ 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

usuários locais pode agora definir as suas tarefas programadas como este (crontab irá iniciar o seu 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

Os usuários do domínio : ele não funciona. Pobre cron é incapaz de executar tarefas agendadas em nome dos usuários de domínio sobre a máquina. Mas há uma outra maneira: cron também corre o material encontrado na tabela cron nível do sistema em “/ etc / crontab”. Então, insira o seu suff lá, para que o sistema faz isso em seu próprio nome:

$ 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, algumas palavras sobre as entradas crontab. Eles são ou configurações de ambiente ou comandos programados. Como visto acima, em Cygwin é melhor criar um caminho utilizável. Início dir e shell são normalmente tomadas a partir de “/ etc / passwd”.

Como para as colunas de comandos agendados consulte a página do manual.

Se determinadas entradas crontab não correr, a melhor ferramenta de diagnóstico é o seguinte:

$ cronevents

Só queria acrescentar que as opções para cron parece ter mudado. Necessidade de passar -n em vez de -D.

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

Aplicada as instruções do esta resposta e funcionou Só para apontar um mais copiar e colar como resposta (porque o procedimento de instalação cygwin é uma espécie de anti-copy-paste sábio implementado)
Clique no botão WinLogo, tipo cmd, clique o botão direito, escolha "Iniciar como Administrador". Em cmd prompt:

 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%

Certifique-se o instalador não lançar quaisquer erros no prompt ... Se ele tem - você provavelmente tem alguns binários cygwin em execução ou você não é um administrador do Windows, ou algum bug estranho ...

Agora, em cmd promt:

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

ou qualquer caminho completo do arquivo que você pode ter ao cygrunsrv.exe e iniciar o cron como serviço de janelas no cmd prompt de

 net start cron

Agora, em festa prazo de terminal crontab -e

configurar você cron entrada um exemplo abaixo:

        #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

Eu descobri como obter o serviço cron Cygwin executado automaticamente quando conectado ao Windows 7. Aqui está o que funcionou para mim:

Usando o bloco de notas, criar C:\cygwin\bin\Cygwin_launch_crontab_service_input.txt arquivo com no conteúdo na primeira linha e yes na segunda linha (sem as aspas). Estas são as suas duas respostas para prompts para cron-config.

Criar C:\cygwin\Cygwin_launch_crontab_service.bat arquivo com conteúdo:

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

Adicionar um atalho para o seguinte na pasta de inicialização do Windows: Cygwin_launch_crontab_service.bat

http://www.sevenforums.com/tutorials/1401 -startup-programas-change.html se você precisar de ajuda sobre como adicionar a inicialização. BTW, você pode, opcionalmente, adicioná-los na inicialização se você gostaria:

Cygwin

XWin Servidor

Os executa primeiro um

C:\cygwin\Cygwin.bat

e executa a segunda

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

A sintaxe correta para instalar cron em cygwin como serviço do Windows é passar -n como argumento e não D :

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

D Erro de uso retorna ao iniciar cron em cygwin:

$

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

$ cygrunsrv --start cron

cygrunsrv: Erro ao iniciar um serviço: QueryServiceStatus: erro Win32 1062:

O serviço não foi iniciado.

$ cat /var/log/cron.log

cron: desconhecido opção - D

uso: / usr / sbin / cron [-n] [-x [ext, sch, proc, parc, carga, variado, teste, mordeu]]

$

Abaixo página tem uma boa explicação.

Instalação e Configuração do Cron Serviço Cygwin no Windows: https://www.davidjnice.com/cygwin_cron_service.html

PS eu tive que correr Cygwin64 Terminal no meu 10 PC Windows como administrador para instalar cron como serviço do 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top