#!/bin/bash -li # 检查脚本输入参数 checkInput() { if [ "${app}" == "" ] || [ "${oper}" == "" ]; then echo "请输入脚本参数:name" echo " app: 要启动的进程关键字(必填)。可选值:elasticsearch|logstash|kibana|filebeat" echo " oper: 执行操作(必填)。可选值:start|stop" echo "例:./boot-elk.sh logstash start" exit 0 fi if [ "${app}" != "elasticsearch" ] && [ "${app}" != "logstash" ] && [ "${app}" != "kibana" ] && [ "${app}" != "filebeat" ]; then echo "name 输入错误" echo "可选值:elasticsearch|logstash|kibana|filebeat" exit 0 fi } # 检查文件是否存在,不存在则退出脚本 checkFileExist() { if [ ! -f "$1" ] then echo "关键文件 $1 找不到,脚本执行结束" exit 0 fi } startup() { if [ "${app}" == "elasticsearch" ]; then checkFileExist ${ELASTICSEARCH_BIN_PATH}/elasticsearch nohup sh ${ELASTICSEARCH_BIN_PATH}/elasticsearch >>${ELASTICSEARCH_BIN_PATH}/nohup.out 2>&1 & elif [ "${app}" == "logstash" ]; then checkFileExist ${LOGSTASH_BIN_PATH}/logstash nohup sh ${LOGSTASH_BIN_PATH}/logstash -f ${LOGSTASH_BIN_PATH}/logstash.conf >>${LOGSTASH_BIN_PATH}/nohup.out 2>&1 & elif [ "${app}" == "kibana" ]; then checkFileExist ${KIBANA_BIN_PATH}/kibana nohup sh ${KIBANA_BIN_PATH}/kibana >> ${KIBANA_BIN_PATH}/nohup.out 2>&1 & elif [ "${app}" == "filebeat" ]; then checkFileExist ${FILEBEAT_PATH}/filebeat touch ${FILEBEAT_PATH}/nohup.out nohup ${FILEBEAT_PATH}/filebeat -e -c ${FILEBEAT_PATH}/filebeat.yml -d "publish" >> ${FILEBEAT_PATH}/nohup.out 2>&1 & fi } shutdown() { pid=`ps -ef | grep java | grep ${app} | awk '{print $2}'` kill -9 ${pid} } ##############################__MAIN__######################################## app=$1 oper=$2 version=6.1.1 ELASTICSEARCH_BIN_PATH=/opt/software/elastic/elasticsearch-${version}/bin LOGSTASH_BIN_PATH=/opt/software/elastic/logstash-${version}/bin KIBANA_BIN_PATH=/opt/software/elastic/kibana-${version}-linux-x86_64/bin FILEBEAT_PATH=/opt/software/elastic/filebeat-${version}-linux-x86_64 checkInput case ${oper} in start) echo "启动 ${app}" startup ;; stop) echo "终止 ${app}" shutdown ;; * ) echo "${oper} is invalid oper";; esac