解决cron.service启动错误问题
2022年7月5日大约 2 分钟
上一级页面:index-wsl
前言
cron.service启动失败,查询资料后,逐步排查问题原因
排查问题
开启 cron.log
sudo vim /etc/rsyslog.d/50-default.conf
将 cron 前面的注释符去掉,以便记录cron的日志
重启相关服务
首先启相关服务
sudo service rsyslog restart
sudo service cron restart
然后重启wsl
之后就会开始记录cron日志
检查日志
检查日志文件
cat /var/log/cron.log
发现报错如下
───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: /var/log/cron.log
│ Size: 1.5 KB
───────┼──────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ Jul 5 09:49:06 WSL-b6OupkEv cron[768]: (CRON) DEATH (can't lock /var/run/crond.pid, otherpid may be
│ 155: Resource temporarily unavailable)
2 │ Jul 5 09:49:06 WSL-b6OupkEv cron[776]: (CRON) DEATH (can't lock /var/run/crond.pid, otherpid may be
│ 155: Resource temporarily unavailable)
3 │ Jul 5 09:49:06 WSL-b6OupkEv cron[777]: (CRON) DEATH (can't lock /var/run/crond.pid, otherpid may be
│ 155: Resource temporarily unavailable)
4 │ Jul 5 09:49:06 WSL-b6OupkEv cron[778]: (CRON) DEATH (can't lock /var/run/crond.pid, otherpid may be
│ 155: Resource temporarily unavailable)
简而言之,/var/run/crond.pid
不能被正常的锁住。
(CRON) DEATH (can't lock /var/run/crond.pid, otherpid may be Resource temporarily unavailable)
本质原因我已经排查到关键步了,是docker for desktop
的自启动和nullpo-head/wsl-distrod的开机自启动之间存在某种冲突,但到这无解了,两个我都要用。
解决方案
删除对应文件
sudo rm -rf /var/run/crond.pid
重新加载
sudo /etc/init.d/cron reload
重启服务
sudo /etc/init.d/cron restart
查看服务
/etc/init.d/cron status
输出结果如下
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/cron.service.d
└─override.conf
Active: active (running) since Tue 2022-07-05 09:52:27 CST; 7s ago
Docs: man:cron(8)
Main PID: 809 (cron)
Tasks: 2 (limit: 2286)
Memory: 796.0K
CGroup: /system.slice/cron.service
7月 05 09:52:27 WSL-b6OupkEv systemd[1]: Started Regular background program processing daemon.
7月 05 09:52:27 WSL-b6OupkEv cron[809]: (CRON) INFO (pidfile fd = 3)
7月 05 09:52:27 WSL-b6OupkEv cron[809]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
重启服务后,服务正常了
重启WSL
sudo systemctl reboot
查看服务
/etc/init.d/cron status
输出结果如下
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/cron.service.d
└─override.conf
Active: active (running) since Tue 2022-07-05 09:52:27 CST; 7s ago
Docs: man:cron(8)
Main PID: 809 (cron)
Tasks: 2 (limit: 2286)
Memory: 796.0K
CGroup: /system.slice/cron.service
7月 05 09:52:27 WSL-b6OupkEv systemd[1]: Started Regular background program processing daemon.
7月 05 09:52:27 WSL-b6OupkEv cron[809]: (CRON) INFO (pidfile fd = 3)
7月 05 09:52:27 WSL-b6OupkEv cron[809]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
问题解决
其他
cron-service一般在systemd服务启动序列的较早期位置,
参考、引用、致谢
解决windows子系统wsl下crontab无法开启的问题_xbvan的博客-CSDN博客