Hallo, wie bekomme ich denn unter Linux den Rückgabewert (Job-Number & PID) von taskset in eine Shellvariable? Sowas wie foo=`taskset -c 0 echo "Test" &` funktioniert leider nicht, da ich dann nur die Ausgabe von echo in der Variable habe, nicht aber die Job-Number und PID in der Form "[3] 11502". Liegt das Problem evtl. darin, dass mir zwar der gesuchte Wert in die Variable geschrieben wird, anschließend aber gleich durch "Test" überschrieben wird? Wenn ich z.B. "taskset -c 0 sleep 1 &" ausführe, werden mir die beiden gesuchten Werte angezeigt. Viele Grüße, Thomas
Das klingt danach, als ob "[3] 11502" nach stderr geschrieben wird. Das ` ` nimmt aber nur Werte aus stdout, will man Werte aus stderr, muss man umleiten: http://www.cyberciti.biz/faq/redirecting-stderr-to-stdout/ Beispiel: foo=`ls gibtesnicht.txt` echo "foo = $foo" bar=`ls gibtesnicht.txt 2>&1` echo "bar = $bar" Wie man das mit taskset verbindet, muss jemand anderes herausfinden, auch für den Rest keine Gewähr, ich habe hier gerade kein richtiges OS zur Hand. Grüße
Das "[3] 11502" hat erstmal überhaupt nichts mit dem Rückgabewert zu tun. Tom schrieb: > Das klingt danach, als ob "[3] 11502" nach stderr geschrieben wird. Es wird nicht vom aufgerufenen Programm, sondern von der Shell, von der aus es aufgerufen wurde, rausgeschrieben. Daher wird das nichts bringen.
Asche auf mein Haupt. Mit $! bekommt man immerhin die PID des Prozesses:
1 | #!/bin/bash
|
2 | taskset -c 0 sleep 10 & |
3 | pid_sleep=$! |
4 | echo "pid von sleep ist $pid_sleep, vergl. mit:" |
5 | ps | grep sleep
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.