PID des gerade in ZSH gestarteten Prozesses anzeigen

PID des gerade in ZSH gestarteten Prozesses anzeigen

Kann ich die PID eines Prozesses anzeigen, den ich gerade gestartet habe, idealerweise am Ende der Befehlszeile?

Example:
root in ~: mysqld .................. [PID 34567]
12121 mysql-logs start to come in...
12125 more logs...

Wenn ich beispielsweise zwei mysqldProzesse starte und der zweite nicht „funktioniert“ (Port usw.), kann ich nicht herausfinden, welcher Daemon welche PID hat.

Konkretes Beispiel:

mysqld >/dev/null                                                                                                                                     130 ↵
120126 15:44:05 [Note] Plugin 'FEDERATED' is disabled.
120126 15:44:05 InnoDB: The InnoDB memory heap is disabled
120126 15:44:05 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120126 15:44:05 InnoDB: Compressed tables use zlib 1.2.3
120126 15:44:05 InnoDB: Initializing buffer pool, size = 128.0M
120126 15:44:05 InnoDB: Completed initialization of buffer pool
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
120126 15:44:05  InnoDB: Retrying to lock the first data file
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 35

Ich kann den Prozess weder mit ^+C, ^+D noch mit ^+Z ausführen und die einzige Möglichkeit, herauszufinden, um welchen Prozess es sich handelt, ist über top (wie bereits erwähnt). Da ich den Prozess nicht einmal in den Hintergrund stellen kann, habe ich keine direkte Möglichkeit, die PID abzurufen. mysqld && echo $! zeigt, dass $! 0 ist.

Ich möchte, dass die PID angezeigt wird, sobald der Prozess gestartet wird und anschließend die eigentliche Ausgabe beginnt.

Antwort1

Nachdem ich Ihren letzten Kommentar gelesen habe, verstehe ich, dass Sie die PID des Prozesses wissen möchten, den Sie in Ihrem Terminal suchen. Wir alle haben dasselbe Bedürfnis.
Das ist, was ich normalerweise mache:

Ich öffne zwei Terminals.

Im ersten werde ich die Ausgabe von mysqld: lesen.

touch   mysql.log
tail -f mysql.log

Im zweiten führe ich mysqldim Hintergrund aus:

mysqld >mysql.log 2>&1 &
ps f

Dieses zweite Terminal verwende ich zur Steuerung/Spionage mysqld.

Hoffe, das hilft.
Prost.

Antwort2

Sie können den Vorgang im Hintergrund wie folgt starten:

mysqld &

Das zeigt normalerweise die [pid] an, wenn nicht, geben Sie sie aus:

mysqld & echo pid=$!

Wenn Sie den Daemon im Vordergrund ausführen möchten, bringen Sie ihn einfach wieder in den Vordergrund:

mysqld & echo pid=$! ; fg

verwandte Informationen