怎么修改ulimit,开启php的coredump输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么修改ulimit,开启php的coredump输出相关的知识,希望对你有一定的参考价值。

参考技术A 家应该都知道,开启php的coredump输出,修改ulimit -c就可以了,但是很多情况下,会提示权利受限,无法修改
[fukun@10.16.29.xxx]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 30678
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 32768
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

$ ulimit -c unlimited
-bash: ulimit: core file size: cannot modify limit: Operation not permitted

解决方案:
1.检查配置
看看shell配置里有没有 ulimit -c 0 这种类似的关闭的操作,例如
$HOME/.bash_profile 或者 $HOME/.bashrc 之类的,如果有,注释掉。
#
# Do not produce core dumps
#
# ulimit -c 0

2. 全局coredump开启
使用root用户,修改 /etc/security/limits.conf
# /etc/security/limits.conf
#
# Each line describes a limit for a user in the form:
#
# <domain> <type> <item> <value>
#
* soft core unlimited

3.退出并从新登录shell,修改配置
ssh fukun@10.16.29.xxx
[fukun@10.16.29.xxx]$ ulimit
-c
0

先切换成root用户进行设置
su -
ulimit -c unlimited
ulimit -c
unlimited

然后切换回自己的用户进行设置
su - fukun
ulimit -c unlimited
ulimit -c
unlimited

以上3步有可能不是必须的,但是只要按这个步骤来,肯定能设置成功,在其它方法设置不成功的时候,按这个步骤来试试把。本回答被提问者和网友采纳

linux下coredump学习

参照 https://www.cnblogs.com/alantu2018/p/8468879.html

 

1、查看linux下coredump是否开启

在linux上coredump默认是关闭的,可以通过ulimit -c查看,如果输出为0,则代表coredump没有开启。

可以使用 ulimit -c unlimited开启,再用ulimit -c查看,结果为unlimited;

但这种操作只能对当前终端有效,想让coredump持久开启,需修改vim /etc/security/limits.conf文件为如下内容

技术图片

再执行ulimit -c unlimited命令,打开新的终端再执行ulimit -c,结果显示为unlimited。

 

说明:命令中“unlimited”可以替换为core文件的大小,单位是KB;

2、 设置core文件的保存路径和名称:

cd  /proc/sys/kernel/

echo "/var/log/core/corefile-%e-%p-%t" > core_pattern (设置文件名称以及路径),/var/log/core文件不会自动生成需手动创建且创建时需注意权限。

生成core文件

技术图片

 

 3、查看core文件

技术图片

 

技术图片

 

 缺少依赖debuginfo-install和glibc

4、安装debuginfo-install和glibc

查找/etc/yum.repos.d/CentOS-Debuginfo.repo文件,如果找到把文件中的enable=0改成enable=1,如果没有则新建

里面的内容为:

# CentOS-Debug.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#

# All debug packages from all the various CentOS-7 releases
# are merged into a single repo, split by BaseArch
#
# Note: packages in the debuginfo repo are currently not signed
#

[base-debuginfo]
name=CentOS-7 - Debuginfo
baseurl=http://debuginfo.centos.org/7/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7
enabled=1

在查看/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7下内容(不同centos版本的内容不一样)

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)

mQENBFPE+90BCAChR7lmZuMhY3IXdMSwAFXwnJUMWJbwX1p2OR7XV/YLkKEZ+a0T
xnaEKwe9WDb7k0jUaMkeAu9ACtHKmnGrp5eCI7AJv5gF7GT1k615xyvCyGSCFTaw
VidWtXAK3RF1qKalNCj9sz8utjYVe8UXRcvHU20TlK/J1Z64Ths52UUI9kBWJN+i
QuruxEsMCyylmXeodUfQrFG+zifreCyQ0BYZEiH+6EtIzlPeCOjgjz2AWov19q/H
KXyUoiJpy40NWhEV8dazbpxrsiD5Tlc+bLjhpDTa7aPhhhUjJaSIEP3HBE01+0rz
nf00VrwQlsipRUYuv+8T5nlQ16l8IqknNLbDABEBAAG0PkNlbnRPUy03IERlYnVn
IChDZW50T1MtNyBEZWJ1Z2luZm8gUlBNUykgPHNlY3VyaXR5QGNlbnRvcy5vcmc+
iQE+BBMBAgAoBQJTxPvdAhsDBQkcMgSABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIX
gAAKCRDQ8lo8tnksOWRFB/9PzxN2l6KSLWHPJX8OD4B7npVoouM+mscK4oHjXSRI
y2u2O2tT2hmcQzan29dahk1hsnyLdQlNSo642rV4ykbOdW9iszCLrw4ZwuQmpm5c
qeHMUPntwz9MFvn9memh85kZuxdFnAHmaxmqNl+5LEPNmmWyfX7TjGyG1Oi2xd7o
yT7lKnVXyLdY8E62RKTuQ/BNnAFpmUVgLbeKVq6qggZYgPOLt7GpLfpCm63aDZoX
OzJM75RqCtiK0n1BSBdUiVQ8+2XXYqRejFOEZa5LrLNDLFfqYA0YgpN/ournTKWt
QLHycvaoJrXZzF2EQjLiU2hHx8vS3bTR0lZsv8tUBHXG
=2CYo
-----END PGP PUBLIC KEY BLOCK-----

这些都ok了,就可以使用yum install yum-utils命令了。

最后就是用debuginfo-install命令缺啥补啥了。

 

以上是关于怎么修改ulimit,开启php的coredump输出的主要内容,如果未能解决你的问题,请参考以下文章

程序崩溃调试 Linux开启产生coredump文件

Linux 打开core dump功能

利用gdb调试coredump

Linux开启core-dump简单总结

Linux开启core-dump简单总结

高通平台开发系列讲解(系统篇)coredump