
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
没有评论