Как я могу перечислить запущенные сценарии bash по имени скрипта?

libmysqlclient_r.so не является частью libmysqlclient в ubuntu 16.04. Вы можете создать символическую ссылку на совместимый libmysqlclient.so, прежде чем запускать свою команду, используя:

sudo ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so
7
задан 11 April 2018 в 16:50

6 ответов

Проблема заключается в том, что по умолчанию ps показывает только базовую команду в своем выводе, а не всю командную строку, включая аргументы.

Если вы запустите свой скрипт с bash TestEric.sh, базовая команда будет bash. Если вы запустите его как TestEric.sh (возможно, включая его путь), базовая команда будет таковой, а не bash.

Вы можете легко использовать pgrep вместо ps, чтобы просмотреть процессы, отфильтрованные по имени. Он имеет флаг -f, который позволяет ему сопоставлять данный шаблон со всей командной строкой, а не только с базовой командой.

Флаг -a позволяет отображать эту целую командную строку в своем выводе для целей отладки, а не только PID. После того, как вы подтвердили, что это работает, вы можете / должны удалить его снова в своем скрипте.

Попробуйте следующее:

pgrep -f -a TestEric.sh

Вы можете позже подсчитать процессы, используя wc, посчитав pgrep:

pgrep -f TestEric.sh | wc -l
9
ответ дан 17 July 2018 в 17:02

Вместо этого вы можете попробовать запустить ps u. С man-страниц опция u соответствует display user-oriented format, которая отображает как оболочку, используемую для запуска скрипта, так и имя самого скрипта.

2
ответ дан 17 July 2018 в 17:02

По-видимому, это помогает, если я добавлю !#/bin/bash в начале файла ... Тогда имя скрипта появится в отчете ps.

1
ответ дан 17 July 2018 в 17:02

Проблема заключается в том, что по умолчанию ps показывает только базовую команду в своем выводе, а не всю командную строку, включая аргументы.

Если вы запустите свой скрипт с bash TestEric.sh, базовая команда будет bash. Если вы запустите его как TestEric.sh (возможно, включая его путь), базовая команда будет таковой, а не bash.

Вы можете легко использовать pgrep вместо ps, чтобы просмотреть процессы, отфильтрованные по имени. Он имеет флаг -f, который позволяет ему сопоставлять данный шаблон со всей командной строкой, а не только с базовой командой.

Флаг -a позволяет отображать эту целую командную строку в своем выводе для целей отладки, а не только PID. После того, как вы подтвердили, что это работает, вы можете / должны удалить его снова в своем скрипте.

Попробуйте следующее:

pgrep -f -a TestEric.sh

Вы можете позже подсчитать процессы, используя wc, посчитав pgrep:

pgrep -f TestEric.sh | wc -l
9
ответ дан 23 July 2018 в 17:53

Вместо этого вы можете попробовать запустить ps u. С man-страниц опция u соответствует display user-oriented format, которая отображает как оболочку, используемую для запуска скрипта, так и имя самого скрипта.

2
ответ дан 23 July 2018 в 17:53

По-видимому, это помогает, если я добавлю !#/bin/bash в начале файла ... Тогда имя скрипта появится в отчете ps.

1
ответ дан 23 July 2018 в 17:53

Другие вопросы по тегам:

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