运行 `build-locale-archive` 会导致我的 ssh 会话终止

运行 `build-locale-archive` 会导致我的 ssh 会话终止

我之前问过这个问题,如何减小区域设置存档的大小?,并得到了我的问题的很好答案,但是当我执行时,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就死了。crondbuild-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.

相关内容