БОЛЕЕ
Итак, вам нужно указать только два IP-адреса (сеть и шлюз):
dhcp-option=121,10.0.4.0/24,10.8.0.1
Кроме того, вам также необходимо указать каждому серверу
запрашивать маршрут.
И, если ваш DHCP-клиент ISC не поддерживает эту опцию(в текущем Debian поддерживает ), вам нужна строка, как показано ниже в /etc/dhclient.conf
или/etc/dhcp3/dhclient.conf
:
option classless-static-routes code 121 = array of { ip-address, ip-address };
, чтобы сообщить dhclient
об опции 121, а затем использовать скрипт в /etc/dhcp3/dhclient-exit-hooks.d/configure_static_routes
, чтобы сделать конфигурацию сети автоматической.
В моей системе Arch, с pgrep
из procps-ng
, я вижу это вman pgrep
:
EXIT STATUS
0 One or more processes matched the criteria. For
pkill the process must also have been success‐
fully signalled.
1 No processes matched or none of them could be
signalled.
2 Syntax error in the command line.
3 Fatal error: out of memory etc.
Так и есть,:pgrep
завершится с 1, если все работало нормально, но не было процессов, соответствующих строке поиска. Это означает, что вам нужно будет использовать другой инструмент. Возможно, что-то вроде Кусалананды предложил в комментариях и ilkkachu опубликовал в качестве ответа:
running_apps=$(pgrep -f "somePattern" || exit 0)
Но лучше, ИМО, изменить сценарий. И вместо того, чтобы использовать set -e
, закройте его вручную на важных шагах. Затем вы можете использовать что-то вроде этого:
running_apps=$(pgrep -fc "somePattern")
if [ "$running_apps" = 0 ]; then
echo "none found"
else
echo "$running_apps running apps"
fi
С помощью set -e
команды, расположенные слева от операторов И(&&
)или ИЛИ (||
), не вызывают выхода из оболочки, поэтому вы можете подавить ошибку, добавив || true
.
Таким образом, это должно выводить 0
независимо от найденных процессов (и не выходить до вывода):
set -e
RUNNING_APPS=$(pgrep -f "somePattern" || true)
echo $?