将你的脚本放在init.d中,以便在启动时执行。
为了确保每天只执行一次,您只需要存储上次执行的date并将其与当前date进行比较。 这在任何脚本语言中都很简单。
我用这个 下面的代码保存到可变文件中,名称为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"
将其添加到init.d. 让脚本“触摸”一个小文件到它有权访问的目录,作为非特权用户的主目录(除非它需要其他特权)。 不要使用tmp,因为你没有保证文件将会持续。 使用进程名称命名文件,查找它并检查上次修改时间。 如果不到86400秒前退出,否则继续。 在“触摸”文件之前进行检查,否则您将始终认为该脚本没有在最后一天运行。
在debian系统上,我会把脚本放在/etc/cron.daily上,然后安装anacron 。
ant可能是你正在寻找的工具。
不知道RHEL是否包含rpm,或者你是否需要寻找它们,甚至是从源代码编译。
你应该使用anacron来运行这个。 它用于你想要的东西,每天一次。