Logstash启动和停止shell脚本
1、启动脚本
逻辑:(1)如果当前是logstash用户,通过jps命令查看logstash是否正在运行,如果正在运行,就不再启动。如果没有运行,就执行启动命令,后台运行。最后返回logstash的进程id。
(2)如果当前用户不是logstash用户,那么就切换到logstash用户,然后通过jps命令查看logstash是否正在运行,如果正在运行,就不再启动。如果没有运行,就执行启动命令,后台运行。最后返回logstash的进程id。
#!/bin/bash logstash_bin="/opt/logstash-9.1.2/bin/logstash" filter_dir="/opt/logstash-9.1.2/filter/" # 定义执行Logstash的函数 run_logstash() { echo "begin start logstash....." logstash_id=$(jps | grep Logstash | awk '{print $1}') if [ -z "${logstash_id}" ] then # nohup /opt/logstash-9.1.2/bin/logstash -f /opt/logstash-9.1.2/filter/ --config.reload.automatic & nohup ${logstash_bin} -f ${filter_dir} --config.reload.automatic & sleep 2 logstash_id2=$(jps | grep Logstash | awk '{print $1}') echo "Logstash has been started! pid is ${logstash_id2}" else echo "Logstash is already running! pid is ${logstash_id}" fi } # 获取当前用户名 CURRENT_USER=$(whoami) # 判断当前用户 if [ "$CURRENT_USER" != "logstash" ]; then echo "当前用户是 $CURRENT_USER,切换到 logstash 用户执行" # 切换到logstash用户执行函数 su - logstash -c "$(declare -p logstash_bin filter_dir);$(declare -f run_logstash); run_logstash" else echo "当前用户是 logstash,直接执行" run_logstash fi
2、停止脚本
逻辑:(1)如果当前是logstash用户,通过jps命令查看logstash是否正在运行,如果正在运行,就通过kill命令停止进程。如果没有运行,就提示没有在运行。
(2)如果当前用户不是logstash用户,那么就切换到logstash用户,通过jps命令查看logstash是否正在运行,如果正在运行,就通过kill命令停止进程。如果没有运行,就提示没有在运行。
#!/bin/bash # 获取脚本的绝对路径 SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) SCRIPT_PATH="$SCRIPT_DIR/$(basename "$0")" # 如果不是logstash用户,切换到logstash用户重新执行脚本 if [ "$(whoami)" != "logstash" ]; then echo "当前用户是 $(whoami),切换到 logstash 用户执行停止操作!" exec su - logstash -c "bash $SCRIPT_PATH" fi # 以下是logstash用户执行的代码 echo "begin stop logstash...." logstash_id=$(jps | grep Logstash | awk '{print $1}') if [ ! -z "${logstash_id}" ] then jps | grep Logstash | awk '{print $1}' | xargs kill echo "Logstash has been stoped!" else echo "Logstash is not running!" fi
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/19052214

浙公网安备 33010602011771号