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
本文來自博客園,作者:業余磚家,轉載請注明原文鏈接:http://www.rzrgm.cn/yeyuzhuanjia/p/19052214

浙公網安備 33010602011771號