我可以显示刚刚启动的进程的 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