前言
用于Centos定时关机,文中提及如何在系统中修改配置文件后脚本中的sudo执行不需要输入密码。
100 root ALL=(ALL) ALL
101 kylin ALL=(ALL) NOPASSWD: ALL
重点提示:使用此脚本前需要修改sudo配置文件,使用管理员账户登录终端;
vi /etc/sudoers/对此文件进行编辑,将第100行root ALL=(ALL) ALL后增加一行;
kylin ALL=(ALL) NOPASSWD: ALL 此处(kylin更换为默认登录的用户名);
输入wq!强制保存并退出。
一、脚本内容
#!/bin/bash
# 执行此脚本前 需要给本脚本以及/home增加权限,使用
# cd / ; chmod 777 /home 后即可使用普通用户执行。
# 想开机5分钟后执行关机命令需要在crontab下增加 时任务
# 输入crontab -e 后,注意crontab务必在root下添加任务!!!!
#再输入*/5 * * * * /*/5 * * * * /path/to/your/script.sh
# 正常会出现crontab: installing new crontab
# 输入crontab -l 可查看脚本是否定时成功
################################################################
# 设置记录文件路径和文件名
LOG_FILE="/home/poweroff_log.txt"
# 检查记录文件是否存在,如果不存在则创建新文件并初始化关机次数为0
if [ ! -f $LOG_FILE ];
then
echo "0" > $LOG_FILE
fi
# 设置初始关机次数累加至5次
shutdown_count=$(cat $LOG_FILE)
sudo chmod 777 $LOG_FILE
if [ $shutdown_count -lt 5 ]; then
shutdown_count=$((shutdown_count + 1))
sudo echo " $shutdown_count "> $LOG_FILE
fi
# 使用while循环执行关机命令并记录次数
while [ $shutdown_count -lt 5 ]; do
# 执行关机命令
echo "执行关机命令..."
sudo poweroff
done
二、使用方法
1.首要按照注释中将存放日志的文件相应的权限
# 如果想要用普通用户就可以使用此脚本,需要进行以下权限的更改。
cd /
chmod 777 /home
chmod 777 /path/to/your/script.sh
1.1 编辑vi /etc/sudoers文件内容以实现sudo无需密码执行
(1) 切换为管理员权限
(2) 使用vi命令修改/etc/sudoers/,将第100行root ALL=(ALL) ALL后增加一行;
(3)kylin ALL=(ALL) NOPASSWD: ALL 此处(kylin更换为默认登录的用户名);
(4)效果如下图,输入wq!强制保存并退出。
2.使用crontab定时执行任务
输入crontab -e 编辑定时任务
输入*/5 * * * * /path/to/your/script.sh
回车后出现 crontab: installing new crontab 提示
即可实现定时5分钟重启;
注意:(第一次设置crontab 任务时会在3分钟后开始计时,避免出现设置时间错误无法修改)
输入crontab -l 查看当前定时任务的情况
输入 crontab -r 移除定时任务。
总结
此脚本可以实现定时关机的执行,脚本命名尽量简洁,注意权限和sudoer的内容编写,脚本就可以顺利运行。