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; });
来源:oschina
链接:https://my.oschina.net/u/4479011/blog/4293935