1 prlimit runtime set process coredump size
2
3 prlimit -p pid --core
4
5 prlimit -p pid --core=unlimited:unlimited
6
7 /root/zone/bin/core.%e.%t
8
9 kill -s SIGTRAP pid
10
11 #https://man7.org/linux/man-pages/man2/getrlimit.2.html
12
13
14 echo "|/root/zone/bin/script/coredump.sh %p %t %e" > /proc/sys/kernel/core_pattern
15
16
17 /etc/libvirt/qemu.conf
18
19
20 #max_core = "unlimited"
21 #dump_guest_core = 1
22
23 #coredump without guest memdump
24 sed -i "s/#max_core = \"unlimited\"/max_core = \"unlimited\"/g" /etc/libvirt/qemu.conf
25
26 #coredump with guest memdump
27 sed -i "s/#dump_guest_core = 1/dump_guest_core = 1/g" /etc/libvirt/qemu.conf
28
29
30
31
32 zone16:
33 sed -i "s/#max_core = \"unlimited\"/max_core = \"unlimited\"/g" /etc/libvirt/qemu.conf
34 systemctl restart libvirtd
35 systemctl status libvirtd
36
37 ROOT_PATH=/dev/shm/zone_20230313-10
38 echo "|${ROOT_PATH}/script/coredump.sh %p %t %e" > /proc/sys/kernel/core_pattern
39
40 cp /dev/shm/zone_20230313-10/script/coredump.sh /dev/shm/zone_20230313-14/script/
41 echo "|/dev/shm/zone_20230313-14/script/coredump.sh %p %t %e" > /proc/sys/kernel/core_pattern
42
43
44 source /mnt/boot/jumper/zone_setup.conf
45 scp $opt coredump.sh root@$prefix.10:${ROOT_PATH}/script/
46
47
48 zone16:恢复
49
50 sed -i "s/max_core = \"unlimited\"/#max_core = \"unlimited\"/g" /etc/libvirt/qemu.conf
51 systemctl restart libvirtd
52 systemctl status libvirtd
1 #!/bin/bash
2 current=${0}
3 pid=${1} #目标PID
4 timesample=${2} #目标core时间
5 comm=${3} #目标comm
6
7
8
9 current_pname=$(basename $current)
10 current_path=${current//\/script\/$current_pname/}
11
12 # include zone config
13 source /dev/shm/system/setup.conf
14 source ${current_path}/user/zone${ZONE_ID}.conf
15
16 # echo "coredump.sh $current, $current_pname, $current_path, ${MOUNT_DIR}" >> /root/zone/bin/test.log
17
18 hostname=$(hostname)
19 fs_mount_dir=${MOUNT_DIR}
20 RANDOM_NUMBER=${RANDOM}
21 dumpinfo_file=${fs_mount_dir}/hdd/core.${RANDOM_NUMBER}.info
22
23 if [ "${comm}" != "qemu-kvm" ];then # these process are zone submodules
24 # core.%e.%t
25 dumpfile=${current_path}/core.${comm}.${timesample}.${pid}
26 cat > ${dumpfile}
27 else # qemu-kvm
28 dumpfile=${fs_mount_dir}/hdd/core.${RANDOM_NUMBER}
29 cat > ${dumpfile}
30 # 防止core名字过长
31 echo ${hostname}.${comm}.${timesample}.${pid} > ${dumpinfo_file}
32 ls -al /proc/${pid}/cwd >>${dumpinfo_file}
33 cat /proc/${pid}/maps >>${dumpinfo_file}
34 fi
35
36 logger "coredump.sh 严重错误,进程 coredump,dumpfile:$dumpfile" -p err
37
38 # echo "coredump.sh 严重错误,进程coredump,dumpfile:$dumpfile" >> /root/zone/bin/test.log