每隔5分钟执行shell脚本
时间: 2024-10-15 07:11:22 浏览: 22
要创建一个shell脚本,每隔5分钟执行`test.sh`并检查是否正在运行,你可以结合`nohup`命令和`pidof`工具。这里有一个示例:
```bash
#!/bin/bash
# 定义当前脚本的PID
MY_PID=$(echo $$)
# 检查当前脚本是否已运行(PID在内存中)
if pidof -x "$0" &> /dev/null && [ "$(pidof -x "$0")" != "$MY_PID" ]; then
echo "This script is already running. Exiting..."
else
# 如果不是,则开始无限循环
nohup ./test.sh > /home/xxx.log 2>&1 & # 后台执行test.sh并将输出重定向到日志文件
while true; do
if ! pidof -x "$0" &> /dev/null || [ "$(pidof -x "$0")" == "$MY_PID" ]; then
break # 脚本停止运行,退出循环
fi
sleep 300 # 每次间隔5分钟
done
fi
```
在这个脚本中,我们首先获取当前脚本的PID,然后检查它是否已经在运行。如果已运行并且PID不匹配(意味着不是我们当前实例),则不执行循环。反之,我们会使用`nohup`执行`test.sh`,并设置循环检查脚本是否还在运行,直到检测到已停止。
相关问题
写一个服务每隔30分钟启动的shell脚本
好的,以下是一个每隔30分钟启动的shell脚本:
```
#!/bin/bash
while true
do
# 在此处编写需要执行的命令或程序
echo "Hello World" # 这里只是一个示例,打印"Hello World"
sleep 1800 # 等待30分钟
done
```
在上面的脚本中,`while true`表示一直循环执行,`sleep 1800`表示等待30分钟。你可以在`while`循环内编写需要执行的命令或程序。记得在运行脚本之前先给它执行权限,命令为`chmod +x 脚本文件名`。
每隔10s批量执行命令 一共执行24小时得shell脚本
好的,以下是一个基于Bash的脚本实现每隔10秒执行命令,共执行24小时:
```bash
#!/bin/bash
# 执行命令的函数
function run_command() {
# 在这里输入您要执行的命令
your_command_here
}
# 设置执行时间为24小时
endtime=$((SECONDS + 60 * 60 * 24))
# 每隔10秒执行一次命令
while [ $SECONDS -lt $endtime ]; do
run_command
sleep 10
done
```
将 "your_command_here" 替换为您要执行的命令,并保存为一个Shell脚本,例如 "batch_command.sh"。然后在命令行中运行以下命令启动定时任务:
```
chmod +x batch_command.sh
./batch_command.sh &
```
这将在后台运行脚本,并且每隔10秒执行一次命令,直到达到24小时的时间限制。
阅读全文