在Bullseye中,systemd默认在用户级别下执行cron任务。由于用户级服务没有网络访问权限,因此crontab中的@reboot命令无法访问网络。解决此问题,需要将cron服务切换为系统级别服务,以获得网络访问权限。
以下是将cron服务切换为系统级别服务的步骤:
1.创建cron服务单元文件:
sudo nano /etc/systemd/system/cron.service
2.将以下内容复制到文件中:
[Unit] Description=Regular background program processing daemon Documentation=man:cron(8) ConditionPathExists=/etc/cron.d || /etc/cron.daily || /etc/cron.hourly || /etc/cron.weekly || /etc/cron.monthly || /var/spool/cron/crontabs ConditionPathExists=/usr/sbin/anacron [Service] Type=forking EnvironmentFile=-/etc/default/cron ExecStart=/usr/sbin/cron -f $EXTRA_OPTS IgnoreSIGPIPE=no KillMode=process Restart=on-failure PIDFile=/var/run/crond.pid PrivateTmp=yes [Install] WantedBy=multi-user.target
3.保存并关闭文件。
4.重新加载systemd服务文件:
sudo systemctl daemon-reload
5.启用cron服务:
sudo systemctl enable cron.service
6.启动cron服务:
sudo systemctl start cron.service
这样,您就可以在crontab的@reboot命令中使用网络访问了。