[windows] Windows의 Cygwin에서 crontab을 어떻게 실행합니까?

일부 cygwin 명령은 .exe파일이므로 표준 Windows 스케줄러로 실행할 수 있지만 다른 명령에는.exe 확장자가 없으므로 DOS에서 실행할 수 없습니다 (처럼 보입니다).

예를 들어 updatedb 밤마다 달리고 .

크론은 어떻게 작동합니까?



답변

또한 설치해야 cygrunsrvcron을 Windows 서비스로 설정 한 다음 실행할 수 있습니다.cron-config .

크론 작업이 출력의 이메일을 보내도록하려면 exim또는 ssmtp(실행하기 전에) 중 하나를 설치해야합니다 cron-config.

자세한 내용은를 참조 /usr/share/doc/Cygwin/cron-*.README하십시오.

.exe확장 프로그램이없는 프로그램 은 아마도 어떤 유형의 쉘 스크립트 일 것입니다. 파일의 첫 번째 줄을 보면 파일을 실행하는 데 사용해야하는 프로그램 (예 : ” #!/bin/sh“)을 알 수 있으므로 셸 프로그램 (예 : ” C:\cygwin\bin\sh.exe -l /my/cygwin/path/to/prog“) 을 호출하여 Windows 스케줄러에서 실행할 수 있습니다 . )


답변

두 가지 옵션이 있습니다.

  1. cygrunsrv를 사용하여 cron을 Windows 서비스로 설치합니다.

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

    (아주) 오래된 버전의 cron에서는 -n 대신 -D를 사용해야합니다.

  2. ‘non .exe’파일은 아마도 bash 스크립트 일 것이므로 bash를 호출하여 스크립트를 실행하여 Windows 스케줄러를 통해 실행할 수 있습니다. 예 :

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

답변

모자 팁 http://linux.subogero.com/894/cron-on-cygwin/

cygwin-setup을 시작하고 “Admin”범주에서 “cron”패키지를 추가합니다.

SYSTEM 사용자가 cron을 서비스로 실행합니다. 따라서 불량 시스템에는 홈 디렉토리와 쉘이 필요합니다. “/ etc / passwd”파일이이를 정의합니다.

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

서비스 시작 :

$ 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

이제 로컬 사용자 는 다음과 같이 예약 된 작업을 정의 수 있습니다 (crontab에서 선호하는 편집기를 시작합니다).

$ 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

도메인 사용자 : 작동하지 않습니다. 불량 cron은 시스템의 도메인 사용자를 대신하여 예약 된 작업을 실행할 수 없습니다. 그러나 또 다른 방법이 있습니다. cron은“/ etc / crontab”의 시스템 수준 cron 테이블에있는 것들을 실행합니다. 따라서 거기에 서프를 삽입하여 SYSTEM이 자체적으로 수행하도록합니다.

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

마지막으로 crontab 항목에 대한 몇 마디. 환경 설정 또는 예약 된 명령입니다. 위에서 볼 수 있듯이 Cygwin에서는 사용 가능한 PATH를 만드는 것이 가장 좋습니다. 홈 디렉토리와 쉘은 일반적으로“/ etc / passwd”에서 가져옵니다.

예약 된 명령 열에 대해서는 매뉴얼 페이지를 참조하십시오.

특정 crontab 항목이 실행되지 않는 경우 가장 좋은 진단 도구는 다음과 같습니다.

$ cronevents


답변

cron에 대한 옵션이 변경된 것처럼 추가하고 싶었습니다. -D가 아닌 -n을 전달해야합니다.

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


답변

이 답변 의 지침을 적용하고 답변 과 같은 더 많은 복사 붙여 넣기를 지적하기 위해 작동
했습니다. 관리자로 시작 “. 에서는 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%

설치 프로그램이 프롬프트에 오류를 표시하지 않는지 확인하십시오. 만약 그렇다면-당신은 아마도 cygwin 바이너리가 실행 중이거나 Windows 관리자가 아니거나 이상한 버그 일 것입니다 …

이제 cmd promt에서 :

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

또는 cygrunsrv.exe에 대한 전체 파일 경로와 cmd 프롬프트에서 cron을 Windows 서비스로 시작하십시오.

 net start cron

이제 bash에서 터미널에서 crontab -e를 실행하십시오.

cron 항목을 아래 예제로 설정하십시오.

        #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


답변

Windows 7에 로그온 할 때 Cygwin cron 서비스를 자동으로 실행하는 방법을 알아 냈습니다. 다음은 저에게 효과적이었습니다.

메모장을 사용 C:\cygwin\bin\Cygwin_launch_crontab_service_input.txt하여 콘텐츠가있는 파일 만들기no 하여 첫 번째 줄과 yes두 번째 줄에 이있는 (따옴표 제외). 에 대한 프롬프트에 대한 두 가지 응답입니다 cron-config.

파일 생성 C:\cygwin\Cygwin_launch_crontab_service.bat콘텐츠가있는 :

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

Windows 시작 폴더에서 다음에 바로 가기를 추가합니다.
Cygwin_launch_crontab_service.bat

보다 Startup에 추가하는 방법에 대한 도움이 필요하면 http://www.sevenforums.com/tutorials/1401-startup-programs-change.html을 하십시오 . BTW, 원하는 경우 Startup에서 선택적으로 추가 할 수 있습니다.

Cygwin

XWin 서버

첫 번째 실행

C:\cygwin\Cygwin.bat

두 번째는

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


답변

cygwin에 Windows 서비스로 cron 을 설치하는 올바른 구문 은 -D가 아닌 -n 을 인수 로 전달하는 것입니다. .

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

-D cron을 시작할 때 사용 오류를 반환합니다. cygwin에서 을 .

$

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

$ cygrunsrv-cron 시작

cygrunsrv : 서비스 시작 오류 : QueryServiceStatus : Win32 오류 1062 :

서비스가 시작되지 않았습니다.

$ cat /var/log/cron.log

cron : 알 수없는 옵션-D

사용법 : / usr / sbin / cron [-n] [-x [ext, sch, proc, parc, load, misc, test, bit]]

$

아래 페이지에는 좋은 설명이 있습니다.

Windows에서 Cygwin Cron 서비스 설치 및 구성 :
https://www.davidjnice.com/cygwin_cron_service.html

추신 : cron 을 Windows 서비스 로 설치하려면 Windows 10 PC에서 Cygwin64 Terminal 을 관리자로 실행해야 했습니다.