Как первый шаг, я удалил бы все временные файлы и канал использования вместо этого: от сначала sed
можно передать stdout по каналу к второму и затем к третьему. Затем Ваш less
команда бесполезна: просто передайте по каналу снова от третьего sed
кому: grep
.
Используя канал Вы будете обладать многими преимуществами: сначала Вы не потратите впустую свое дисковое пространство, во-вторых, Вы не будете ожидать всех они диск ввод-вывод.
Для лучшего нахождения решения необходимо сказать нам, что в настоящее время блокирует Вас: это - один из sed
команды? Какой?
Вы можете использовать опцию демон off
:
exec /usr/sbin/nginx -c /etc/nginx/nginx.conf -g "daemon off;"
Из nginx wiki:
Вы можете безопасно использовать демон off в рабочем режиме с запуском / демон-инструменты, однако вы не можете сделать изящное обновление. master_process не должны использоваться в производстве.
При использовании runit
для управления nginx
становится родительским процессом ведущего процесса nginx
. Но если попытаться сделать онлайн-обновление, то ведущий процесс nginx
будет вилкой и выполнит новый двоичный процесс.
Создается новый ведущий процесс, но поскольку старый ведущий процесс все еще существует (так как он управляется подпрограммой runit
), то родителем нового ведущего процесса будет init-процесс, так как подпрограмма runit
не может управлять новым ведущим процессом, так как он не запустил его.
Не отключайте главный процесс для всего, что используется в реальном мире, он не выполняет -нулевых обновлений и не поддерживается.
Делайте это/правильно, используя контрольный мониторинг страницы порта 80 и т. д., чтобы не содержать какого-либо волшебного контента, иначе nginx не сможет -выполнять обновления с нулевым временем простоя, и вы будете выглядеть как любитель ранга.
#...
set -e
## config - start - should move to another file
CONF='/etc/nginx/nginx.conf'
# TODO: grab below by parsing CONF
PROTO=http
IP=0.0.0.0
PORT=80
## config - end - should move to another file
case "$(uname | tr '[A-Z]' '[a-z]')" in
darwin|freebsd|netbsd|openbsd) NC_ARGS="-n -w 5 -z '${IP}' '${PORT}'" ;;
linux) NC_ARGS="-n -w 5 --send-only '${IP}' '${PORT}'" ;;
*) echo "unsupported os $(uname)" >&2; exit 1 ;;
esac
/usr/bin/nginx -t -c "${CONF}"
/usr/bin/nginx -c "${CONF}"
sleep 5
while /usr/bin/nc $NC_ARGS </dev/null >/dev/null 2>&1; do
set -e # loop runs in a subshell
/usr/bin/curl -m5 -fsS -A 'runit script/0.0.0' \
"${PROTO}"://"${IP}":"${PORT}" | \
/usr/bin/grep -q 'This comment is required'
sleep 2
done