我想验证是否正确设置了大量Linux主机。目前我可以通过grepping sysctl.conf并执行ulimit:
等命令来实现[username@hostname ~]$ tail -2 /etc/sysctl.conf
fs.file-max = 65536
vm.max_map_count = 262144
[username@hostname ~]$ ulimit -u
4096
我想编写一个脚本来收集以下所有数据:
当然,我可以通过自动化我的手动过程来实现这一点,但是有更多编程方式在Python中获取这些数据吗?我宁愿知道操作系统报告的值是什么,而不是配置文件中的内容 - 以防万一有差异。
答案 0 :(得分:3)
您可以从两个位置获取此信息:
获取ulimit
信息,请使用resource
module;过程限制是resource.RLIMIT_NPROC
常量。
import resource
nproc_soft, nproc_hard = resource.getrlimit(resource.RLIMIT_NPROC)
要读取当前sysctl.conf
值,请阅读/proc/sys
文件系统。 sysctl.conf
中的选项将一对一映射到该系统中的路径,只需将.
替换为路径分隔符:
# read the current setting for fs.file-max
with open('/proc/sys/fs/file-max') as f:
file_max = int(f.read())
# thread count limit, kernel.threads-max
with open('/proc/sys/kernel/threads-max') as f:
threads_max = int(f.read())
# map count limit, vm.max_map_count
with open('/proc/sys/vm/max_map_count') as f:
max_map_count = int(f.read())