前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Crontab基础与WSL Ubuntu Crontab不生效问题排查

Crontab基础与WSL Ubuntu Crontab不生效问题排查

原创
作者头像
coffee1
修改2025-02-14 15:47:56
修改2025-02-14 15:47:56
550
举报
文章被收录于专栏:LinuxLinux

crontab基础知识

Crontab格式:

* * * * * command

5个*分别对应

分、时、月、日、星期(周日是0)

* * * * *

| | | | |

| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)

| | | +---------- 月份 (1 - 12)

| | +--------------- 一个月中的第几天 (1 - 31)

| +-------------------- 小时 (0 - 23)

+------------------------- 分钟 (0 - 59)

示例:

每周六、周日的1 : 10重启smb

10 1 * * 6,0 /etc/init.d/smb restart

查找crontab文件位置

which crontab

查看crontab文件内容

crontab -l

编辑crontab

crontab -e

设置每隔一分钟执行命令

*/1 * * * * python /root/print1.py

启动cron服务

sudo service cron start

重启cron服务

serice cron restart

停止cron服务

service cron stop

WSL Ubuntu crontab不生效问题排查

1.crontab文件位置

/var/spool/cron/crontabs/${USER}

如root用户,crontab文件位置在/var/spool/cron/crontabs/root

运行which crontab

可以看到是/usr/bin/crontab

2.检查contab是否正在运行

service cron status

service cron start

service cron reload

ps aux | grep cron

3.crontab日志文件位置

/var/log

发现这个目录不存在crontab日志

打开文件/etc/rsyslog.d/50-default.conf

下面这一句取消注释:

cron.* /var/log/cron.log

重启rsyslog:

service rsyslog restart

报错rsyslog: unrecognized service

这个问题有待进一步确认

安装rsyslog

sudo apt-get install rsyslog

查看rsyslog版本

rsyslogd -v

查看rsyslog状态

sudo service rsyslog status

4.环境变量

which crontab

可以看到crontab属于/usr/bin/crontab

使用export语句添加环境变量

# 加到PATH开头

export PATH=/usr/bin:$PATH

放到PATH已有值的前面,如果遇到同名的命令,PATH里面哪个目录先被查询,则那个目录下的命令就会被先执行

查看环境变量:

env

保证永久有效:

/etc/profile

文件添加语句 export PATH=/usr/bin:$PATH

重启执行命令

service cron status

source /etc/profile

service cron reload

5.另一个crontab文件位置

/etc/crontab

PATH所在的行,取消注释

在文件中添加命令

0 9 * * * cd /${USER}/interface;python main.py

打开/etc/init.d目录,其中存在cron文件

启动cron服务

启动:/etc/init.d/cron start 关闭:/etc/init.d/cron stop

重启:/etc/init.d/cron restart 重新载入配置:/etc/init.d/cron reload

查看crontab的PID

pgrep cron

6. 查看所有crontab的位置

whereis crontab

可以看到/usr/bin/crontab /etc/crontab /usr/share/man/man1/crontab.1.gz /usr/share/man/man5/crontab.5.gz

在/usr/bin/crontab添加命令

0 9 * * * cd /${USER}/interface;python main.py

/usr/sbin/cron

/usr/local/bin/crontab

7.添加用户到crontab组

#add your user to crontab group

usermod -a -G crontab MyUser

8.enable systemd in WSL

/etc/wsl.conf文件中添加如下语句,如果不存在,创建文件

[boot]

systemd=true

在powershell运行如下命令:

wsl --terminate Ubuntu

wsl -d Ubuntu

确认systemd是否运行

systemctl list-unit-files --type=service

确认cron是否运行

systemctl status cron

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档