在 Linux 启动时运行 Shell 脚本但每天只能运行一次

在 Linux 启动时运行 Shell 脚本但每天只能运行一次
  • 在 Linux 启动时运行 Shell 脚本但每天只能运行一次,我该怎么做?
  • 我正在使用 Redhat Enterprise Linux 5

答案1

将您的脚本放入 init.d 中,以便它在启动时执行。

为了确保它每天只执行一次,您只需存储上次执行的日期并将其与当前日期进行比较。这在任何脚本语言中都很容易做到。

答案2

我用的是这个。下面的代码保存到可执行文件,名为 depo,您​​可以在文件中读取注释。

#!/bin/bash

# depo = day-execute-per-onetime = execute onetime per day
# add argumets whose execute onetime per day

# Example: ./depo "uname -a" # let's try run twotimes

if [ $# = 0 ]; then
    echo "Missing arguments, add one or more commands what you want to execute. Like $ depo \"uname -a\" date";
    exit;
fi;

TODAY=`date +%Y-%m-%d`
HOME_DIR="$HOME/.depo/"
COMMAND=`echo $@ | sha1sum | cut -d ' ' -f1`

SYNC_FILE="$HOME_DIR/$COMMAND"
mkdir -p "$HOME_DIR"
touch "$SYNC_FILE"

SYNC_DATE=`cat "$SYNC_FILE"`
if [ "$SYNC_DATE" == "$TODAY" ]; then
    exit
fi

for arg; do
   eval $arg
done

echo $TODAY > "$SYNC_FILE"

答案3

将其添加到 init.d。让脚本将一个小文件“接触”到它有权访问的目录,即作为非特权用户的主目录(除非它需要其他权限)。不要使用 tmp,因为您无法保证文件会持久存在。用进程的名称命名文件,查找它并检查其上次修改时间。如果它少于 86400 秒,则退出,否则继续。在“接触”文件之前进行检查,否则您将始终认为脚本在过去一天没有运行。

答案4

你应该使用阿纳克隆运行它。它用于每天执行一次您想要执行的操作。

相关内容