<?php
### File: vater2.php
header('Content-Type:text/plain');
$pid = exec("kind.sh 3 > /dev/null & echo $!");
echo $pid . PHP_EOL;
$pid = exec("kind.sh 4 > /dev/null & echo $!");
echo $pid . PHP_EOL;
exit;
#!/bin/bash
### File: kind.sh
### Caution! This will never ending!
echo -n "$$ $0 $*" > "/tmp/$1.pid";
nr=$1;
while [ 1 -eq 1 ]; do
echo -n $1 >> "/tmp/${nr}";
echo -n ": " >> "/tmp/${nr}";
date >> "/tmp/${nr}";
echo "" >> "/tmp/${nr}";
sleep 1;
done
sollte tun und tut auch wenn ich es wie beschrieben wie mit at
mache.
(Nach Aufruf im Browser)
ps ax | grep kind.sh
findet die beiden Prozesse.
ls tmp[1-9]*
findet aber nichts. Es müsste je eine Datei 3, 3.pid, 4 und 4.pid aufscheinen und natürlich einen Inhalt haben.
Hm. Bei meiner Version (auch im Browser gestartet) läuft das Skript, die Dateien 1, 1.pid, 2, 2.pid werden angelegt und „gefüttert“. Ich suche später weiter, warum der Mix aus Deiner Version des „Vaterprozesses“ und meinem „Kindprozess“ nichts tut - obwohl er sollte.
Kannst ja mal untersuchen, was Dein Kind-Prozess tut: Kann der in Dateien schreiben?