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"