centos

centos进程启动脚本编写

小樊
43
2025-08-12 20:45:04
栏目: 智能运维

在CentOS系统中,编写一个进程启动脚本通常涉及以下几个步骤:

  1. 创建脚本文件: 使用文本编辑器(如vi, nano等)创建一个新的脚本文件。例如,创建一个名为my_service.sh的脚本。

    sudo vi /etc/init.d/my_service.sh
    
  2. 编写脚本内容: 在脚本中添加必要的内容,包括启动、停止、重启和状态检查等功能。以下是一个简单的示例:

    #!/bin/bash
    
    # 设置脚本路径
    SCRIPT_PATH=$(realpath "$0")
    SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"
    
    # 设置服务名称
    SERVICE_NAME="my_service"
    
    # 设置服务启动命令
    START_CMD="/usr/bin/python /path/to/your/script.py"
    
    # 设置日志文件路径
    LOG_FILE="/var/log/${SERVICE_NAME}.log"
    
    # 启动服务
    start() {
        if [ -f $SCRIPT_DIR/${SERVICE_NAME}.pid ]; then
            echo "${SERVICE_NAME} is already running."
        else
            echo "Starting ${SERVICE_NAME}..."
            nohup $START_CMD >> $LOG_FILE 2>&1 &
            echo $! > $SCRIPT_DIR/${SERVICE_NAME}.pid
            echo "${SERVICE_NAME} started."
        fi
    }
    
    # 停止服务
    stop() {
        if [ -f $SCRIPT_DIR/${SERVICE_NAME}.pid ]; then
            echo "Stopping ${SERVICE_NAME}..."
            kill $(cat $SCRIPT_DIR/${SERVICE_NAME}.pid)
            rm $SCRIPT_DIR/${SERVICE_NAME}.pid
            echo "${SERVICE_NAME} stopped."
        else
            echo "${SERVICE_NAME} is not running."
        fi
    }
    
    # 重启服务
    restart() {
        stop
        start
    }
    
    # 检查服务状态
    status() {
        if [ -f $SCRIPT_DIR/${SERVICE_NAME}.pid ]; then
            PID=$(cat $SCRIPT_DIR/${SERVICE_NAME}.pid)
            if ps -p $PID > /dev/null; then
                echo "${SERVICE_NAME} is running with PID $PID."
            else
                echo "${SERVICE_NAME} is not running but PID file exists."
            fi
        else
            echo "${SERVICE_NAME} is not running."
        fi
    }
    
    # 根据传入的参数执行相应的操作
    case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            restart
            ;;
        status)
            status
            ;;
        *)
            echo "Usage: /etc/init.d/${SERVICE_NAME} {start|stop|restart|status}"
            exit 1
            ;;
    esac
    
    exit 0
    
  3. 设置脚本权限: 确保脚本具有可执行权限。

    sudo chmod +x /etc/init.d/my_service.sh
    
  4. 注册服务: 使用chkconfigsystemctl将脚本注册为系统服务。

    • 使用chkconfig

      sudo chkconfig --add my_service.sh
      sudo chkconfig my_service.sh on
      
    • 使用systemctl

      sudo systemctl daemon-reload
      sudo systemctl enable my_service.sh
      sudo systemctl start my_service.sh
      
  5. 测试服务: 启动、停止、重启和检查服务状态,确保脚本正常工作。

    sudo service my_service.sh start
    sudo service my_service.sh stop
    sudo service my_service.sh restart
    sudo service my_service.sh status
    

通过以上步骤,你可以在CentOS系统中编写并配置一个进程启动脚本。

0
看了该问题的人还看了