|
| Checke PS AUX Fra : Jimmy |
Dato : 23-08-03 21:28 |
|
Hej
Jeg ønsker at undersøge, om en given applikation afvikles på min Apache RH
9.0 server.
Jeg har forsøgt mig med følgende:
- Google med varianter af følgende: php "ps aux" check file running
- http://dk.php.net/manual/en/function.system.php
- Denne kode, som er modificeret i forhold til eksemplet jeg fandt:
-----
function psaux()
{
return system ("/bin/ps aux");
}
-----
Så snart funktionen kaldes skrives data data direkte til skærmen, mens jeg
blot vil
returnere data.
Hvordan piper jeg output over i en variabel?
Mvh
Jimmy
| |
Jacob Atzen (23-08-2003)
| Kommentar Fra : Jacob Atzen |
Dato : 23-08-03 23:35 |
|
"Jimmy" <nyhedsgruppe@get2net.dk> writes:
> Så snart funktionen kaldes skrives data data direkte til skærmen, mens jeg
> blot vil
> returnere data.
>
> Hvordan piper jeg output over i en variabel?
Kan:
< http://dk2.php.net/manual/en/function.shell-exec.php>
bruges?
--
Med venlig hilsen
- Jacob Atzen
| |
Jimmy (23-08-2003)
| Kommentar Fra : Jimmy |
Dato : 23-08-03 23:46 |
|
"Jacob Atzen" <jacob@aub.dk> wrote in message
news:87smnsf1f9.fsf@morpheus.aub.dk...
> "Jimmy" <nyhedsgruppe@get2net.dk> writes:
>
> > Så snart funktionen kaldes skrives data data direkte til skærmen, mens
jeg
> > blot vil
> > returnere data.
> >
> > Hvordan piper jeg output over i en variabel?
>
> Kan:
>
> < http://dk2.php.net/manual/en/function.shell-exec.php>
>
> bruges?
Både og.
Den kan pipe data over i en variabel, men output fra "ps aux" er trunkeret:
gsm 31950 0.0 2.8 12096 5480 ? S Aug16 0:12
/usr/sbin/httpd -
Stregen til sidst er parametre til httpd, som så ikke vises.
Jeg kan få vist mere, hvis jeg nøjes med "ps x", men så mangler andre
informationer jo.
Måske det nu er blevet et rent UNIX-spørgsmål...
Tak for indsatsen indtil videre
Mvh
Jimmy
| |
Peter Brodersen (24-08-2003)
| Kommentar Fra : Peter Brodersen |
Dato : 24-08-03 12:46 |
|
On Sun, 24 Aug 2003 00:46:29 +0200, "Jimmy" <nyhedsgruppe@get2net.dk>
wrote:
>Stregen til sidst er parametre til httpd, som så ikke vises.
>Jeg kan få vist mere, hvis jeg nøjes med "ps x", men så mangler andre
>informationer jo.
ps aux --columns 200
eller
ps auxwww
--
- Peter Brodersen
Ugens sprogtip: mayonnaise (og ikke mayonaise)
| |
Anders K. Madsen (24-08-2003)
| Kommentar Fra : Anders K. Madsen |
Dato : 24-08-03 05:34 |
|
On Sun, 24 Aug 2003 00:46:29 +0200
"Jimmy" <nyhedsgruppe@get2net.dk> wrote:
> "Jacob Atzen" <jacob@aub.dk> wrote in message
> news:87smnsf1f9.fsf@morpheus.aub.dk...
> > "Jimmy" <nyhedsgruppe@get2net.dk> writes:
> >
> > Kan:
> >
> > < http://dk2.php.net/manual/en/function.shell-exec.php>
> >
> > bruges?
>
>
> Både og.
> Den kan pipe data over i en variabel, men output fra "ps aux" er trunkeret:
>
> gsm 31950 0.0 2.8 12096 5480 ? S Aug16 0:12
> /usr/sbin/httpd -
>
> Stregen til sidst er parametre til httpd, som så ikke vises.
> Jeg kan få vist mere, hvis jeg nøjes med "ps x", men så mangler andre
> informationer jo.
>
> Måske det nu er blevet et rent UNIX-spørgsmål...
>
$output = shell_exec("COLUMNS=200 /bin/ps aux");
Mvh.
Madsen
--
* Anders K. Madsen * http://lillesvin.linux.dk *
* madsen@sjovedyr.dk * Linux, Ruby, PHP and SQL *
| |
N/A (24-08-2003)
| Kommentar Fra : N/A |
Dato : 24-08-03 11:13 |
|
| |
Jacob Atzen (24-08-2003)
| Kommentar Fra : Jacob Atzen |
Dato : 24-08-03 11:13 |
|
"Jimmy" <nyhedsgruppe@get2net.dk> writes:
> Jeg har brugt flere timer på at søge efter svar og læse om system,
> exec og passthru uden held. Der *må* da være andre der har været i
> samme situation, men jeg fandt dem ikke.
Så kan du jo passende skrive det ind i manualens bruger kommentarer
--
Med venlig hilsen
- Jacob Atzen
| |
Jimmy (24-08-2003)
| Kommentar Fra : Jimmy |
Dato : 24-08-03 11:32 |
|
"Jacob Atzen" <jacob@aub.dk> wrote in message
news:877k53fjnu.fsf@morpheus.aub.dk...
> "Jimmy" <nyhedsgruppe@get2net.dk> writes:
>
> > Jeg har brugt flere timer på at søge efter svar og læse om system,
> > exec og passthru uden held. Der *må* da være andre der har været i
> > samme situation, men jeg fandt dem ikke.
>
> Så kan du jo passende skrive det ind i manualens bruger kommentarer
Point taken - Det vil jeg gøre.
Men så lad os sammen optimere min funktion, som jeg ikke tror er skrevet
optimalt.
Den skal returnere True eller False afhængig af om et givent program
afvikles eller ej.
Her er mit forslag:
-----
function ps_aux($Look_For)
{
if ($Look_For == '') Return False
$str = shell_exec ("COLUMNS=200 /bin/ps aux");
if (strpos ($str, $Look_For) === False)
{
return False;
}
else
{
return True;
}
}
-----
Problemet er, at en $Look_For der ikke er restriktiv nok vil matche for
meget.
Hvad vil I ændre for at optimere funktionen?
Mvh
Jimmy
| |
Jacob Atzen (24-08-2003)
| Kommentar Fra : Jacob Atzen |
Dato : 24-08-03 12:26 |
|
"Jimmy" <nyhedsgruppe@get2net.dk> writes:
> Den skal returnere True eller False afhængig af om et givent program
> afvikles eller ej.
> Her er mit forslag:
>
> -----
> function ps_aux($Look_For)
> {
> if ($Look_For == '') Return False
>
> $str = shell_exec ("COLUMNS=200 /bin/ps aux");
>
> if (strpos ($str, $Look_For) === False)
> {
> return False;
> }
> else
> {
> return True;
> }
> }
> -----
>
>
> Problemet er, at en $Look_For der ikke er restriktiv nok vil matche for
> meget.
>
> Hvad vil I ændre for at optimere funktionen?
Først og fremmest ville jeg ikke bruge -aux. Hvis du bare skal have at
vide, om det program kører kan -ax gøre det.
Så ville jeg opdele hver enkelt linie i tokens, sådan at du kun har
den relevante del af linien. Og endelig ville jeg dele /usr/bin/foo
efter / og kun tage det sidste element i det fremkomne array.
Så har du det enkelte program navn som du kan matche imod. Det er
måske overkill, afhængig af hvad det skal bruges til, men du er sikker
på, at det er de korrekte data der matches imod.
--
Med venlig hilsen
- Jacob Atzen
| |
Jimmy (24-08-2003)
| Kommentar Fra : Jimmy |
Dato : 24-08-03 15:16 |
|
"Jacob Atzen" <jacob@aub.dk> wrote in message
news:873cfrfg9o.fsf@morpheus.aub.dk...
> Først og fremmest ville jeg ikke bruge -aux. Hvis du bare skal have at
> vide, om det program kører kan -ax gøre det.
Det kan vi godt sige.
> Så ville jeg opdele hver enkelt linie i tokens, sådan at du kun har
> den relevante del af linien.
Jeg forsøgte at opdele først i enkelte linier med split på \n, men det gav
intet resultat.
Efter nogle forsøg gav ejg op.
Hvordan vil du gøre?
> Og endelig ville jeg dele /usr/bin/foo
> efter / og kun tage det sidste element i det fremkomne array.
God ide.
> Så har du det enkelte program navn som du kan matche imod. Det er
> måske overkill, afhængig af hvad det skal bruges til, men du er sikker
> på, at det er de korrekte data der matches imod.
Det er altid en fordel at vide, hvad der sker, så jeg synes da klart at vi
skal lave den rutine.
Mvh
Jimmy
| |
Jacob Atzen (24-08-2003)
| Kommentar Fra : Jacob Atzen |
Dato : 24-08-03 15:37 |
|
"Jimmy" <nyhedsgruppe@get2net.dk> writes:
> > Så ville jeg opdele hver enkelt linie i tokens, sådan at du kun har
> > den relevante del af linien.
>
> Jeg forsøgte at opdele først i enkelte linier med split på \n, men det gav
> intet resultat.
> Efter nogle forsøg gav ejg op.
>
> Hvordan vil du gøre?
function getRunningPrograms() {
$out = shell_exec("ps ax");
$lines = split("\n",$out);
$returnval = array();
foreach($lines as $line) {
$truncline = substr($line,27);
$fields = explode(" ",$truncline);
$path = explode("/",$fields[0]);
$returnval[] = array_pop($path);
}
return $returnval;
}
Giver dig et array bestående af navnene på de programmer der kører.
Så kan du bruge in_array() el. lign til at finde ud af om det du
ønsker at matche imod kører.
--
Med venlig hilsen
- Jacob Atzen
| |
Anders K. Madsen (24-08-2003)
| Kommentar Fra : Anders K. Madsen |
Dato : 24-08-03 17:29 |
|
On Sun, 24 Aug 2003 12:31:39 +0200
"Jimmy" <nyhedsgruppe@get2net.dk> wrote:
>
> "Jacob Atzen" <jacob@aub.dk> wrote in message
> news:877k53fjnu.fsf@morpheus.aub.dk...
> > "Jimmy" <nyhedsgruppe@get2net.dk> writes:
> >
> > > Jeg har brugt flere timer på at søge efter svar og læse om system,
> > > exec og passthru uden held. Der *må* da være andre der har været i
> > > samme situation, men jeg fandt dem ikke.
> >
> > Så kan du jo passende skrive det ind i manualens bruger kommentarer
>
>
> Point taken - Det vil jeg gøre.
>
> Men så lad os sammen optimere min funktion, som jeg ikke tror er skrevet
> optimalt.
>
> Den skal returnere True eller False afhængig af om et givent program
> afvikles eller ej.
> Her er mit forslag:
[snip en masse kode m.m.]
>
> Hvad vil I ændre for at optimere funktionen?
>
Hvis du alligevel er ude i noget med at bruge shell_exec(), hvorfor så ikke
gøre det hele i kaldet til shell_exec().
function lookFor($prog)
{
$output = shell_exec("COLUMNS=200 /bin/ps aux | /bin/grep $prog");
if (empty($output) == false) {
return true;
| else {
return false;
}
}
Mvh.
Madsen
--
* Anders K. Madsen * http://lillesvin.linux.dk *
* madsen@sjovedyr.dk * Linux, Ruby, PHP and SQL *
| |
|
|