如何在 cygwin 中运行 cron 服务?

如何在 cygwin 中运行 cron 服务?

我已经使用 openssh、rysnc 和 cron 运行了已安装的 cygwin。我已经运行了 cygserver-config 和 cron-config

cygcheck -c | grep cron
cron                      4.1-65                       OK

cygrunsrv -Q cron
Service             : cron
Current State       : Running
Controls Accepted   : Stop
Command             : /usr/sbin/cron -n

Windows 在正确的用户环境中识别了该服务。 Windows任务管理器 Windows 事件、cron 或 cygserver 日志中没有错误。互联网上的许多资源都坚持使用 cron-config 而不是cygrunsrv -I cron -p /usr/sbin/cron -a -Dcygrunsrv -I cron -p /usr/sbin/cron --args -n。我尝试了所有这三种方法。似乎所有东西都已使用 cron-config 正确安装,但 cron 作业未运行。这是我的 crontab 的一个示例(是的,出于调试目的,它被设置为每分钟运行一次!)

crontab -l
* * * * * rsync -avz -e "ssh -i /cygdrive/c/users/path/.ssh/id_rsa" [email protected]:/var/log/path/ /cygdrive/c/destination/path/ --progress

更新:看起来 cron 正在运行并在 Windows 事件日志中生成条目。不幸的是,现在我遇到了执行和上下文错误。 错误 1 错误 2

答案1

在 crontab 中,你应该始终以完整路径运行命令;对于 rsync 来说,它应该是

/usr/bin/rsync

答案2

进一步分析问题。打开 cygwin shell 并输入

cronevents

答案3

这并未设置为每分钟运行一次

* * * * * rsync -avz -e "ssh -i /cygdrive/c/users/path/.ssh/id_rsa" [email protected]:/var/log/path/ /cygdrive/c/destination/path/ --progress

这确实设置为每分钟运行一次

*/1 * * * * rsync -avz -e "ssh -i /cygdrive/c/users/path/.ssh/id_rsa" [email protected]:/var/log/path/ /cygdrive/c/destination/path/ --progress

相关内容