Linux下如何把项目设置为开机启动服务

admin 2023年3月4日12:28:09评论13 views字数 2297阅读7分39秒阅读模式

我们公司的项目基本上都是安装在工控机上的,要能做到开机启动。昨天项目封包安装后要设置开机启动,下面说明如何设置开机启动的。

一、chkconfig命令

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。

chkconfig --list [name]:显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。chkconfig --add name:增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。chkconfig --del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。chkconfig [--level levels] name:设置某一服务在指定的运行级是被启动,停止还是重置。

--level<等级代号>  
指定读系统服务要在哪一个执行等级中开启或关毕

  • 0:表示关机

  • 1:单用户模式

  • 2:无网络连接的多用户命令行模式

  • 3:有网络连接的多用户命令行模式

  • 4:不可用

  • 5:带图形界面的多用户模式

  • 6:重新启动


二、设置脱敏项目的开机启动

安装包创建tmd.sh脚本

#!/bin/bash# chkconfig: 2345 10 90# description: 总行服务器 监听8766端口
# 脚本第二行必须设置,解释如下:#  “#chkconfig: 2345 10 90” 表示在2/3/4/5运行级别启动,启动序号(S10),关闭序号(K90)

# return valueRETVAL=0# 运行程序位置server_dir="/sfwz/tuomin/service"# 程序运行后生成pid文件,内容为程序的进程号server_pid="$server_dir/run.pid"# 实际运行程序名server_name="tm"#当前路径path=$(pwd)
start() {        echo -n "Starting ${server_name}:" PIDS=`ps -ef |grep ${server_name} api|grep -v grep | awk '{print $2}'` if [ "$PIDS" != "" ]; then echo "${server_name} is runing!"        else MYPIDS=`ps -ef |grep mysqld_safe |grep -v grep | awk '{print $2}'` if [ "$MYPIDS" == "" ]; then service mysql start fi export LD_LIBRARY_PATH=/sfwz/tuomin/clidriver/lib                # 进入项目目录并启动 cd $server_dir nohup ./tuomin api -c config/settings.yml >> /tmp/tuomin.log 2>&1 & echo $! > $server_pid # 回到当前目录 cd $path echo "ok" fi}stop(){        echo -n "Stopping ${server_name}:" if [ ! -f $server_pid ];then echo "PID file "${server_pid}" does not exist" echo "Is ${server_name} running?" else kill -9 $(cat $server_pid) rm -f $server_pid echo "ok" fi}case "$1" in start) start ;; stop) stop ;; restart) stop start RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1esac
exit $RETVAL


添加服务并启动

# 安装脚本中拷贝tmd.sh到服务目录cp tmd.sh /etc/rc.d/init.d/tmd
# 添加服务chkconfig --add tmd# 设置服务等级chkconfig --level 345 tmdon
# 启动服务service tmd start


 三、注意事项

1)增加mysql启动判断

 MYPIDS=`ps -ef |grep mysqld_safe |grep -v grep | awk '{print $2}'`  if [ "$MYPIDS" == "" ]; then          service mysql start  fi

开始在启动中未加入mysql启动脚本,mysql启动序号在tmd后面。所以增加了判断mysql是否启动的判断。

2)DB2环境变量设置

export LD_LIBRARY_PATH=/sfwz/tuomin/clidriver/lib

我们使用db2数据库,在/etc/profile中设置环境变量。但开机启动中环境变量还没起作用。所以在start脚本中增加了环境变量设置。

3)项目路径脚本问题

我们使用golang语言开发的脱敏系统,脚本启动一般都是相对路径。如果设置绝对路径启动脚本,程序中有一些涉及文件操作的部分会报错。

# 进入项目目录并启动cd $server_dirnohup ./tuomin api -c config/settings.yml >> /tmp/tuomin.log   2>&1 &echo $! > $server_pid# 回到当前目录cd $path

所以在启动脚本中cd进入目录运行。

上面就是整个设置开机启动及相应脚本,大家可以对脚本进行修改。设置自己项目的开机启动。

原文始发于微信公众号(数据安全治理技术):Linux下如何把项目设置为开机启动服务

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月4日12:28:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux下如何把项目设置为开机启动服务https://cn-sec.com/archives/1587055.html

发表评论

匿名网友 填写信息