如果Transmission和qBittorrent启动后种子报错:Unable to save resume file: Too many open files
原因是linux系统的打开文件数量限制,比如群晖默认Hard Limit:4096、Soft Limit:1024
方法1、针对程序进程单独修改
任务计划(root),每次每次每次启动Transmission后执行一次。(qBittorrent进程名称:qbittorrent-nox)
如果是arm64,程序名称:rlimit-arm64,自行修改第一行的:http://code.imnks.com/rlimit/rlimit-arm64
#下载已编译好的rlimit
wget -O rlimit http://code.imnks.com/rlimit/rlimit
chmod +x rlimit
#上面两行第一次执行成功后删除,已经在本地了,多次下载会被服务器拉黑!
PID=`pidof transmission-daemon`
if [ "$PID" != "" ]
then
./rlimit $PID
fi
rlimit源码和编译(仅供研究)
#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/types.h>
int main(int argc, char** argv) {
pid_t pid;
struct rlimit new_limit;
int result;
if (argc < 2) {
return 1;
}
pid = atoi(argv[1]);
new_limit.rlim_cur = 60000;
new_limit.rlim_max = 60000;
result = prlimit(pid, RLIMIT_NOFILE, &new_limit, NULL);
return result;
}
编译过程:建议ubuntu18.04,或者使用群晖的工具链交叉编译,否则运行会libc.so.6报错。
apt install gcc gcc-aarch64-linux-gnu gcc-7-aarch64-linux-gnu
#编译x86_64
gcc -o rlimit rlimit.c
#编译arm64
aarch64-linux-gnu-gcc -o rlimit-arm64 rlimit.c
方法2、永久修改为群晖最大打开文件限制参数 4096
这会对系统的每个程序都有效,带来的后果未知。。。
ssh连接群晖执行一次即可,重启生效,查看效果:ulimit -n
#4096就是最大值!!!不要修改!!!
echo 'ulimit -n 4096' | tee -a /etc/profile
source /etc/profile
参考文章
https://tieba.baidu.com/p/7818416745
http://sword.studio/amp/233.html
修改系统监控文件数量限制
套件或者Docker如果无法启动,启动日志报错:inotify instance limit reached、inotify watch limit reached(意思系统监控文件数量受限),或者目录同步不明原因不会自动触发同步操作,需SSH连接群晖执行以下命令:(一次即可),执行完毕重启系统。
sudo echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo echo fs.inotify.max_user_instances=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
原创文章,作者:ERROR204,本文章内容未经书面许可禁止一切形式的转载:https://imnks.com/9169.html