我有一个服务正在泄漏文件描述符。它通过 systemd 进行管理。当文件描述符达到特定数量时,我是否可以重新启动该服务。任何指示都会非常有用。
答案1
正如 Lenniey 所建议的(我正在编写脚本)。您可以创建另一个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