文章标题 原创 翻译 转载 文章内容 linux 简单服务启动、关闭脚本 假如我们的目录结构如下: ``` /home/project/bin/shell # 脚本所在目录 /home/project/TestServer/bin # 可执行程序目录 /home/project/TestServer/lib # 依赖库目录 ``` 服务名为:TestServer 启动脚本start.sh: ``` #!/bin/bash appName=TestServer process=`ps -ef | grep ${appName} | grep -v grep | awk '{print $2}'`; if [ "$process" == "" ]; then thisDir="$(cd `dirname "$0"` && pwd )" runDir="${thisDir}/../${appName}/bin" libDir="${thisDir}/../${appName}/lib" cd $runDir export LD_LIBRARY_PATH=$libDir nohup "$runDir"/$appName & process=`ps -ef | grep ${appName} | grep -v grep | awk '{print $2}'`; sleep 1s echo "------------${appName} start success, pid is ${process}------------" else echo "------------${appName} is always running, pid is ${process}------------" fi ``` 关闭脚本stop.sh ``` #!/bin/bash ps -ef | grep TestServer | grep -v grep | awk '{print $2}' | xargs kill -9 echo "------------TestServer is stopped successfully.-------------" ``` 简单解释下: 如果进程已经在运行就直接返回。 ``` process=`ps -ef | grep ${appName} | grep -v grep | awk '{print $2}'`; ``` 获取appName的进程ID,这个语句会过滤掉grep本身,进程ID在第2列。 ``` thisDir="$(cd `dirname "$0"` && pwd )" ``` 获取当前脚本所在目录,赋值给变量thisDir ``` export LD_LIBRARY_PATH=$libDir ``` 导入程序运行依赖库 ``` nohup "$runDir"/$appName & ``` 不挂断在后台运行 文章类别 Python Mobile Android Java Shell Life Database Bug Windows IOS Tools Boost Node.js Mac Product Tips C/C++ Golang Javascript React Qt MQ MongoDB Design Web Linux LLM ChatGPT RAG AI 提交