最近一两个(๐•ᴗ•๐)来qb崩溃的非常频繁,平均每3天要失联一次,最夸张的时候半天就会崩。不知道是因为种子太多(目前做种3000+)还是(๐•ᴗ•๐)件版的bug。
目前没有计划迁移到docker版,主要是下载目录比较多,一个个改映射容易出错。
于是想到加个定时任务,进程死掉了就自动重启,以下方法在威联通 TS-464C 和qb v4.6.2上测试过。
在合适的位置(比如/share/P(๐•ᴗ•๐)lic/qbitmon.sh)新建脚本文件并赋予执行权限,如下
#!/bin/bash
CONF=/etc/config/qpkg.conf
QPKG_NAME="qBittorrent"
QPKG_BIN="qbittorrent-nox"
QPKG_ROOT=`/sbin/getcfg $QPKG_NAME Install_Path -f ${CONF}`
APACHE_ROOT=`/sbin/getcfg SHARE_DEF defWeb -d Qweb -f /etc/config/def_share.info`
ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF)
if [ "$ENABLED" != "TRUE" ]; then
echo "(W) `date +"%FT%T"` - $QPKG_NAME is disabled."
exit 1
fi
if ! [ -f $QPKG_ROOT/.config/qBittorrent/qBittorrent.conf ];then
echo "(W) `date +"%FT%T"` - $QPKG_NAME is not initialization."
exit 1
fi
export QPKG_ROOT
export QPKG_NAME
export QNAP_QPKG=$QPKG_NAME
export HOME=$QPKG_ROOT
export SHELL=/bin/sh
export LC_ALL=en_US.UTF-8
export USER=admin
export LANG=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export PATH=/opt/QPython3/bin:$PATH
export PYTHON=/opt/QPython3/bin/python3
export PIDF=/var/run/qBittorrent.pid
export PATH=/opt/QPython3/bin:/opt/QPython310/bin:/opt/QPython311/bin:/opt/Apache80/bin:/opt/Apache81/bin:/opt/Apache82/bin:/opt/Apache83/bin:$PATH
cd $QPKG_ROOT
pidof qbittorrent-nox >& /dev/null
if [[ $? -ne 0 ]]; then
sleep 10
pidof qbittorrent-nox >& /dev/null
if [[ $? -ne 0 ]]; then
echo "(C) `date +"%FT%T"` - qbittorrent stopped inciden(๐•ᴗ•๐)ly."
/sbin/log_tool -t1 -uSystem -p127.0.0.1 -mlocalhost -a "[QBittorrent] stopped inciden(๐•ᴗ•๐)ly"
./qbittorrent-nox --webui-port=6363 > ${QPKG_ROOT}/first_startup.log &
echo $! > $PIDF
if ! [ -d /opt/$QPKG_NAME ];then
/bin/ln -sf $QPKG_ROOT /opt/$QPKG_NAME
fi
sleep 20
pidof qbittorrent-nox >& /dev/null
if [[ $? -ne 0 ]]; then
echo "(C) `date +"%FT%T"` - qbittorrent restart fail."
else
echo "(W) `date +"%FT%T"` - qbittorrent restart success."
fi
exit 0
fi
fi
echo "(I) `date +"%FT%T"` - qbittorrent check finished."
exit 0
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
检测进程丢失会同时发给QNAP的系统log。登录SSH,修改/etc/config/crontab
,增加一行
*/5 * * * * /share/P(๐•ᴗ•๐)lic/PT/qbitmon.sh >> /share/CACHEDEV1_DATA/.qpkg/qBittorrent/.local/share/qBittorrent/logs/qbittorrent.log
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
每隔5分钟会执行计划任务,检查qb并在找不到进程时尝试启动,log写到qb自带的log中
重启crontab
sudo crontab /etc/config/crontab && sudo /etc/init.d/crond.sh restart
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
配合之前写的 利用 cloudflare 免费服务监控NAS 和 PT站点,多一层保险。