Crontab在Windows上的Ubuntu上不使用Bash

arn*_*pry 10 windows bash ubuntu cron windows-subsystem-for-linux

我正在尝试安排一个bash脚本在Windows 10的Windows上运行Ubuntu上的Bash.每次我写cron时,我都会在终端中收到以下错误消息:

crontab: installing new crontab
/var/spool/cron/: mkstemp: Permission denied
crontab: edits left in /tmp/crontab.4q0z3i/crontab
Run Code Online (Sandbox Code Playgroud)

以下是crontab条目的外观:

# m h  dom mon dow   command
27 10 * * * /home/admin/test.sh > /home/admin/logs/test.log 2>&1   
Run Code Online (Sandbox Code Playgroud)

到底发生了什么?

jef*_*amp 23

您需要将自己添加到crontab组.

usermod -a -G crontab (username)
Run Code Online (Sandbox Code Playgroud)

完成此操作后,还需要确保cron正在运行.通常这是从一开始就开始的,start cron但是从我可以告诉的事情来看,upstart对WSL sudo cron不起作用,但是做了这个工作.

有一点需要注意的是,一旦关闭所有bash窗口,即使计算机运行,cron也会停止运行.但是,只要打开bash窗口并运行cron,它就会按预期执行.

  • 这有帮助,谢谢!对像我这样的人的一个提示 - 重新启动你的bash会话以使其生效. (3认同)
  • 此外,如果您希望在关闭所有bash窗口后cron和其他后台作业继续运行,则可以在启动时使用此vb脚本,并保持bash运行的hiden实例.https://gist.github.com/leonelsr/cde77574519eb1fd672bc9690e01257e (3认同)
  • 使用jeffpkamp提到的脚本效果很好。为了自动启动cron,我将`sudo cron`添加到了〜/ .bashrc文件中,并将“ myuser ALL =(ALL:ALL)NOPASSWD:/ usr / sbin / cron`添加到了我的/ etc / sudoers文件中。 (2认同)

Jos*_*eia 11

要确保 cron 实际上正在运行,您可以输入service cron status. 如果它当前没有运行,那么输入service cron start你应该很高兴。

  • 我认为是“service cron status”而不是“service status cron” (3认同)

小智 5

github bug 上提到了解决这个问题的方法,现在似乎找不到了!

sudo crontab -u $USER -e
Run Code Online (Sandbox Code Playgroud)


Ard*_*nel 0

看来你的 crontab 确实有这样的 setgid 权限设置,
-rwxr-sr-x 1 root crontab 39024 May 5 2016 /usr/bin/crontab

你应该做sudo chown <username> /usr/bin/crontab

然后sudo chmod g+s /usr/bin/crontab

你应该是 root 才能完成这一切。