Mostrar PID do processo recém-lançado no ZSH

Mostrar PID do processo recém-lançado no ZSH

Posso mostrar o PID de um processo que acabei de iniciar, de preferência no final da linha do comando?

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

Por exemplo, quando lanço dois mysqldprocessos e o segundo não "funciona" (porta, etc.), não consigo descobrir qual daemon possui qual PID.

Exemplo 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

Não consigo ^+C, ^+D nem ^+Z o processo e a única maneira de descobrir que processo é esse é via top (como já mencionado). Como não consigo nem colocar o processo em segundo plano, não tenho como obter o PID direto. mysqld && echo $! mostra que $! é 0.

Gostaria que o PID fosse exibido assim que o processo fosse iniciado e a saída real fosse iniciada.

Responder1

Depois de ler seu último comentário entendi que você deseja saber o PID do processo que está procurando em seu terminal. Todos nós temos essa mesma necessidade.
Isso é o que costumo fazer:

Abro dois terminais.

No primeiro vou ler a saída de mysqld:

touch   mysql.log
tail -f mysql.log

No segundo executo mysqldem segundo plano:

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

Eu uso este segundo terminal para control/spy mysqld.

Espero que isso possa ajudar.
Saúde.

Responder2

Você pode iniciar o processo em segundo plano com:

mysqld &

Isso normalmente mostra o [pid]; se não, faça eco:

mysqld & echo pid=$!

Se você quiser executar o daemon em primeiro plano, basta colocá-lo de volta em primeiro plano:

mysqld & echo pid=$! ; fg

informação relacionada