2013-03-06 50 views
2

我試圖禁用核心轉儲我的應用程序禁用核心轉儲,我改變ulimit -c 0如何在Linux

但每當我試圖連接到進程使用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$ 
+0

請包括您的整個'bash'會話,顯示所有相關命令,以便我們不必猜測您正在運行的是什麼以及它的順序。 – NPE 2013-03-06 07:35:12

回答

4

gcore命令gdb沒有使用Linux的核心文件中的內核代碼傾倒。它正在走內存本身,並以與進程核心文件相同的格式寫出二進制文件。這是顯而易見的,因爲在發佈gcore之後該進程仍然是活動的,而如果Linux正在轉儲核心文件,則該進程將被終止。

+0

其實我想確定一個應用程序何時產生一個核心,它不應該在其中顯示密碼。所以,我試圖做的是停止創建核心,即使進程正在運行,也不應該能夠通過幫助gcore生成核心。我希望你能理解我的問題。 – rahulshr 2013-03-06 09:41:52

+0

@tor:Irregardless,如果您調用調試器,您將有權訪問該信息。這意味着如果您告訴'gdb'將信息打印出來,它會打印到屏幕上。 'gcore'告訴'gdb'將它知道的所有內容打印到一個文件中。 – jxh 2013-03-06 15:11:35