场景:
由于要通过ssh做异地备份,我这边安装了cygwin以及sshd/cron相应的包,安装后制定了备份脚本和备份任务,但发现定时任务没有按照规定的时间执行。首先想到的肯定是cron服务是不是没启动。经过检查发现,仅仅安装了cron包还不行,需要配置windows下cron服务(和sshd一样),配置完服务,发现依旧无法启动。
报错信息:
2017/05/12 09:38:58 [SYSTEM] cron: PID 3588: Possible duplicate cygwin1.dll: /cygdrive/c/Program Files (x86)/ICW/bin/cygwin1.dll.
2017/05/12 09:38:58 [SYSTEM] /cygdrive/c/cygwin/usr/sbin/cron: PID 3400: (CRON) DEATH (can't open or create /var/run/cron.pid: No such file or directory)
2017/05/12 09:38:59 [SYSTEM] cron: PID 3004: `cron' service stopped, exit status: 1
详细处理步骤:
1、配置cron服务
cygrunsrv -I cron -p /usr/sbin/cron -a -n
2、启动cron服务
cygrunsrv -S cron
3、查看启动日志
/usr/bin/cronevents.exe
2017/05/12 09:38:58 [SYSTEM] cron: PID 3588: Possible duplicate cygwin1.dll: /cygdrive/c/Program Files (x86)/ICW/bin/cygwin1.dll.
2017/05/12 09:38:58 [SYSTEM] /cygdrive/c/cygwin/usr/sbin/cron: PID 3400: (CRON) DEATH (can't open or create /var/run/cron.pid: No such file or directory)
2017/05/12 09:38:59 [SYSTEM] cron: PID 3004: `cron' service stopped, exit status: 1
(由于安装软件cygwin1.dll冲突所致,需要将其暂时移除即可)
4、将/cygdrive/c/Program Files (x86)/ICW/bin/cygwin1.dll重命名
mv /cygdrive/c/'Program Files (x86)'/ICW/bin/cygwin1.dll /cygdrive/c/'Program Files (x86)'/ICW/bin/cygwin1.dll_bak
5、再次启动Cron服务
cygrunsrv -S cron
正常启动
2017/05/12 09:45:35 [SYSTEM] /usr/sbin/cron: PID 3260: (CRON) STARTUP (V5.0)
2017/05/12 09:45:36 [SYSTEM] cron: PID 4008: `cron' service started
6、知识扩展——cygrunsrv参数说明:
-I: 安装服务
-R:删除服务
-S:启动服务
-E:停止服务
-Q:查询服务
-L:显示所有服务
安装服务的参数:
-p:指定服务程序路径
-a:指定服务程序命令参数
-e:指定服务程序的环境变量
-d:服务的显示名称