2013-03-31 1 views
2

쉘없이 내 리눅스 서버의 모니터링 서비스가 필요하며이 기능을 수행하는 새로운 PHP 스크립트를 작성합니다. 실행 후 스크립트는 서비스 상태를 기록하지 않습니다. 내가 터미널에서이 명령을 작성하는 경우 - - 예를 들어 shell_exec return null - 리눅스 서비스 모니터링

service nginx status |awk '{print $4} 

그는 나에게 반환 될 수 있습니다 :

Run... 

이 스크립트 :

<?php 
$nginx = shell_exec("service nginx status |awk '{print $4}'"); 
$bd = shell_exec("service mysqld status |awk '{print $4}'"); 
$jabber = shell_exec("service ejabberd status |awk '{print $4}'"); 
$cgi = shell_exec("service php-fpm status |awk '{print $4}'"); 
$mem = shell_exec("service memcached status |awk '{print $4}'"); 
echo "<b>Web-server nginx:</b> $nginx"; 
echo "<br>"; 
echo "<b>Server MySQL:</b> $bd"; 
echo "<br>"; 
echo "<b>Server Jabber Jabber:</b> $jabber"; 
echo "<br>"; 
echo "<b>Service php-fpm:</b> $cgi"; 
echo "<br>"; 
echo "<b>Service memcached:</b> $mem"; 
?> 

PHP를 통해이 작업을 수행 할 경우, 모든 '$'함수는 서비스 상태에 대한 빈 정보를 반환합니다. 이 스크립트를 올바르게 작성하는 방법은 무엇입니까? 제발 도와주세요 :)

+0

아마도'service' 명령이 웹 서버의'$ PATH '에 없기 때문에 명령의 전체 경로를 사용해보십시오. – Barmar

+0

고마워요! /etc/init.d/service status 명령이 작동합니다! – user2202533

답변

2

디렉토리가 웹 서버의 기본값 인 $PATH에 없기 때문에 service 명령의 전체 경로를 사용하십시오.