为什么我的 cron 作业在重新启动后禁用蓝牙不起作用?

为什么我的 cron 作业在重新启动后禁用蓝牙不起作用?

我注意到 Zorin 每次重启/启动设备时都会启用蓝牙,而我并不想这样。请注意,无论在重启之前蓝牙是启用还是禁用,它始终处于启用状态。

因此,我创建了以下 cron 作业:

@reboot rfkill unblock bluetooth && /etc/init.d/bluetooth stop

由于该命令需要 sudo 访问权限,因此我使用的sudo crontab -e不仅仅是crontab -e.

现在,虽然该命令在手动运行时工作得很好,但 cron 作业不起作用;重启后蓝牙仍然启用。

怎么了?谢谢你!

OS: Zorin 16.2 (Ubuntu 20.04 LTS)
Codename: Focal
Kernel: 5.15.0-67-generic

编辑:我跟着@科德洛德的建议并将命令放入 shell 脚本中:

#!/bin/bash
set -euo pipefail
IFS=$'\n\t'

rfkill unblock bluetooth
/etc/init.d/bluetooth stop

这是我的新 cronjob:

@reboot ~/Applications/bash_scripts/disable_bluetooth.sh > ~/Applications/bash_scripts/disable_bluetooth.log 2>&1

但是,disable_bluetooth.log重新启动设备后尚未创建此类内容。似乎 cron 作业根本没有执行。

编辑2:更正路径后/home/pixelcode/...,日志文件确实按预期创建,并且显示:

rfkill: command not found

编辑3:PATH使用以下命令将其添加到根 crontab 中sudo crontab -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot /home/pixelcode/Applications/bash_scripts/disable_bluetooth.sh > /home/pixelcode/Applications/bash_scripts/disable_bluetooth.log 2>&1

现在日志文件显示:

Stopping bluetooth (via systemctl): bluetooth.service.

但根据系统设置,蓝牙仍然处于启用状态。

系统菜单旁边的日志文件,均显示蓝牙服务的不同状态

相关内容