Итак, у меня есть настройка скрипта, которую я хочу запустить как сервис. Сценарий непрерывно выполняет 8 команд curl:
#!/bin/bash
threads=8
check_interval=15
batch_url=https://myurl.com
for ((i = 0 ; i < threads ; i++)); do
sleep $i
while true; do
sleep 0.5
has_items=$(curl --silent -m 15.0 --connect-timeout 1.5 $batch_url/$i)
if [ "$has_items" == "false" ]; then
sleep ${check_interval}
continue
fi
done &
done
У меня есть служебный файл настройки в systemd
, который выглядит следующим образом:
[Unit]
Description=Run the batch forever
After=network.target
[Service]
Type=simple
Restart=always
RestartSec=1
ExecStart=/bin/bash /usr/bin/my_script_location
[Install]
WantedBy=multi-user.target
Если я просто запускаю сценарий, он работает нормально,Он зацикливается на URL-адреса от /0
до /7
навсегда.
Однако, если я настрою его как службу, через некоторое время служба будет перезапущена.
Я считаю, что проблема заключается в том, чтосвязанный с выполнением цикла while
в фоновом режиме, но не уверен, как заставить службу работать с этим. Возможно, что сервисный подход - неправильный метод. Мне просто нужен этот скрипт, чтобы он всегда работал.