如果液晶显示器在同一天重启了 3 次,则检查连接并禁用脚本

如果液晶显示器在同一天重启了 3 次,则检查连接并禁用脚本

我设置了 crontab,它将在第 30 分钟运行并触发脚本,并且在脚本中我让 LCD 没有获得连接时重新启动我的问题是:

  1. 它可以在脚本中每30分钟检查一次连接,而无需在crontab中设置时间吗?

  2. 如何编写一个脚本来检查 30 分钟或 1 小时的连接情况,如果在此期间没有连接,那么液晶显示屏将自动重启

  3. 如果 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 分钟运行一次脚本很容易,这就是croncrontab文件控制的 的目的。

脚本中的命令在 之后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-askhttps://askubuntu.com/help/formatting

相关内容