5

Могу ли я показать PID процесса, который я только что запустил, в идеале в конце строки команды?

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

Например, когда я запускаю два процесса mysqld а второй не "работает" (порт и т.д.), Я не могу понять, какой демон имеет какой PID.

Конкретный пример:

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

Я не могу ни ^+C, ^+D, ни ^+Z процесса, и единственный способ узнать, что это за процесс, это через top (как уже упоминалось). Из-за того, что я не могу даже поставить процесс в фоновом режиме, у меня нет прямого способа получить PID. mysqld && echo $! показывает что $! это 0.

Я хотел бы, чтобы PID отображался сразу после запуска процесса и запуска фактического вывода.

2 ответа2

3

Вы можете начать процесс в фоновом режиме с:

mysqld &

Это обычно показывает [pid]; если не повторить это:

mysqld & echo pid=$!

Если вы хотите запустить демон на переднем плане, просто верните его на передний план:

mysqld & echo pid=$! ; fg
1

После прочтения вашего последнего комментария я понимаю, что вы хотите узнать PID процесса, который вы просматриваете в своем терминале. Нам все это тоже нужно.
Это то, что я обычно делаю:

Я открываю два терминала.

В первом я прочитаю вывод mysqld:

touch   mysql.log
tail -f mysql.log

Во втором я запускаю mysqld в фоновом режиме:

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

Я использую этот второй терминал для управления / шпиона mysqld .

Надеюсь, что это может помочь.
Приветствия.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .