Bash
1 前言
一个问题,一篇文章,一出故事。
笔者最近发现脚本因为重复执行而损耗服务器性能,因此解决此问题而整理本章节。
2 最佳实践
2.1 创建测试脚本
vim ~/scripts/script.sh
加入如下配置,
#!/bin/bash
LOCKFILE="/tmp/script.lock"
# 检查锁文件是否存在
if [ -e "$LOCKFILE" ]; then
oldPid=$(cat "$LOCKFILE")
# 检查 PID 是否为空
if [ ! -z "$oldPid" ]; then
# 检查进程是否仍在运行
if ps -p "$oldPid" > /dev/null; then
echo "Script is already running with PID $oldPid."
exit 1
fi
fi
rm -f "$LOCKFILE"
fi
# 创建锁文件并写入当前进程的 PID
echo $$ > "$LOCKFILE"
# 执行主要任务
echo "Running the script..."
# 示例命令
sleep 30 # 模拟长时间运行的任务
# 清理锁文件
rm -f "$LOCKFILE"
exit 0
2.2 执行测试脚本
bash ~/scripts/script.sh
没有评论