Почему запуск `pgrep` из сценариев npx или npm дает другой ответ? - PullRequest
0 голосов
/ 15 марта 2020

В частности, если запустить pgrep -f azurite из терминала, когда нет процессов, соответствующих «азуриту», я ничего не получу обратно.

Но если я запусту это через npx, npx pgrep -f azurite (опять же, при отсутствии соответствующих процессов) Я верну пид. Я предполагаю, что это pid процесса короткоживущего узла, используемого для запуска задачи, так как он ничего не соответствует в ps aux.

Результат такой же, если запустить из сценариев npm в моем пакете. json.

Почему?

Можно ли этого избежать?

1 Ответ

2 голосов
/ 15 марта 2020

Я думаю, что воспроизвел вашу проблему с помощью этого сценария npx:

#!/bin/bash
set -x
ps -ef | grep azurite
pgrep -f azurite

Когда вы вызываете ./npx, ps находит только grep azurite, а pgrep ничего не находит.
Когда вы звоните ./npx azurate, результат будет

+ ps -ef
+ grep azurite
walter     142     9  0 17:17 tty1     00:00:00 /bin/bash ./npx azurite
walter     145   142  0 17:17 tty1     00:00:00 grep azurite
+ pgrep -f azurite
142

В этом примере pid найден из вызова npx.
С pgrep azurite (без -f) может быть исправлено (я тестировал другой скрипт azurite), но я не знаю, когда он передается в качестве аргумента программе.
Возможно, вам придется использовать

ps -ef | awk '/[a]zurite/ {print $2}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...