ulimit開啟coredump時核心轉儲


[root@localhost ~]# ulimit -c
0
[root@localhost ~]# 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) 7384
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
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) 7384
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

可以看到默認core文件大小為0,也就是coredump時並不生成core文件,如果要開啟coredump則可以執行 ulimit -c unlimited 

另外可以看到core文件大小的單位是blocks,一個block的大小可以通過命令 /sbin/tune2fs -l /dev/sda1 查看

[root@localhost ~]# /sbin/tune2fs -l /dev/sda1|grep Block
Block count:              512000
Block size:               1024
Blocks per group:         8192

可以看到每個block的大小是1KB,那么要設置最大core文件大小為1GB則執行 ulimit -c 1048576 

因為保留core文件的目的在於調試程序,而限制了最大大小后core文件變得不完整也就失去了保留的意義,所以還是應該設置為unlimited

我的需求是總的core文件別占用太多空間,所以只能通過其他的方式實現:只保留最近6個最新的

ls -t /root/core.*|tail -n+6|xargs --no-run-if-empty rm

另外,關於core文件的文件名及格式可在 /proc/sys/kernel/core_pattern 中進行修改,或者在 /etc/sysctl.conf  里設置 kernel.core_pattern 實現重啟后依然生效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM