loop简单循环执行命令的脚本

56 阅读1分钟

loop简单循环执行命令的脚本

后端执行脚本时,经常需要定时执行一个命令,例如查看进程是否存在,并打印在当前console,为了简化操作,写了一个loop.sh脚本,这个脚本可以传入一个时间和命令,固定时间执行指定的命令。

脚本如下:

#!/bin/bash
#set -x

if [[ $# -le 1 ]];
then
    echo "<Usage> $0 <seconds> <command>"
    exit 1
fi

WAIT_TIME="$1"

# 获取要执行的命令(从第二个参数开始)
shift  # 移除第一个参数(等待时间)
COMMAND="$*"  # 将所有剩余参数作为命令

#echo ${command}

# 无限循环,每隔5秒执行一次 dapr list
while true; do
    echo "-----------------------------------------------------------------------------------------------------------------"
    echo "------>   $(date +'%Y-%m-%d %H:%M:%S')"
    echo "------>   ${COMMAND}"
    # 执行 dapr list 命令
    eval ${COMMAND}

    # 等待指定的时间秒
    sleep "$WAIT_TIME"
done

将命令保存成loop.sh,然后软链接到PATH

ln -s /data/shell/loop/sh /usr/local/bin/loop

使用:

loop 3 echo 1
loop 3 "ps -ef | grep java"