Hallo,

hier die Lösung meines Problems:

>
> $command = 'cd ' . $programmpfad . ' && ' . 'nohup ./' . $programmname
>                . ' > ' . $logFile . ' 2> ' . $errorFile . ' & echo $!';
>

$command = 'nohup ' . $programmname . ' > ' . $logFile . ' 2> ' .  
$errorFile . ' & echo $!';

Wenn man das cd weg nimmt, wird das Skript im Hintergrund gestartet.  
So wie es sein soll. Das PHP-Skript arbeitet weiter. Mit Hilfe von  
Sessions und sonstigem Schnickschnack kann ich jetzt den Status  
abfragen. Etwas mehr im Detail:

exec($command, $return);
$pid = $return[0];

Mit der PID kann man jetzt mit ps -p $pid abfragen ob das Programm  
noch läuft und natürlich auch killen. Alles schön in eine Klasse  
verpackt ... voila.

> Auf der Shell sieht es ungefähr so aus:
>
> cd /mein/pfad/zum/programm && nohup ./programmname > run.log 2>
> error.lug & echo $!
>

nohup ./programmname > run.log 2> error.lug & echo $!

Das heißt also, ich schreibe mir jetzt ein Skript mit cd und Co, was  
dann im Hintergrund gestartet wird. Wenn dann auch noch time  
funktioniert ... bin ich glücklich :D.

Kann mir zum Schluss jemand von den Shell-Profis erklären, warum der  
cd-Befehl das nohub verhindert? Vielen Danke.

Falk



_______________________________________________
Lug-dd maillist  -  Lug-dd@mailman.schlittermann.de
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Antwort per Email an