일부 cygwin 명령은 .exe
파일이므로 표준 Windows 스케줄러로 실행할 수 있지만 다른 명령에는.exe
확장자가 없으므로 DOS에서 실행할 수 없습니다 (처럼 보입니다).
예를 들어 updatedb
밤마다 달리고 .
크론은 어떻게 작동합니까?
답변
또한 설치해야 cygrunsrv
cron을 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 스케줄러에서 실행할 수 있습니다 . )
답변
두 가지 옵션이 있습니다.
-
cygrunsrv를 사용하여 cron을 Windows 서비스로 설치합니다.
cygrunsrv -I cron -p /usr/sbin/cron -a -n net start cron
(아주) 오래된 버전의 cron에서는 -n 대신 -D를 사용해야합니다.
-
‘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 을 관리자로 실행해야 했습니다.