<记录> PHP监控进程状态,完成掉线自动重启
1. 利用Shell脚本实现
#!/bin/bash PORT=0 while [ true ];do read -p "please enter the port that you want to minitor:" port if [ $port -gt 65536 ] || [ $port -lt 1 ];then echo 'the port you enter is not correctly' else PORT=$port break fi done while [ true ]; do if [ `netstat -anp 2> /dev/null | grep ${PORT} | wc -l` -gt 0 ] ;then echo 'service is online' else echo 'service is offline' cd /home/eko/share/live_admin/script php ./ws.php & fi sleep 3 done
2. 利用Swoole定时器实现
class Server { const PORT = 8811; public function port() { $shell = "netstat -anp 2>/dev/null | grep ". self::PORT . " | grep LISTEN | wc -l"; $result = shell_exec($shell); if($result != 1) { // 发送报警服务 邮件 短信 /// todo echo date("Ymd H:i:s")."error".PHP_EOL; } else { echo date("Ymd H:i:s")."succss".PHP_EOL; } } } // nohup swoole_timer_tick(2000, function($timer_id) { (new Server())->port(); echo "time-start".PHP_EOL; });