Любое решение, использующее что-то вроде ps aux | grep abc или pgrep abc, ошибочно.
Поскольку вы не проверяете, работает ли какой-либо конкретный процесс, вы проверяете если есть какие-либо процессы, которые выполняются в соответствии с abc. Любой пользователь может легко создать и запустить исполняемый файл с именем abc (или который содержит abc где-то в его имени или аргументах), вызывая ложное срабатывание для вашего теста. Существуют различные варианты, которые вы можете применить к ps, grep и pgrep для сужения поиска, но вы по-прежнему не получите надежного теста.
Это зависит от того, что вам нужно для теста.
См. Как проверить, проверяет ли мой игровой сервер ... для других решений.
[d10 ] abc - мой сценарий. Мне нужно убедиться, что работает только один экземпляр моего скрипта.В этом случае используйте файл блокировки или lockdir. Например,
#!/usr/bin/env bash
if ! mkdir /tmp/abc.lock; then
printf "Failed to acquire lock.\n" >&2
exit 1
fi
trap 'rm -rf /tmp/abc.lock' EXIT # remove the lockdir on exit
# rest of script ...
См. Как проверить, работает ли мой игровой сервер ... для других способов блокировки.