bash - 如何在Linux中禁用核心转储

标签 bash core coredump

我正在尝试禁用我的应用程序的核心转储,我更改了 ulimit -c 0

但是每当我尝试使用 gdb --pid=<pid> 使用 gdb 附加到进程时然后 gcore 我仍在获取该应用程序的核心转储。我正在使用 bash:

-bash-3.2$ 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) 65600
max locked memory       (kbytes, -l) 50000000
max memory size         (kbytes, -m) unlimited
open files                      (-n) 131072
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) 131072
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
-bash-3.2$ ps -ef | grep top
oracle    8951  8879  0 Mar05 ?        00:01:44 /u01/R122_EBS/fs1/FMW_Home/jrockit32 jre/bin/java -classpath /u01/R122_EBS/fs1/FMW_Home/webtier/opmn/lib/wlfullclient.jar:/u01/R122_EBS/fs1/FMW_Home/Oracle_EBS-app1/shared-libs/ebs-appsborg/WEB-INF/lib/ebsAppsborgManifest.jar:/u01/R122_EBS/fs1/EBSapps/comn/java/classes -mx256m oracle.apps.ad.tools.configuration.RegisterWLSListeners -appsuser APPS -appshost rws3510293 -appsjdbcconnectdesc jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS=(PROTOCOL=tcp)(HOST=rws3510293.us.oracle.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=rahulshr))) -adtop /u01/R122_EBS/fs1/EBSapps/appl/ad/12.0.0 -wlshost rws3510293 -wlsuser weblogic -wlsport 7001 -dbsid rahulshr -dbhost rws3510293 -dbdomain us.oracle.com -dbport 1521 -outdir /u01/R122_EBS/fs1/inst/apps/rahulshr_rws3510293/appltmp/Tue_Mar_5_00_42_52_2013 -log /u01/R122_EBS/fs1/inst/apps/rahulshr_rws3510293/logs/appl/rgf/Tue_Mar_5_00_42_52_2013/adRegisterWLSListeners.log -promptmsg hide -contextfile /u01/R122_EBS/fs1/inst/apps/rahulshr_rws3510293/appl/admin/rahulshr_rws3510293.xml
oracle   23694 22895  0 Mar05 pts/0    00:00:00 top
oracle   26235 22895  0 01:51 pts/0    00:00:00 grep top
-bash-3.2$ gcore
usage:  gcore [-o filename] pid
-bash-3.2$ gcore 23694
0x000000355cacbfe8 in tcsetattr () from /lib64/libc.so.6
Saved corefile core.23694

[2]+  Stopped                 top
-bash-3.2$ ls -l
total 2384
-rw-r--r-- 1 oracle dba 2425288 Mar  6 01:52 core.23694
drwxr----- 3 oracle dba    4096 Mar  5 03:32 oradiag_oracle
-rwxr-xr-x 1 oracle dba      20 Mar  5 04:06 test.sh
-bash-3.2$

最佳答案

gdb 中的 gcore 命令未使用内核中的 Linux 核心文件转储代码。它会遍历内存本身,并以与进程核心文件相同的格式写出二进制文件。这是显而易见的,因为在发出 gcore 后该进程仍然处于事件状态,而如果 Linux 正在转储核心文件,则该进程将被终止。

关于bash - 如何在Linux中禁用核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15241470/

相关文章:

java - 无法从 java 运行 shell 脚本

linux - bash 脚本 - 执行 find 命令没有输出

linux - 从 header 计算 linux 核心文件大小

c - 打开文件时出现段错误

linux - bssh 自动在两个 linux 服务器之间传输文件

linux - 通过以编程方式关闭打开的应用程序来强制卸载 USB 驱动器

java - 检查文件是否存在java

java - 缺少单独的调试信息,请使用 : debuginfo-install glibc-2. 12-1.166.el6_7.7.x86_64

C++ - Windows IoT Core 远程调试器 - 调试器无法启动

linux - 在 Debian 9 上启用核心转储