首先写一个可以在规定时间段后关机的程序:sot.sh
#!/bin/bash
#shutdown on time
#shutdown after 50 munite when open the system
sleep 2m
STANDARDSKIP=20 #规定休息时间必须超过20分钟
DateFilePath=/home/lic/shell_test/olddate.log#这里是保存时间日志的文件路径
(( DATENOW=10#$(date +%m%d)*10000+10#$(date +%H)*60+10#$(date +%M) )) #读取当前时间并转换成10进制
(( DATEOLD=10#$(awk 'NR==1{print $1}' $DateFilePath)*10000+10#$(awk 'NR==2{print $1}' $DateFilePath)*60+10#$(awk 'NR==3{print $1}' $DateFilePath) ))
skip=$(expr $DATENOW - $DATEOLD)
function beginone {
for ((i=0; i<3; i++))
do
sleep 3
export DISPLAY=:0.0 && notify-send "主人,您已经休息了20分钟,可以使用电脑了"
done
}
function begintwo {
for ((i=0; i<3; i++))
do
sleep 3
export DISPLAY=:0.0 && notify-send "主人,您应该休息20分钟之后再工作"
done
}
function endprompt {
for ((i=0; i<3; i++))
do
sleep 3
export DISPLAY=:0.0 && notify-send "计算机将会在3分钟后关机" "请及时保存已修改的文件"
done
}
function SHUTDWON {
sleep 3m
echo $(date +%m%d) > $DateFilePath
echo $(date +%H) >> $DateFilePath
echo $(date +%M) >> $DateFilePath
sleep 1
echo "***这里是密码***" | sudo -S shutdown now
}
if [ $skip -gt $STANDARDSKIP ]; then
beginone
sleep 47m
endprompt
SHUTDOWN
else
begintwo
endprompt
SHUTDOWN
fi
exit 0
然后利用crontab
添加开机运行该脚本的指令
@reboot /home/lic/shell_test/sot.sh#这里是自动关机脚本文件的路径