¿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 mysqld
procesos y el segundo no "funciona" (puerto, etc.), no puedo determinar 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 ^+C, ^+D ni ^+Z el proceso y la única forma de saber qué proceso es es a través de la parte superior (como ya se mencionó). Debido al hecho de que ni siquiera puedo poner el proceso en segundo plano, no tengo una forma directa de obtener el PID. mysqld && eco$! 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.
Respuesta1
Después de leer tu último comentario entiendo que quieres saber el PID del proceso que estás buscando en tu terminal. Todos tenemos esta misma necesidad.
Esto es lo que suelo hacer:
Abro dos terminales.
En el primero leeré el resultado de mysqld
:
touch mysql.log
tail -f mysql.log
En el segundo lo ejecuto mysqld
en segundo plano:
mysqld >mysql.log 2>&1 &
ps f
Utilizo esta segunda terminal para controlar/espiar mysqld
.
Espero que esto pueda ayudar.
Salud.
Respuesta2
Podrías iniciar el proceso en segundo plano con:
mysqld &
Eso normalmente muestra el [pid]; si no, hazlo eco:
mysqld & echo pid=$!
Si desea ejecutar el demonio en primer plano, simplemente vuelva a ponerlo en primer plano:
mysqld & echo pid=$! ; fg