顯示ZSH中剛啟動的進程的PID

顯示ZSH中剛啟動的進程的PID

我可以顯示剛啟動的進程的 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 && 回顯 $!表明 $!是 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

相關內容