You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#!/bin/bash# Set the interval between checks in seconds
interval=300
# Set the name of the process to check and restart
process_name="your_process_name"whiletrue;do# Get the status of the process using pm2 describe
status=$(pm2 describe $process_name| grep status | awk '{print $2}')# If the process is stopped or errored, restart itif [[ "$status"=="stopped" ]] || [[ "$status"=="errored" ]];thenecho"Restarting $process_name"
pm2 start $process_namefi# Wait for the next interval
sleep $intervaldone
const{ exec }=require('child_process');// 设置重启的应用名称constappName='your-app-name';// 设置检查应用状态的间隔时间,单位为毫秒constinterval=30000;// 设置应用崩溃后的最大重启次数constmaxRetries=3;letretries=0;console.log(`Starting monitor for ${appName}...`);// 启动定时任务setInterval(()=>{exec(`pm2 describe ${appName}`,(err,stdout,stderr)=>{if(err||stderr){console.error(`Failed to describe ${appName}: ${err||stderr}`);retries++;if(retries>maxRetries){console.error(`Max retries reached, stopping monitor for ${appName}.`);process.exit(1);}console.log(`Retrying in ${interval/1000} seconds...`);return;}constdescription=JSON.parse(stdout)[0];if(description.pm2_env.status!=='online'){console.error(`${appName} is not online, current status is ${description.pm2_env.status}. Restarting...`);exec(`pm2 restart ${appName}`,(err,stdout,stderr)=>{if(err||stderr){console.error(`Failed to restart ${appName}: ${err||stderr}`);}else{console.log(`${appName} has been restarted.`);retries=0;}});}else{console.log(`${appName} is online.`);}});},interval);
这里提供一个 Node.js 实现的自动重启服务的定时任务脚本。脚本基于 cron 模块进行定时任务的调度,每隔一定时间检查服务的运行状态,如果服务停止运行,则自动重启服务。
注意,上述代码中的 startCommand 和 checkStatusCommand 可能需要根据实际情况进行修改。如果你的服务是通过 systemd 管理的,那么 checkStatusCommand 可以直接使用 systemctl is-active 命令进行检查。如果你的服务是通过 pm2 管理的,那么 checkStatusCommand 可以使用 pm2 describe 命令进行检查。
另外,脚本中的定时任务是每隔 5 分钟检查一次服务的运行状态,你可以根据实际需求进行调整。
将 your_process_name 替换为实际的进程名称,将 interval 替换为检查间隔时间(以秒为单位)。运行此脚本将会每隔一定时间检查进程状态并自动重启,确保进程始终处于运行状态。
你需要将 your-app-name 替换为你的应用名称,并根据需要修改检查间隔时间和最大重试次数。运行该脚本后,它将每隔一定时间检查一次应用状态,并在应用崩溃后尝试重启。
-- chatGPT
The text was updated successfully, but these errors were encountered: