如何用Xshell在Linux下编写启停脚本【一】

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u012431703/article/details/99285969

如何用Xshell在Linux下编写启停脚本【一】-------  单个项目的启停脚本


我们作为码农,在Linux环境部署项目是家常便饭的事儿,因此我们也时常需要自己来手动写一些小的启动/停止/重启脚本;接下来我简单为大家讲解下shell脚本,大家若有任何不懂之处,欢迎留言,有不妥之处,也欢迎点评指正。

Shell Script 简介:

Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。

shell和shell脚本有什么区别?

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。确切一点说,Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。Shell既是一种命令语言,又是一种程序设计语言(就是你所说的shell脚本)。作为命令语言,它互动式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。

shell脚本:打开文本编辑器(可以使用vi/vim命令来创建文件),新建一个文件test.sh,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了。

#!/bin/bash                    "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。
echo "Hello World !"            echo命令用于向窗口输出文本。

脚本写法一:

#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=/usr/software/lin/project/stopcar/server-eureka-1.0.0.jar
 
#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
    exit 1
}
 
#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}
 
#启动方法
start(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running. pid=${pid} ."
  else
    nohup java -jar $APP_NAME >> nohup.out 2>&1 &
    echo "...start OK!"
  fi
}
 
#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
    echo "...stop OK!"
  else
    echo "${APP_NAME} is not running"
  fi  
}
 
#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}
 
#重启
restart(){
  stop
  start
}
 
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

用脚本一写的启动成功,案例:

脚本写法二:

#!/bin/bash
source /etc/profile
# chkconfig: - 57 75
# description: server-eureka

# Check that networking is up.
[[ ${NETWORKING} = "no" ]] && exit 1

start() {
echo "Starting server-eureka ..."
nohup java -jar -Xss768K -Xms1536m -Xmx1536m -Xmn1068m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 /home/park/server-eureka/server-eureka-1.0.0.jar &
#echo 3 >> /tmp/sunyu.txt
}

stop() {
echo "Stopping server-eureka ..."
kill -9 $(ps -ef | grep server-eureka-1.0.0 | grep -v grep | awk '{print $2}')
#echo 2 >> /tmp/sunyu.txt
}

# See how we were called.
case "$1" in
  start)
start
;;
  stop)
stop
;;
  restart|force-reload)
stop
start
;;
  *)
echo $"Usage: $0 {start|stop|restart|force-reload}"
exit 2
esac

脚本文件编写好了,首先得给我们的脚本文件通过命令【chmod 700 文件名】授予权限,权限授权成功则为绿色,否则白色,只有授权成功的文件,后续才可执行成功。

只需要执行命令【./脚本文件名.sh start】,则会自动生成【nohup.out】日志文件

输入命令【ps -ef|grep eureka】可以通过端口号查看是否 启动成功

输入命令【cat nohup.out】即可查看启动日志

以上的脚本写法一和脚本写法二是专门针对单个项目的启停。


下一篇 ----《如何用Xshell在Linux下编写启停脚本【二】》---- 多个项目的启停脚本的编写


猜你喜欢

转载自blog.csdn.net/u012431703/article/details/99285969