显示刚刚在 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 && 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

相关内容