前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux后台进程启停脚本模板

Linux后台进程启停脚本模板

作者头像
编程随笔
发布2021-08-05 11:00:22
2K0
发布2021-08-05 11:00:22
举报
文章被收录于专栏:后端开发随笔
图片来源于网络
图片来源于网络

目录

在Linux上启动程序后台运行时,往往需要输入一堆复杂的命令,为了能快速编写一个完善的启动脚本,整理一个通用的启停脚本模板如下。 脚本支持从任意位置执行,不存在路径问题,启动脚本和停止脚本最好一起配合使用。

启动脚本

代码语言:javascript
复制
#!/bin/bash

current_path=$(cd `dirname $0`; pwd)
parent_path=$(cd ${current_path} ; cd ..; pwd)
conf_path=$parent_path/conf
log_path=$parent_path/log
#echo $current_path
#echo $parent_path

pid_file=$current_path/xxx.pid
arg1=$1
arg2=$2

function print_usage() {
    echo ""
    echo "Usage:"
    echo "    sh $0 <arg1> <arg2>"
    echo ""
    echo "  e.g:"
    echo "    sh $0 yyy zzz"
    echo ""
}

if [ ! "${arg1}" ]; then
    print_usage
    exit 1
fi

if [ ! "${arg2}" ]; then
    print_usage
    exit 1
fi

#print_usage

if [ -f ${pid_file} ]; then
    pid=`cat ${pid_file}`
    pid_exist=$(ps aux | awk '{print $2}'| grep -w $pid)
    if [ $pid_exist ]; then
        echo ""
        echo "process is running: ${pid}, Please stop it first!"
        echo ""
        exit 1
    fi
fi

echo "startup..."
echo "arg1: ${arg1}, arg2: ${arg2}"

## 启动Python进程示例
#nohup python ${parent_path}/test_tasks.py -s ${arg1} -c ${arg2}  > /dev/null 2>&1 & echo $! > $pid_file

## 启动Java进程示例
## set java path
#if [ -z "$JAVA" ]; then
#	JAVA=$(which java)
#fi

#if [ -z "$JAVA" ]; then
#	echo "java not install, Please install java first" 2>&2
#	exit 1
#fi

## set classpath
#CLASSPATH=$parent_path/conf
#for i in $parent_path/libs/*;
#do
#	CLASSPATH="$CLASSPATH":$i
#done

#OPTS_APP="-Dlogback.configurationFile=$conf_path/logback.xml -Dlog.dir=$log_path"
#OPTS_MEM="-Xms1024m -Xmx1024m"
#OPTS_JAVA_EXT="-Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8"
#OPTS_JAVA="$OPTS_JAVA_EXT $OPTS_MEM $OPTS_APP"

## 方式1: 明确指定main方法所在的入口类
#nohup $JAVA $OPTS_JAVA -classpath $CLASSPATH xxx.yyy.zzz.BootstrapClass > /dev/null 2>&1 & echo $! > $pid_file

## 方式2: 直接指定可执行jar包
#nohup $JAVA $OPTS_JAVA -jar xxx.jar > /dev/null 2>&1 & echo $! > $pid_file

sleep 1
echo "started."
echo "process id: `cat ${pid_file}`"
echo ""

根据实际情况,将脚本模板中的xxxarg1arg2修改为对应的名称即可。

停止脚本

代码语言:javascript
复制
#!/bin/bash

current_path=$(cd `dirname $0`; pwd)
#echo $current_path

pid_file=$current_path/xxx.pid

if [ ! -f $pid_file ]; then
    echo "pid file not exists"
    echo ""
    exit 1
fi

echo "stopping..."
pid=`cat ${pid_file}`
echo "process id: ${pid}"
kill -15 $pid
sleep 1

# check process exists
pid_exist=$(ps aux | awk '{print $2}'| grep -w $pid)
if [ ! $pid_exist ]; then
    # echo the process $pid is not exist
    rm -rf ${pid_file}
else
    # echo the process $pid exist
    kill -9 $pid
    sleep 1
    rm -rf ${pid_file}
fi

echo "stopped."

根据实际情况,将脚本模板中xxx修改为对应名称即可。

【参考】 https://blog.csdn.net/baidu_38558076/article/details/88191567 shell 判断pid是否真实存在 https://blog.csdn.net/sunt2018/article/details/102523112 后台启动 nohup,并记录pid号

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 启动脚本
  • 停止脚本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档