我设置了 crontab,它将在第 30 分钟运行并触发脚本,并且在脚本中我让 LCD 没有获得连接时重新启动我的问题是:
它可以在脚本中每30分钟检查一次连接,而无需在crontab中设置时间吗?
如何编写一个脚本来检查 30 分钟或 1 小时的连接情况,如果在此期间没有连接,那么液晶显示屏将自动重启
如果 LCD 在同一天重启了 3 次,我该如何禁用该脚本?
if ! ping -c 5 google.com; then
sudo ifconfig wlp2s0 down
sudo reboot
sleep 5
sudo ifconfig wlp2s0 up
fi
答案1
阅读man -a crontab
。每 30 分钟运行一次脚本很容易,这就是cron
由crontab
文件控制的 的目的。
脚本中的命令在 之后sudo reboot
不会运行。重新启动会终止所有内容。将 的网络配置更改wlp2s0
为选中“自动”框。然后它将作为系统启动的一部分启动。此外,“ sudo ifconfig wlp2s0 down
”是不必要的,因为重新启动即可完成。使用shutdown
,而不是reboot
。阅读man shutsown
。
在外部文件中保存重启次数也很容易。代码不完整,未经测试,甚至未经 shell 检查
# at beginning of script
# reboot_file name changes daily
reboot_file="/tmp/reboot.$(date "+%F")`
max_reboots=3
[[ ! -f "$reboot_file" ]] && echo "0" >"$reboot_file"
reboot_count="$( cat "$reboot_file")"
...
# later on, just before rebooting
let reboot_count++
if [[ "$reboot_count" -le "$max_reboots" ]] ;
then
echo "$reboot_count" >"$reboot_file"
flush
sudo shutdown -r now
# execution stops here due to reboot
fi
# if we get here there have been too many reboots
# what do you want to do?
sudo shutdown -h now "Too many reboots"
始终将脚本粘贴到https://shellcheck.net
语法检查器中,或shellcheck
本地安装。将其作为shellcheck
开发过程的一部分。
请阅读 https://askubuntu.com/help/how-to-ask和https://askubuntu.com/help/formatting