在 CentOS 上,可以使用 cron 服务来创建定时任务
在你的脚本中,使用 flock
命令来确保同一时间只有一个实例在运行。例如,你可以在你的脚本开头添加以下代码:
#!/bin/bash
(
# 确保使用绝对路径来指定锁文件
flock -n 200 || exit 1
# 你的脚本内容
# ...
) 200>/var/lock/my_cronjob.lock
这将创建一个锁文件 /var/lock/my_cronjob.lock
,并尝试在文件描述符 200 上获得排他锁。如果锁已经被其他进程持有,脚本将立即退出,否则将继续执行。
在脚本开始时检查是否有相同名称的进程已在运行。如果存在,则退出脚本。例如:
#!/bin/bash
# 检查是否有相同名称的进程在运行
if pgrep -f "$(basename $0)" -x | grep -vq "^$$\$"; then
echo "定时任务已经在运行,退出。"
exit 1
fi
# 你的脚本内容
# ...
这将检查是否有与当前脚本名称相同的进程在运行。如果找到了,脚本将退出,否则将继续执行。
注意:这种方法可能会受到脚本名称更改的影响,因此请确保脚本名称在系统中是唯一的。
通过使用这些方法,你可以确保 CentOS 定时任务不会重复执行。