Как я проверяю на бит состояния на рабочем процессе?

Хорошо, вот моя дилемма, я выполняю бездисплейный сервер Ubuntu 18.04.3 LTS на сервере Dell PowerEdge T710, и я пишу сценарий удара так, чтобы я мог легко изменить Apache версии Модификации PHP, не имея необходимость продолжать вручную использовать:-

a2dismod php<version>
a2enmod php<version>
systemctl restart apache2

Начало сценария использует, если условие проверить, входится ли пользователь в систему в качестве пользователя учетная запись или корневая учетная запись с помощью бита состояния UID, т.е.:-

if ((UID)); then
something here
elif ((!UID)); then
something here
fi

использование ((UID)), чтобы проверить, верен ли бит и использует ((! UID), чтобы проверить, является ли бит ложью, но здесь является проблемой, я хочу добавить немного больше проверки, чтобы удостовериться, что апач находится на самом деле в состоянии выполнения, я использовал бы булев TRUE или FALSE, чем использовать что-то как:-

systemctl status apache2

который дает большой вывод. Существует ли бит состояния для апача? Затем я могу сделать проверку, чтобы удостовериться, что апач на самом деле работает прежде, чем продолжить phpmod изменение версии.

Это - сценарий, который я имею до сих пор: https://pastebin.com/HyCjbn59

IT не только нужны проверка апачское выполнение, но также и проверка на различные апачские модули PHP, чтобы удостовериться, что они на самом деле установлены прежде, чем попытаться включить корректный модуль, и в противном случае затем сценарий выполнил бы:-

apt install libapache2-mod-php<version>
0
задан 28 December 2019 в 10:22

2 ответа

Вы можете использовать is-active команда единицы systemctl, который “[r] eturns код выхода 0, если по крайней мере один [единица] является активным, или отличным от нуля otherwise”:

if systemctl is-active --quiet apache2; then
  echo running
else
  echo not running
fi

, Если you’d скорее используют параметр there’s $?, держащий код выхода последней команды, Вы можете просто проверить на него являющийся 0:

systemctl is-active --quiet apache2
if [ $? -eq 0 ]; then
  echo running
else
  echo not running
fi

Дополнительные материалы для чтения

3
ответ дан 29 December 2019 в 10:10

Определение собственных кодов выхода все еще использует ту же логику, как @Dessert описывает в его ответе.

#!/bin/bash

systemctl is-active -q apache2 && status=TRUE || status=FALSE

case $status in
  TRUE)
    echo do something ;;
  FALSE)
    echo do sothing else ;;
esac
1
ответ дан 29 December 2019 в 10:10

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

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