Можно определить несуществующий процесс из pgrep

Как сообщил OP в комментариях, они вызывали скрипт с sh file.sh . В зависимости от оболочки по умолчанию, к которой привязана символическая ссылка / bin / sh , она может не поддерживать символы Unicode.

Например, в Ubuntu оболочка по умолчанию - тире .

$ dash
$ printf "\xE2\x9C\x94 missing\n"
\xE2\x9C\x94 missing
$ echo -e "\xE2\x9C\x94"
-e \xE2\x9C\x94

Причина, по которой это сработало, когда вы вызывали команду в интерактивной оболочке, заключается в том, что интерактивная оболочка пользователя по умолчанию (в Ubuntu) / bin / bash

Для правильного запуска сценария вам необходимо:

  • запустите его как ./ file.sh
  • запустите его как аргумент соответствующей оболочки bash file.sh

В качестве альтернативы можно использовать методы, не зависящие от оболочки:

# this printf is standalone program, not shell built-in
$ /usr/bin/printf "\xE2\x9C\x94 check mark\n"
✔ check mark

$ python -c 'print "\xE2\x9C\x94 check mark"'
✔ check mark

$ perl -e 'print "\xE2\x9C\x94 check mark"'                                                                              
✔ check mark
1
12.02.2016, 10:48
1 ответ

Некоторые версии pgrep(, например procps-ng), поддерживают опцию --runstates Z.

1
04.02.2021, 15:30

Теги

Похожие вопросы