uos上运行systemctl启动服务时报错:

Failed to allocate directory watch: Too many open files

解决方法:

vi /etc/sysctl.conf
cat /etc/sysctl.conf
# 添加一下配置
fs.inotify.max_user_instances=512
fs.inotify.max_user_watches=262144

生效

sysctl -p

分析:

可能是 inotify 数量限制了,修改后服务可以正常启动

inotify介绍: 它是一个内核用于通知用户空间程序文件系统变化的机制。 众所周知,Linux 桌面系统与 MAC 或 Windows 相比有许多不如人意的地方,为了改善这种状况,开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如 hotplug、udev 和 inotify 就是这种需求催生的。Hotplug 是一种内核向用户态应用通报关于热插拔设备一些事件发生的机制,桌面系统能够利用它对设备进行有效的管理,udev 动态地维护 /dev 下的设备文件,inotify 是一种文件系统的变化通知机制,如文件增加、删除等事件可以立刻让用户态得知,该机制是著名的桌面搜索引擎项目 beagle 引入的,并在 Gamin 等项目中被应用。

查看inotify参数

sysctl fs.inotify

由于时间仓促,错误与疏忽之处在所难免,希望各位朋友们以邮件的形式反馈问题给我,再次表示感谢!