我可以顯示剛啟動的進程的 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