每天运行脚本不超过两次,不使用 cron

每天运行脚本不超过两次,不使用 cron

如果不使用 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它将安排自己在明天同一时间运行。

这只是一个有趣的想法,我想分享一下;)

相关内容