/ 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
Start program via. sudo
Fra : Kasper Johansen


Dato : 18-01-06 14:40

Hej gruppe.


Jeg vil gerne, via. sudo, starte et program, der skal kører på serveren.

Problemet opstår i idet, at når jeg kører kommandoen:

exec("sudo mitprogram");


....så bliver programmet ved med at køre, og PHP bliver ligeledes ved men
at vente på input, som at du kan returnere. Scriptet afsluttes derfor
aldrig.

Hvordan starter jeg programmet, uden at PHP venter på input fra det?


--
Med venlig hilsen
Kasper Johansen

 
 
Jesper H (18-01-2006)
Kommentar
Fra : Jesper H


Dato : 18-01-06 17:10

Dette er uprøvet:
<?php
exec("sudo mitprogram &");
?>
Men kan det være svaret?

--
Mvh Jesper, http://fdf.dk/landsdel1/


Kasper Johansen (18-01-2006)
Kommentar
Fra : Kasper Johansen


Dato : 18-01-06 18:11

Jesper H skrev:
> <?php
> exec("sudo mitprogram &");
> ?>
> Men kan det være svaret?

Det sidste "&"-tegn, gør altså at PHP ikke venter på input fra
programmets afslutning?


--
Med venlig hilsen
Kasper Johansen

Peter Brodersen (18-01-2006)
Kommentar
Fra : Peter Brodersen


Dato : 18-01-06 18:17

On Wed, 18 Jan 2006 18:11:09 +0100, Kasper Johansen
<kaspernj@gmail.com> wrote:

>Det sidste "&"-tegn, gør altså at PHP ikke venter på input fra
>programmets afslutning?

Det betyder typisk, at programmet bliver afviklet som en
baggrundsproces.

Dog, en hurtig test viser at der ikke er forskel på følgende:
   exec("sleep 10"); print "foo";
og
   exec("sleep 10 &"); print "bar";

Begge venter i 10 sekunder, før php printer noget. Det samme med fx
"nohup sleep 10 &", så det er heller ikke en løsning.

Skal php afvikles via en webside? I modsat kald kunne en mulighed være
at forke processen med pcntl-funktionerne. Det er dog ikke en
anbefaling, hvis man ikke er bekendt med processtyring.

--
- Peter Brodersen
Find dig selv: http://map.ter.dk/

Ove Lie (18-01-2006)
Kommentar
Fra : Ove Lie


Dato : 18-01-06 18:26

"Peter Brodersen" <usenet2006@ter.dk> skrev i melding
news:dqlt7u$536$1@news.klen.dk...
> On Wed, 18 Jan 2006 18:11:09 +0100, Kasper Johansen
> <kaspernj@gmail.com> wrote:
>
> >Det sidste "&"-tegn, gør altså at PHP ikke venter på input fra
> >programmets afslutning?
>
> Det betyder typisk, at programmet bliver afviklet som en
> baggrundsproces.
>
> Dog, en hurtig test viser at der ikke er forskel på følgende:
> exec("sleep 10"); print "foo";
> og
> exec("sleep 10 &"); print "bar";

hvad med at avvikle et bashprogram som avikler "program &" ?

Bare en mulig ide.

-Ove



Peter Brodersen (18-01-2006)
Kommentar
Fra : Peter Brodersen


Dato : 18-01-06 18:32

On Wed, 18 Jan 2006 18:25:58 +0100, "Ove Lie" <Ove.Ed.Lie@c2i.net>
wrote:

>hvad med at avvikle et bashprogram som avikler "program &" ?

Det prøvede jeg også. Det ændrede heller ikke på noget (uanset om både
bashprogrammet i sig selv, og det afviklede program blev nohup'et og
&'et)

Så lang tid tager det nu ikke at teste, og sleep er en fin kommando at
teste med

--
- Peter Brodersen
Find dig selv: http://map.ter.dk/

Ove Lie (18-01-2006)
Kommentar
Fra : Ove Lie


Dato : 18-01-06 19:30

"Peter Brodersen" <usenet2006@ter.dk> skrev i melding
news:dqlu41$536$2@news.klen.dk...
> >hvad med at avvikle et bashprogram som avikler "program &" ?
>

> Så lang tid tager det nu ikke at teste, og sleep er en fin kommando at
> teste med

bare en vill ide fra meg. Har ikke noen php-server og teste mot just nu

-Ove



Kasper Johansen (18-01-2006)
Kommentar
Fra : Kasper Johansen


Dato : 18-01-06 19:38

Peter Brodersen skrev:
> Det prøvede jeg også. Det ændrede heller ikke på noget (uanset om både
> bashprogrammet i sig selv, og det afviklede program blev nohup'et og
> &'et)
>
> Så lang tid tager det nu ikke at teste, og sleep er en fin kommando at
> teste med

Det jeg helt præcist, skal bruge scriptet til, er at genstarte en
QEMU-emulation. Jeg vil, som fortalt, gøre dette ved at sende en
shell-kommando fra "root" (eller en anden bruger), som derefter startet
QEMU-scriptet med samme kommando som det var startet fra (hentet ved
hjælp af "ps -aux").

Jeg tvangsflusher et redirect-script ud (JavaScript), som gør at så
snart at PHP-scriptet går kold over QEMU, vil brugeren blive redirectet.
Scriptet vil herefter kører som normalt.

Umiddelbart afsluttes QEMU-emulationen ikke, når PHP-scriptet får et
timeout (da der ikke kom noget input).


Jeg syntes dog ikke, at dette er den rigtige måde, at gøre det på. Så
jeg ville stadigvæk blive meget glad, hvis der var en derude, der havde
en løsning på mit problem.


--
Med venlig hilsen
Kasper Johansen

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

Månedens bedste
Årets bedste
Sidste års bedste