Bash 将pm2工艺的启动延迟至cron时间

Bash 将pm2工艺的启动延迟至cron时间,bash,cron,startup,pm2,Bash,Cron,Startup,Pm2,我正在设置两个脚本,使用pm2在周六晚上8:00在所有服务器上重新启动所有进程,并在dev服务器上每天晚上10:00停止所有进程。这有助于控制正在进行的流程的资源使用,以及删除开发中不经常使用的流程 到目前为止,我使用pm2配置来防止自动重新启动,然后在cron_重新启动计划上运行两个脚本,这两个脚本重新启动和停止服务,并在它们之间进行一些分离。它们一起工作很好,但我需要说明服务器何时重新启动,或者服务是否停止,我需要重新启动它;在初始启动时,两个服务将同时重新启动。因此,我宁愿将这两个服务的启

我正在设置两个脚本,使用pm2在周六晚上8:00在所有服务器上重新启动所有进程,并在dev服务器上每天晚上10:00停止所有进程。这有助于控制正在进行的流程的资源使用,以及删除开发中不经常使用的流程

到目前为止,我使用pm2配置来防止自动重新启动,然后在cron_重新启动计划上运行两个脚本,这两个脚本重新启动和停止服务,并在它们之间进行一些分离。它们一起工作很好,但我需要说明服务器何时重新启动,或者服务是否停止,我需要重新启动它;在初始启动时,两个服务将同时重新启动。因此,我宁愿将这两个服务的启动延迟到它们正确的Cron时间表。我知道pm2有重启延迟,但这似乎像睡眠一样工作,用于重启,而不是初始启动。有人有过这样的用例吗

我的脚本如下:

pm2_config.json

{
  "apps" : [
    {
      "name" : "pm2restart",
      "script" : "restart.sh",
      "cron_restart": "0 19 * * Sat",
      "autorestart": false,
      "pid_file": "~/apps/pm2appcontrol/bin/pm2restart.pid",
      "out_file": "~/apps/logs/pm2appcontrol/pm2restart.log",
      "error_file": "~/apps/logs/pm2appcontrol/pm2restart.log",
      "log_date_format" : "YYYY-MM-DD HH:mm:ss"
    },
    {
      "name" : "pm2stop",
      "script" : "stop.sh",
      "cron_restart": "0 21 * * *",
      "autorestart": false,
      "pid_file": "~/apps/pm2appcontrol/bin/pm2stop.pid",
      "out_file": "~/apps/logs/pm2appcontrol/pm2stop.log",
      "error_file": "~/apps/logs/pm2appcontrol/pm2stop.log",
      "log_date_format" : "YYYY-MM-DD HH:mm:ss"
    }
  ]
}

这将与脚本一起运行:

#!/bin/bash

pm2 start ./pm2_config.json
配置文件中的两个脚本只是:

#!/bin/bash

#pm2restart


for appName in $HOME/apps/* ; do
    service=$(basename "$appName")
    if [ $service != pm2apprestart ] && [ $service != haproxy ]
    then
        echo "Restarting $service"
        pm2 restart /$service/
    else
        echo "======================"
        echo "Skipping $service"
        echo "======================"
    fi
done


也许是一个非常简单的解决方案,但在您的bash脚本中,睡眠不能帮助您实现这一点吗

sleep $(( $(date -j 2200 +%s) - $(date +%s) ))
date-j告诉您不要设置日期 2200=24小时时间段


或者at命令。虽然这实际上是一次性的,您应该创建一个cronjob来在特定时间执行脚本

sleep $(( $(date -j 2200 +%s) - $(date +%s) ))