У меня есть пара строк в 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. Поэтому рекомендуется максимально фильтровать результаты.

Дополнительная информация

Я планирую использовать это, чтобы проверить, работает ли мой сервер веб-сокетов и включает ли он сценарий, чтобы пользователи могли его использовать.

Я пытался сделать ps -ef | grep -i "websocket" но он возвращает grep --color=auto -i websocket который соответствует критериям для PHP и включает скрипт. Я хотел бы попытаться избежать этого пути.

1 ответ1

1

Просто передайте результаты в grep -v grep как ps -ef | grep -i "websocket" | grep -v grep Это удалит запись ps с grep в ней.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .