Answers:
您还需要安装,cygrunsrv
以便可以将cron设置为Windows服务,然后运行cron-config
。
如果您希望cron作业发送任何输出的电子邮件,则还需要安装exim
或ssmtp
(在运行之前cron-config
)。
请参阅/usr/share/doc/Cygwin/cron-*.README
以获取更多详细信息。
对于没有.exe
扩展名的程序,它们可能是某种类型的Shell脚本。如果您查看文件的第一行,则可以看到运行它们所需的程序(例如“ #!/bin/sh
”),因此您可以通过调用Shell程序(例如“ ”)从Windows调度程序中执行它们C:\cygwin\bin\sh.exe -l /my/cygwin/path/to/prog
。 )
cronevents
命令查看事件(从Windows Evengs日志)。他们永远不会被丢弃,我会每隔几个月修剪一下原木。
您有两种选择:
使用cygrunsrv将cron安装为Windows服务:
cygrunsrv -I cron -p /usr/sbin/cron -a -n
net start cron
注意,在(非常旧的)cron版本中,您需要使用-D而不是-n
“ .exe”文件可能是bash脚本,因此您可以通过Windows调度程序调用bash运行脚本来运行它们,例如:
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作为服务运行。因此,较差的SYSTEM需要一个主目录和一个Shell。“ / 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无法代表计算机上的域用户运行计划的任务。但是还有另一种方法: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
应用了此答案中的说明,它起作用了,只是指出了诸如答案之类的更多复制粘贴(因为cygwin安装过程是一种明智的反复制粘贴实现)。
单击WinLogo按钮,键入cmd.exe,右键单击它,选择“以管理员身份启动”。在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
现在重击终端中运行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
参见http://www.sevenforums.com/tutorials/1401-startup-programs-change.html如果您需要有关如何添加到启动的帮助,。顺便说一句,如果需要,您可以选择在启动中添加这些:
西格温
XWin服务器
第一个执行
C:\cygwin\Cygwin.bat
第二个执行
C:\cygwin\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe
在cygwin中将cron安装为Windows服务的正确语法是将-n作为参数而不是-D传递:
cygrunsrv-安装cron-路径/ usr / sbin / cron --args -n
在cygwin中启动 cron时 -D返回使用错误:
$
$ cygrunsrv-安装cron-路径/ usr / sbin / cron --args -D
$ cygrunsrv-启动cron
cygrunsrv:启动服务时出错:QueryServiceStatus:Win32错误1062:
该服务尚未启动。
$猫/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
PS我必须以管理员身份在Windows 10 PC上运行Cygwin64 Terminal,才能将cron安装为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.
can't switch user context
即使明确提出不使用其他帐户的请求,也会因含糊和矛盾而失败。在cygwin上使用cron进行帐户切换显然是必须的。您必须对以自己的身份运行说不...