![每天运行脚本不超过两次,不使用 cron](https://linux22.com/image/1009319/%E6%AF%8F%E5%A4%A9%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC%E4%B8%8D%E8%B6%85%E8%BF%87%E4%B8%A4%E6%AC%A1%EF%BC%8C%E4%B8%8D%E4%BD%BF%E7%94%A8%20cron.png)
如果不使用 cron,脚本每天可以运行不超过两次吗?
2018 年 8 月 12 日下午 5:46
@Ravexina
这是我使用 Ravexina 推荐的脚本。
SCRIPT=$(realpath "$0")
V=$(pstree -sp $$ | grep "($(pgrep -n atd))" -c)
if [ "$V" -ge 1 ];
then
echo "$SCRIPT" | at "$(date +%H:%M) tomorrow"
fi
Docs_Backups=/media/andy/MAXTOR_SDB1/Ubuntu_Mate_18.04/Documents_Backups/
Scripts_Backups=/media/andy/MAXTOR_SDB1/Ubuntu_Mate_18.04/Script_Backups/
# Backup Documents
gxmessage -fg red -font 'sans 30' -timeout 3 ' BACKING UP FILES FOR UBUNTU_MATE 18.04.3 LTS'
cd ~/Documents
zip -u -q Ubuntu_Documents.zip *.txt *.doc *.rtf *.html *.png *.pdf *.odt *.ods *.odg
cp Ubuntu_Documents.zip /media/andy/MAXTOR_SDB1/Ubuntu_Mate_18.04/Documents_Backups/Ubuntu_Documents_`date +"%Y-%m-%d-%H-%M"`.zip # date is in year/month/day/hour/minute format
cd /media/andy/MAXTOR_SDB1/Ubuntu_Mate_18.04/Documents_Backups/
# This deletes unneeded date files except newest which are zero bytes
find . -type f -size 0b -delete
sleep 1
touch $( date '+%m-%d-%Y_%I:%M-%p' )
当我运行它时,17:41 什么也没有发生。
andy@7_~$ echo $HOME/script.sh | at 17:41
warning: commands will be executed using /bin/sh
job 4 at Sun Aug 12 17:41:00 2018
答案1
正如您提到的,cron
我想您正在尝试每天自动运行该脚本两次。
最好使用cron
,但是您也可以使用at
命令,假设我的脚本位于$HOME/script.sh
并且是可执行的。
首先我需要在脚本的开头添加以下几行:
SCRIPT=$(realpath "$0")
V=$(pstree -sp $$ | grep "($(pgrep -n atd))" -c)
if [ "$V" -ge 1 ];
then
echo "$SCRIPT" | at "$(date +%H:%M) tomorrow"
fi
我需要运行:
echo $HOME/script.sh | at 18:00
echo $HOME/script.sh | at 20:00
现在我的脚本将在下午 6 点和晚上 8 点运行,并且每次如果使用守护进程执行它,at
它将安排自己在明天同一时间运行。
这只是一个有趣的想法,我想分享一下;)