Не могу распечатать PID процесса - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь распечатать PID запущенных процессов с помощью команды "lsof".

Кажется, что я получил правильный PID, но я не могу напечатать его с помощью команды "echo".

Относительно следующего скрипта bash:

#!/bin/bash

portsArr=(4003 4200)

for port in "${portsArr[@]}"
do

  PID_OF_EXISTING_PROCESS=$(lsof -ti:"$port")
  if [ -z "$PID_OF_EXISTING_PROCESS"  ];
  then
    echo "Process was already running on port: $PID_OF_EXISTING_PROCESS"
  fi

done

Выход

Процесс уже запущен на порту:

Это означает, что PID был идентифицирован (команда «if» достигла этой точки, плюс я сделал еще несколько эхо-сигналов и увидел, что PID_OF_EXISTING_PROCESS был равен 4003 в этот момент), но по какой-то причине не был напечатан в команда "echo".

1 Ответ

0 голосов
/ 05 мая 2018
if [ -z "$PID_OF_EXISTING_PROCESS"  ];

Этот тест проходит только если строка пуста. Используйте -n, чтобы убедиться, что не пусто.

if [ -n "$PID_OF_EXISTING_PROCESS"  ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...