【问题标题】:create cron to restart pm2 instance fails创建 cron 以重新启动 pm2 实例失败
【发布时间】:2018-04-25 04:34:41
【问题描述】:

我在使用 cron 选项卡重新启动实例时遇到问题

#!/usr/bin/node
*15 * * * * /usr/bin/node /usr/bin/pm2 restart 4

但我的问题是我有两个 pm2 守护进程。我想要的是 /opt.pm2 所以每次我想使用 pm2 我都需要使用这个命令

export PM2_HOME="/opt/.pm2"

我需要知道如何在我的 crontab 中传递这个 env 变量以重新启动实例 4,因为 /usr/bin/pm2 中我没有运行我的应用程序了解吗?

但我得到了错误

From root@ip120.ip-46-105-248.eu  Sun Nov 12 11:23:01 2017
Return-Path: <root@ip120.ip-46-105-248.eu>
X-Original-To: root
Delivered-To: root@ip120.ip-46-105-248.eu
Received: by ip120.ip-46-105-248.eu (Postfix, from userid 0)
    id E84CA100921; Sun, 12 Nov 2017 11:23:01 +0000 (WET)
From: "(Cron Daemon)" <root@ip120.ip-46-105-248.eu>
To: root@ip120.ip-46-105-248.eu
Subject: Cron <root@ip120> /usr/bin/node /usr/bin/pm2 restart 4
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <XDG_SESSION_ID=4300>
X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20171112112301.E84CA100921@ip120.ip-46-105-248.eu>
Date: Sun, 12 Nov 2017 11:23:01 +0000 (WET)

Use --update-env to update environment variables
[PM2] Applying action restartProcessId on app [4](ids: 4)
[PM2][ERROR] Process 4 not found
┌──────────┬────┬──────┬─────┬────────┬─────────┬────────┬─────┬─────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
└──────────┴────┴──────┴─────┴────────┴─────────┴────────┴─────┴─────┴──────────┘
 Module activated
┌───────────────┬─────────┬────────────┬────────┬─────────┬─────┬─────────────┐
│ Module        │ version │ target PID │ status │ restart │ cpu │ memory      │
├───────────────┼─────────┼────────────┼────────┼─────────┼─────┼─────────────┤
│ pm2-logrotate │ 2.2.0   │ N/A        │ online │ 0       │ 0%  │ 91.223 MB   │
└───────────────┴─────────┴────────────┴────────┴─────────┴─────┴─────────────┘
 Use `pm2 show <id|name>` to get more details about an app

【问题讨论】:

    标签: node.js linux cron pm2


    【解决方案1】:

    如果除环境变量之外的所有其他条件都相同,您可以将 crontab 命令设置为env PM2_HOME="/opt/.pm2" /usr/bin/node /usr/bin/pm2 restart 4。或者/usr/bin/env 而不是env

    如果通过这种方式没有成功,可以编写一个小shell脚本,只导出PM2_HOME值并重启pm2。然后把这个shell脚本作为cron命令。

    【讨论】:

    • 所以你说要做" */15 * * * * env PM2_HOME="/opt/.pm2" /usr/bin/node /usr/bin/pm2 restart 4" ?跨度>
    • @AndréBastos 是的,应该可以。但是在将它放入 crontab 之前先在你的 shell 中尝试一下。
    【解决方案2】:

    按照@sapht 告诉我的去做

    crontab -l
    
    #!/usr/bin/node
    */45 * * * *  env PM2_HOME="/opt/.pm2" /usr/bin/node /usr/bin/pm2 restart 4
    

    我得到这个输出

    From root@ip120.ip-46-105-248.eu  Sun Nov 12 12:15:02 2017
    Return-Path: <root@ip120.ip-46-105-248.eu>
    X-Original-To: root
    Delivered-To: root@ip120.ip-46-105-248.eu
    Received: by ip120.ip-46-105-248.eu (Postfix, from userid 0)
            id 7FC6010092C; Sun, 12 Nov 2017 12:15:02 +0000 (WET)
    From: "(Cron Daemon)" <root@ip120.ip-46-105-248.eu>
    To: root@ip120.ip-46-105-248.eu
    Subject: Cron <root@ip120> env PM2_HOME="/opt/.pm2" /usr/bin/node /usr/bin/pm2 restart 4
    Content-Type: text/plain; charset=UTF-8
    Auto-Submitted: auto-generated
    Precedence: bulk
    X-Cron-Env: <XDG_SESSION_ID=4304>
    X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
    X-Cron-Env: <LANG=en_US.UTF-8>
    X-Cron-Env: <SHELL=/bin/sh>
    X-Cron-Env: <HOME=/root>
    X-Cron-Env: <PATH=/usr/bin:/bin>
    X-Cron-Env: <LOGNAME=root>
    X-Cron-Env: <USER=root>
    Message-Id: <20171112121502.7FC6010092C@ip120.ip-46-105-248.eu>
    Date: Sun, 12 Nov 2017 12:15:02 +0000 (WET)
    
    Use --update-env to update environment variables
    [PM2] Applying action restartProcessId on app [4](ids: 4)
    [PM2] [wscontroller-gps-service](4) ✓
    ┌──────────────────────────┬────┬─────────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐
    │ App name                 │ id │ mode    │ pid   │ status │ restart │ uptime │ cpu │ mem       │ watching │
    ├──────────────────────────┼────┼─────────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤
    │ wscontroller-api         │ 2  │ cluster │ 25521 │ online │ 0       │ 47m    │ 0%  │ 47.6 MB   │ disabled │
    │ wscontroller-gps-service │ 4  │ fork    │ 2974  │ online │ 5       │ 0s     │ 99% │ 14.0 MB   │ disabled │
    │ wscontroller-proxy       │ 5  │ cluster │ 25549 │ online │ 0       │ 47m    │ 0%  │ 45.5 MB   │ disabled │
    │ wscontroller-service     │ 3  │ cluster │ 29681 │ online │ 1       │ 28m    │ 31% │ 83.6 MB   │ disabled │
    │ wscontroller-ui-server   │ 1  │ cluster │ 25515 │ online │ 0       │ 47m    │ 0%  │ 35.7 MB   │ disabled │
    └──────────────────────────┴────┴─────────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘
     Module activated
    ┌───────────────┬─────────┬────────────┬────────┬─────────┬─────┬─────────────┐
    │ Module        │ version │ target PID │ status │ restart │ cpu │ memory      │
    ├───────────────┼─────────┼────────────┼────────┼─────────┼─────┼─────────────┤
    │ pm2-logrotate │ 2.2.0   │ N/A        │ online │ 0       │ 0%  │ 36.527 MB   │
    └───────────────┴─────────┴────────────┴────────┴─────────┴─────┴─────────────┘
     Use `pm2 show <id|name>` to get more details about an app
    

    【讨论】:

      猜你喜欢
      • 2012-11-01
      • 2015-07-05
      • 2020-02-22
      • 1970-01-01
      • 2013-01-20
      • 2019-08-18
      • 2021-09-03
      • 2021-02-01
      • 1970-01-01
      相关资源
      最近更新 更多