Могу ли я показать 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 отображался сразу после запуска процесса, а затем начинался сам вывод.
решение1
Прочитав ваш последний комментарий, я понял, что вы хотите узнать PID процесса, который вы ищете в своем терминале. У нас всех есть эта же потребность.
Вот что я обычно делаю:
Я открываю два терминала.
В первом я зачитаю вывод mysqld
:
touch mysql.log
tail -f mysql.log
Во втором случае я запускаю mysqld
в фоновом режиме:
mysqld >mysql.log 2>&1 &
ps f
Я использую этот второй терминал для управления/шпионажа mysqld
.
Надеюсь, это поможет.
Ура.
решение2
Вы можете запустить процесс в фоновом режиме с помощью:
mysqld &
Обычно это показывает [pid]; если нет, выведите его:
mysqld & echo pid=$!
Если вы хотите запустить демон в фоновом режиме, просто верните его в фоновый режим:
mysqld & echo pid=$! ; fg