在 Webman 中判断是否有某个命令(如 ./webrtc-streamer
)正在运行,可以通过检查进程列表来实现。您可以使用 pgrep
或 ps
命令来查找特定进程。下面是如何实现这一点的步骤:
StreamController
,在执行命令之前检查该进程是否已经在运行。<?php namespace App\Controller; class StreamController { public function runStreamer() { // 检查 webrtc-streamer 是否正在运行 $processName = 'webrtc-streamer'; $isRunning = $this->isProcessRunning($processName); // 如果进程已经在运行,则返回错误信息 if ($isRunning) { return json_encode(['status' => 'error', 'message' => 'webrtc-streamer is already running.']); } // 定义要执行的命令,并在后台运行 $command = "nohup /path/to/webrtc-streamer > /dev/null 2>&1 &"; // 替换为实际路径 // 执行命令 exec($command, $output, $returnVar); if ($returnVar !== 0) { return json_encode(['status' => 'error', 'message' => 'Failed to execute webrtc-streamer.']); } return json_encode(['status' => 'success', 'message' => 'webrtc-streamer is running in the background.']); } private function isProcessRunning($processName) { // 使用 pgrep 查找进程是否正在运行 $command = "pgrep -f $processName"; exec($command, $output, $returnVar); // 如果返回值为 0,说明进程正在运行 return $returnVar === 0; } }
isProcessRunning
方法使用 pgrep -f
来查找包含指定名称的进程。如果找到进程,该方法返回 true
,否则返回 false
。pgrep -f
会查找所有匹配的进程名称。确保传入的 $processName
是足够特定的,以避免错误匹配其他不相关的进程。标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。