Mostrar PID del proceso recién lanzado en ZSH

5

¿Puedo mostrar el PID de un proceso que acabo de iniciar, idealmente al final de la línea del comando?

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

Por ejemplo, cuando inicio dos mysqldprocesos y el segundo no "funciona" (puerto, etc.), no puedo entender qué demonio tiene qué PID.

Ejemplo concreto:

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

No puedo ni ^ + C, ^ + D ni ^ + Z el proceso y la única forma de averiguar qué proceso es a través de top (como ya se mencionó). Debido al hecho de que ni siquiera puedo dejar el proceso en segundo plano, no tengo forma directa de obtener el PID. mysqld && echo $! muestra que $! es 0.

Me gustaría que se muestre el PID tan pronto como se inicie el proceso y luego comience la salida real.

mmlac
fuente
Probablemente tenga que iniciarlo con & adjunto (bg) y luego ponerlo en primer plano: / Pensé que esto sería más fácil de lograr.
mmlac

Respuestas:

1

Después de leer su último comentario, entiendo que desea conocer el PID del proceso que está buscando en su terminal. Tenemos toda esta misma necesidad.
Esto es lo que suelo hacer:

Abro dos terminales.

En el primero leeré la salida de mysqld:

touch   mysql.log
tail -f mysql.log

En el segundo corro mysqlden segundo plano:

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

Yo uso este segundo terminal para controlar / espiar mysqld.

Espero que esto pueda ayudar.
Salud.

olibre
fuente
¡Esto no resuelve mi problema general, pero acepto por hacer el esfuerzo!
mmlac
Lo siento. Espero que un colega o un amigo entienda mejor sus necesidades ... Que tengan un buen fin de semana. Gracias.
olibre
3

Puede comenzar el proceso en segundo plano con:

mysqld &

Eso normalmente muestra el [pid]; si no se hace eco:

mysqld & echo pid=$!

Si desea ejecutar el demonio en primer plano, simplemente vuelva a colocarlo en primer plano:

mysqld & echo pid=$! ; fg
Simon the Sourcerer
fuente