Назад | Перейти на главную страницу

systemd: перезапустить службу, когда она достигнет предела дескриптора файла

У меня есть служба, в которой происходят утечки файловых дескрипторов. Управляется через systemd. Есть ли способ перезапустить эту службу, когда она попадет в определенное количество файловых дескрипторов. Любые указатели будут действительно полезны.

По предложению Ленни (я писал сценарий). Вы можете создать еще один systemd сервис и таймер для проверки.

Ваш сценарий может выглядеть примерно так

#!/bin/bash

SERVICE="sshd.service"
LIMIT=9

PID=$(systemctl show ${SERVICE} | grep ExecMainPID|cut -d '=' -f2)
NBFD=$(ls -l /proc/${PID}/fd | wc -l)

if [[ ( $NBFD > $LIMIT )  ]] ; then
    echo "restarting the service: ${NBFD} > ${LIMIT}"
    systemctl restart ${SERVICE}
else
    echo "service fd limit ok: ${NBFD} < ${LIMIT}"
fi 

Затем создайте service запуск сценария и timer запускает сервис каждые X минут