Autor |
Nachricht |
Gast
|
Verfasst am:
18.05.2010, 16:15 Wofür stehen die Zeichen $$ im Kommando "ps -p $$ GELÖS |
|
Hallo!
user@gnomelynx:~$ ps -p $$ | tail -1 | awk '{ print $4 }'
bash
"ps -p" Prozesse auflisten nach der Prozess ID
"tail -1" Die letzte Zeile ausgeben
"awk '{print$4}'" Nur das 4. Feld ausgeben
Meine Frage:
Wo für steht $$ bzw. was ersetzen die Dollarzeichen?
Warum liefert
user@gnomelynx:~$ ps -p $$
PID TTY TIME CMD
1832 pts/1 00:00:00 bash
immer den Namen der User Shell?
Danke für Eure Antworten.
linuxihno
edit by Admin: Titel geändert.
Zuletzt bearbeitet von Gast am 22.05.2010, 19:43, insgesamt 5-mal bearbeitet
Desktop: anderer
Version: 16.04
Hardware: Notebook
Architektur: 64Bit
Zuletzt bearbeitet von Gast am 22.05.2010, 19:43, insgesamt 5-mal bearbeitet
|
|
|
|
Webbutterfly
Administrator
Geschlecht:
Alter: 68
Anmeldungsdatum: 24.06.2006
Beiträge: 6917
Wohnort: Wien 23
|
Verfasst am:
18.05.2010, 16:53 (Kein Titel) |
|
@linuxinho: Bitte, entweder du lässt dir einen "lesbaren" und "beschreibenden" Titel einfallen, oder lässt es bleiben... so nicht!
Das ist kein Titel sonder eine Befehlszeile...
ps -p $ | tail -1 | awk '{ print $4 }'
Steht auch in der Anleitung wie man Fragen richtig stellt....Punkt 4
Titel geändert.
Admin
Desktop: Gnome-Shell 3.X
Version: 14.04 and 16.04
Hardware: Notebook
Architektur: 64Bit
_________________
|
|
|
|
Webbutterfly
Administrator
Geschlecht:
Alter: 68
Anmeldungsdatum: 24.06.2006
Beiträge: 6917
Wohnort: Wien 23
|
Verfasst am:
18.05.2010, 17:46 (Kein Titel) |
|
Hello
Nun, du führst ja nach dem Befehl ps noch zwei weitere aus... die beiden $$ sind für ps die Variablen (Platzhalter) für die Ausgabe der folgenden Befehle
tail -1
awk '{ print $4 }
damit sie dir ps auch anzeigen kann.
Der Befehle wird abgearbeitet und in eine Variable $ übergeben, dann der nächste, der sich die Variable vom vorhergehenden holt... usw.
Zitat: Warum liefert ....immer den Namen der User Shell?
Nun, es liefert dir die letzte Zeile, Feld 4 vom Aufruf ps -p
(würdest du auch noch einen dritten Befehl anhängen, mussten es $$$ sein... bedingt aber ob das überhaupt möglich ist)
mal einfach erklärt...
NUR... dein Befehl funktioniert so gar nicht... weil ps -p auch noch eine Prozess-ID verlangt um die Prozesse der angegebenen PID anzeigen zu können...
Es ist einfach die die letzte Zeile, Feld 4 der ausgegebenen Fehlermeldung....
Schauer dir mal in Ruhe
man ps
an
ps aux
gibt dir mal sinnvolleres...
EDIT:
Shell-Variablen
BASH Programming - Introduction HOW-TO: Variables
Desktop: Gnome-Shell 3.X
Version: 14.04 and 16.04
Hardware: Notebook
Architektur: 64Bit
_________________
|
|
|
|
Gast
|
Verfasst am:
18.05.2010, 18:54 (Kein Titel) |
|
Das $$ ist in der Shell der Platzhalter für die Prozeß-ID des eigenen Prozesses.
Die komplette Zeile hat den Sinn herauszufinden, in welcher Shell ich mich eigentlich befinde, das ist nämlich nicht einfach weil zB $SHELL nicht immer zuverlässig gesetzt wird.
Allerdings eine sehr umständliche Art und Weise ...
Desktop: anderer
Version: 16.04
Hardware: Notebook
Architektur: 64Bit
|
|
|
|
Gast
|
Verfasst am:
18.05.2010, 19:08 (Kein Titel) |
|
|
|
|
Gast
|
Verfasst am:
18.05.2010, 19:45 (Kein Titel) |
|
Hallo, verlasse Dich nicht zu sehr auf solche Konstrukte.
Ich zeig Dir mal ein Gegenbeispiel:
kappa@kappa:~$ ps -p $$ -o comm=
bash
kappa@kappa:~$ echo "Noch billiger: $0"
Noch billiger: bash
kappa@kappa:~$ /bin/sh -c 'ps -p $$ -o comm='
sh
kappa@kappa:~$ /bin/bash -c 'ps -p $$ -o comm='
ps
kappa@kappa:~$ echo "Uups, das zuvor ging in die Hose."
Uups, das zuvor ging in die Hose.
kappa@kappa:~$ /bin/bash -c 'echo $0'
/bin/bash
kappa@kappa:~$ /bin/bash -c 'basename $0'
bash
D.h. basename $0 ist besser als alle Vorschläge zuvor, und ist noch immer nicht (für Paranoiker) ganz sauber.
Desktop: anderer
Version: 16.04
Hardware: Notebook
Architektur: 64Bit
|
|
|
|
Gast
|
Verfasst am:
18.05.2010, 20:28 (Kein Titel) |
|
@kappa
Hallo und erstmals DANKE für deine Rückmeldung!
Es geht jetzt nicht speziell um dieses eine Kommando "ps -p$$"
Für mich geht es darum auf der Kommandozeile mal "Sattelfest" zu werden.
Ich konnte für mich selbst herausfinden bzw. habe bereits gewusst
was man mit "tail" und "awk" bewirken kann.
Ich bin aber leider nicht dahinter gekommen das "$$" für die Prozess ID der Shell steht.
Gebe aber zu: Ist aber eigentlich klar wenn immer "bash" zurückgeben wird.
O.K. jetzt weiß ich es und alle die es auch interessiert.
Nochmals, Danke!
Desktop: anderer
Version: 16.04
Hardware: Notebook
Architektur: 64Bit
|
|
|
|
|