gpt4 book ai didi

linux - CRON 闹钟 Linux Mint 突然停止

转载 作者:太空宇宙 更新时间:2023-11-04 11:29:48 24 4
gpt4 key购买 nike

我是 Linux 新手,正在学习使用 bash 和 cron 编写闹钟脚本。该脚本在 bash 中运行良好并双击它,但在 cron 中却不行;一旦 cron 调用脚本,警报就会响起一次(似乎是一个循环)然后停止甚至不显示对话框(zenity)。我正在使用 Linux Mint 13 Maya XFCE。

这是我的 crontab 设置

* * * * * /home/x/Documents/MyScripts/Cron/BeepAlarm "Wake Up"

这是我的脚本

!#/bin/bash

# Initialize Variables
Text=$1
Title="Alarm"
OkLabel="Snooze"
CancelLabel='Shut It Up!'
Icon=/home/x/.icons/actions/48/appointment-new.png # Won't work
SnoozeTimeout=120
AlarmCycles=100
shopt expand_aliases
alias vol='amixer -q -c 0 sset Beep'
vol 25% # Heart friendly
rm -f LoopMode # Just in case =P

# Dialog Box Function
_MsgBox () {
if zenity --question --title="$Title" \
--window-icon=$Icon --ok-label="$OkLabel" \
--cancel-label="$CancelLabel" --text="$Text"
then
echo 1 > LoopMode
else
echo 2 > LoopMode
#kill -TERM `jobs -p` # Won't work
fi
}

# Alarm Loop
while [ $AlarmCycles -gt 0 ]; do
case `cat LoopMode` in
"") # Question Box
echo 0 > LoopMode
_MsgBox &
;;

1) # Snooze
vol 25%
rm -f LoopMode
sleep $SnoozeTimeout
;;

2) # Stop Alarm
break # But don't sleep again
;;

*) # Get on my nerves
beep -r 4 -l 20 -f 2000; sleep 0.5
beep -r 4 -l 20 -f 4000; sleep 0.5
AlarmCycles=$((AlarmCycles-1))
vol 5%+

esac
done

# Housekeeping~
kill $(($!+2)) # I don't know a better way to kill zenity Dialog
vol 25% # =)
rm -f LoopMode

最佳答案

正如 Rob 所建议的:

* * * * * env DISPLAY=:0.0 /home/x/Documents/MyScripts/Cron/BeepAlarm "Wake Up"

P.S:不好意思,没注意手续

关于linux - CRON 闹钟 Linux Mint 突然停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12043446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com