/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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 *

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste