我之前问过这个问题,如何减小区域设置存档的大小?,并得到了我的问题的很好答案,但是当我执行时,build-locale-archive
我与 RHEL6 主机断开了连接。我怎样才能防止这种情况发生?
更新:
我决定跑...
# strace -f -o /tmp/output build-locale-archive
...这是唯一有趣的输出...
17779 truncate("/usr/lib/locale/locale-archive.tmpl", 0) = 0
17779 execve("/usr/sbin/tzdata-update", ["/usr/sbin/tzdata-update"], [/* 0 vars */]) = 0
17779 open("/etc/sysconfig/clock", O_RDONLY) = 3
17779 read(3, "ZONE=\"Africa/Abidjan\"\nUTC=true\n", 32767) = 31
17779 read(3, "", 32736) = 0
17779 close(3) = 0
17779 open("/usr/share/zoneinfo/Africa/Abidjan", O_RDONLY) = 3
17779 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\2\0\0\0\0"..., 32768) = 156
17779 read(3, "", 32612) = 0
17779 close(3) = 0
17779 open("/etc/localtime", O_RDONLY) = 3
17779 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\2\0\0\0\0"..., 32768) = 156
17779 read(3, "", 32612) = 0
17779 close(3) = 0
17779 open("/var/spool/postfix/etc/localtime", O_RDONLY) = -1 ENOENT (No such file or directory)
17779 _exit(0) = ?
...不知道该怎么做。
而且看起来好像是我跑的时候snmpd
就死了。crond
build-locale-archive
更新二:
感谢吉尔斯的回答,但看起来我可能没有正确遵循您的建议,因为在执行时我仍然失去连接:
[root@dev-007 ~]# sysctl vm.overcommit_memory=2
vm.overcommit_memory = 2
[root@dev-007 ~]# (ulimit -v 100000; build-locale-archive)
build-locale-archive: cannot read archive header
[root@dev-007 ~]# cd /usr/lib/locale/
[root@dev-007 locale]# mv locale-archive locale-archive.tmpl
[root@dev-007 locale]# (ulimit -v 100000; build-locale-archive)
Connection to dev-007 closed.
我是否正确遵循了您的指示?如果不是,请让我知道我做错了什么。
更新三
抱歉,我花了这么长时间才给大家回复。
这是我的交换信息:
[root@dev-007 ~]# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 10178552 0 -1
[root@dev-007 ~]# df /dev/sda3
Filesystem 1K-blocks Used Available Use% Mounted on
- 952296 184 952112 1% /dev
答案1
鉴于诸如snmpd
和 之类的不相关进程crond
正在消亡,并且给定乔尔·泰勒的观察那locale-gen
可能会使用大量内存,你是受害者OOM 杀手。
为了避免 OOM 终止,请将过量使用策略设置为禁用过度使用:sysctl vm.overcommit_memory=2
即使禁用过度使用,最好locale-gen
通过限制可分配的内存量来限制损害。
(ulimit -v 100000; build-locale-archive)
答案2
问题是区域设置文件的截断。查看:http://bleachbit.sourceforge.net/forum/linux-fedora-core-15-usrliblocalelocale-archive-still-large-after-removing-all-one-locale
因此,如果您只是将区域设置文件复制到模板文件上并运行 build-locale-archive,则一切正常:
cp -f /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl build-locale-archive.