Mostra o PID do processo recém lançado no ZSH

5

Posso mostrar o PID de um processo que acabei de lançar, idealmente 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 eu lanço dois mysqld processos e o segundo não "funciona" (port, etc ..), não consigo descobrir qual daemon tem 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

Eu não posso nem ^ + C, ^ + D nem ^ + Z o processo e a única maneira de descobrir qual é o processo via top (como já mencionado). Devido ao fato de que eu não posso nem colocar o processo em segundo plano, não tenho uma maneira direta de obter o PID. mysqld & & eco $! mostra que $! é 0.

Eu gostaria que o PID fosse exibido assim que o processo fosse iniciado e então a saída real fosse iniciada.

    
por mmlac 26.01.2012 / 21:58

2 respostas

1

Depois de ler seu último comentário, eu entendo que você quer saber o PID do processo que você está procurando em seu terminal. Nós temos toda essa mesma necessidade. Isso é o que eu costumo fazer:

Eu abro dois terminais.

No primeiro, vou ler a saída de mysqld :

touch   mysql.log
tail -f mysql.log

No segundo, corro mysqld em segundo plano:

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

Eu uso este segundo terminal para controlar / espionar mysqld .

Espero que isso ajude.
Felicidades.

    
por 27.01.2012 / 21:41
3

Você pode iniciar o processo em segundo plano com:

mysqld &

Isso normalmente mostra o [pid]; se não ecoar:

mysqld & echo pid=$!

Se você deseja executar o daemon em primeiro plano, basta recuperá-lo:

mysqld & echo pid=$! ; fg
    
por 10.04.2013 / 00:42