我在 PHP 中编写了几行代码来检查我的服务器上当前是否正在运行特定进程。如果进程正在运行,我会添加一个用于与该进程交互的脚本。以下是代码
ob_start(NULL, 0, PHP_OUTPUT_HANDLER_CLEANABLE);
system('tasklist /FI "IMAGENAME eq websocket.exe" /FO TABLE /NH');
$return = ob_get_clean();
if (!($return === false || stripos($return, 'websocket') === false)) {
$hData['Script'][] = 'websocket.js';
}//END IF
目前,系统调用仅在 Windows 中可用,因为tasklist
它是 Windows 特定命令。由于我仍在学习 Ubuntu 和 Unix,我无法想出一种方法来获得与我的 Windows 命令类似的输出。我曾考虑过使用它ps
来检查我的进程,但我不知道如何根据进程名称优化结果。
Ubuntu 中是否有类似于 Windows 命令的命令tasklist /FI "IMAGENAME eq websocket.exe" /FO TABLE /NH
,可以让我过滤掉不匹配的进程?目标是让它对 Ubuntu 和 PHP 都有效。因此建议尽可能过滤结果
额外的信息
我计划使用它来检查我的 websocket 服务器是否正在运行,以及它是否包含脚本,以便用户可以使用它。
我尝试这样做,ps -ef | grep -i "websocket"
但它会返回grep --color=auto -i websocket
符合 PHP 标准并包含脚本的内容。我想尽量避免这种做法。
答案1
只需将结果传输到grep -v grep
类似的ps -ef | grep -i "websocket" | grep -v grep
方法即可删除其中包含 grep 的 ps 记录。