При написании bash скриптов иногда требуется проверить наличие в системе определенной службы и в зависимости от ее наличия или отсутствия, предпринимать различные действия.
Самый простой способ, это комбинация команд systemctl и grep.
Общий синтаксис будет следующим
1 | systemctl list-units --type service|grep "<service name>"|wc -l |
К примеру, следующим образом выглядит проверка наличия службы PostgreSQL
1 | postgresql_service=$(systemctl list-units --type service|grep "postgresql"|wc -l) |
Далее, в зависимости от задачи проверяем с помощью if
Служба присутствует в системе
1 2 3 4 | if [ $postgresql_service -gt 0 ] then // action fi |
либо так
1 2 3 4 | if [ $postgresql_service -eq 1 ] then // action fi |
Служба отсутствует в системе
1 2 3 4 | if [ $postgresql_service -eq 0 ] then // action fi |