<记录> PHP监控进程状态,完成掉线自动重启

时间:2023-03-08 18:21:29

1. 利用Shell脚本实现

#!/bin/bash

PORT=

while [ true ];do
read -p "please enter the port that you want to minitor:" port
if [ $port -gt ] || [ $port -lt ];then
echo 'the port you enter is not correctly'
else
PORT=$port
break
fi
done while [ true ]; do
if [ `netstat -anp > /dev/null | grep ${PORT} | wc -l` -gt ] ;then
echo 'service is online'
else
echo 'service is offline'
cd /home/eko/share/live_admin/script
php ./ws.php &
fi
sleep
done

2. 利用Swoole定时器实现

class Server {
const PORT = ; public function port() {
$shell = "netstat -anp 2>/dev/null | grep ". self::PORT . " | grep LISTEN | wc -l"; $result = shell_exec($shell);
if($result != ) {
// 发送报警服务 邮件 短信
/// todo
echo date("Ymd H:i:s")."error".PHP_EOL;
} else {
echo date("Ymd H:i:s")."succss".PHP_EOL;
}
}
} // nohup
swoole_timer_tick(, function($timer_id) {
(new Server())->port();
echo "time-start".PHP_EOL;
});