作者: admin

  • 使用 pm2 管理 Node.js 进程并配置定时重启

    pm2 是一个强大的 Node.js 进程管理器,可以帮助你轻松管理 Node.js 应用,包括启动、停止、重启、监控等。下面介绍如何使用 pm2 管理 Node.js 进程并配置定时重启:

    1. 安装 pm2

    npm install -g pm2

    2. 启动 Node.js 应用

    使用 pm2 start 命令启动你的 Node.js 应用,例如:

    pm2 start app.js

    3. 配置定时重启

    使用 pm2 restart 命令配置定时重启,例如:

    pm2 restart app.js --cron "*/30 * * * *"

    解释:

    • pm2 restart app.js:重启名为 app.js 的进程。
    • --cron "*/30 * * * *":使用 cron 表达式配置重启时间。

    cron 表达式:

    • */30:每 30 分钟执行一次。
    • *:表示所有时间单位都匹配。

    4. 查看 pm2 进程状态

    使用 pm2 list 命令查看所有 pm2 管理的进程状态。

    5. 停止 pm2 进程

    使用 pm2 stop 命令停止 pm2 管理的进程,例如:

    pm2 stop app.js

    6. 删除 pm2 进程

    使用 pm2 delete 命令删除 pm2 管理的进程,例如:

    pm2 delete app.js

    7. 其他 pm2 命令

    pm2 提供了丰富的命令来管理 Node.js 进程,例如:

    • pm2 logs: 查看进程日志。
    • pm2 monit: 监控进程状态。
    • pm2 reload: 重新加载进程配置。
    • pm2 restart: 重启进程。
    • pm2 stop: 停止进程。
    • pm2 delete: 删除进程。

    注意:

    • 定时重启可能会导致应用短暂中断服务,请根据实际情况选择合适的重启时间。
    • 使用 pm2 ecosystem.config.js 文件可以更方便地管理多个进程和配置。

    示例:

    // ecosystem.config.js
    module.exports = {
      apps: [
        {
          name: 'my-app',
          script: 'app.js',
          watch: ['src'],
          env: {
            NODE_ENV: 'development'
          },
          env_production: {
            NODE_ENV: 'production'
          },
          restart_delay: 1000,
          cron_restart: '*/30 * * * *'
        }
      ]
    };

    使用 pm2 start ecosystem.config.js 命令启动应用,并根据配置进行定时重启。


  • 配置 crontab 定时重启 Node.js 进程

    您可以使用以下方法配置 crontab 定时重启 Node.js 进程:

    1. 编写重启脚本

    首先,您需要编写一个脚本,用于重启 Node.js 进程。以下是一个示例脚本:

    #!/bin/bash
    
    # 进程名称
    PROCESS_NAME="your_process_name"
    
    # 查找进程并重启
    for i in (seq 1 10); do   PID=(pgrep -f "PROCESS_NAMEi")
      if [ ? -eq 0 ]; then     echo "Restarting processPROCESS_NAMEi with PIDPID..."
        kill -9 PID     # 重新启动进程     # 使用您实际的启动命令替换以下命令     nohup node your_app.jsi &
        echo "Process PROCESS_NAMEi restarted."
      else
        echo "Process PROCESS_NAMEi not found."
      fi
      sleep 1800 # 等待 30 分钟
    done

    解释:

    • #!/bin/bash: 指定脚本解释器为 bash。
    • PROCESS_NAME: 替换为您的 Node.js 进程名称。
    • pgrep -f "PROCESS_NAMEi": 查找名为 PROCESS_NAMEi</code> 的进程,并获取其 PID。</li> <!-- /wp:list-item -->  <!-- wp:list-item --> <li><code>kill -9PID: 强制杀死进程。
    • nohup node your_app.js i &</code>: 重新启动 Node.js 进程,使用您的实际启动命令替换 <code>node your_app.jsi
    • sleep 1800: 等待 30 分钟,然后重启下一个进程。

    2. 配置 crontab

    将脚本保存为 restart_process.sh 并赋予执行权限:

    chmod +x restart_process.sh

    然后使用 crontab -e 命令编辑 crontab 文件,添加以下内容:

    0,30 * * * * /path/to/restart_process.sh

    解释:

    • 0,30 * * * *: 表示每小时的 0 分和 30 分执行一次。
    • /path/to/restart_process.sh: 替换为 restart_process.sh 脚本的路径。

    3. 测试

    保存 crontab 文件并测试脚本是否正常工作。您可以使用 crontab -l 命令查看 crontab 文件内容,并使用 tail -f /var/log/cron 命令查看 cron 日志。

    注意:

    • 确保 restart_process.sh 脚本中的启动命令正确,并根据您的实际情况进行修改。
    • 您可以根据需要调整脚本中的 sleep 时间,以控制重启间隔。
    • 为了确保重启进程的正常运行,建议您在脚本中添加日志记录功能,方便排查问题。

    希望以上信息对您有所帮助。

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网 沪ICP备2024052574号-1