kk Blog —— 通用基础

date [-d @int|str] [+%s|"+%F %T"]

ubuntu crash

https://www.jianshu.com/p/3c92647140f7

https://help.ubuntu.com/lts/serverguide/kernel-crash-dump.html

自己编译的内核会OOM,需要增大内存

If the dump does not work due to OOM (Out Of Memory) error, then try increasing the amount of reserved memory by editing

/etc/default/grub.d/kdump-tools.cfg

1
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT crashkernel=384M-:256M"

run sudo update-grub and then reboot afterwards, and then test again.


安装

1
sudo apt-get install linux-crashdump

重启机器

需要启动下面的服务

1
2
3
4
5
$ service --status-all | grep ' k'
[ + ] kdump-tools
[ + ] kerneloops
[ + ] kexec
[ + ] kexec-load

查看kdump的状态

1
2
3
4
5
6
7
8
9
10
$ kdump-config show
DUMP_MODE:        kdump
USE_KDUMP:        1
KDUMP_SYSCTL:     kernel.panic_on_oops=1
KDUMP_COREDIR:    /var/crash
crashkernel addr: 0x21000000
   /var/lib/kdump/vmlinuz: symbolic link to /boot/vmlinuz-4.15.18
kdump initrd: 
   /var/lib/kdump/initrd.img: symbolic link to /var/lib/kdump/initrd.img-4.15.18
current state:    ready to kdump

验证

1
2
echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger

ssh反向连接

https://www.cnblogs.com/eshizhan/archive/2012/07/16/2592902.html

内网主机主动连接到外网主机,又被称作反向连接(Reverse Connection)

ssh

A主机:外网,ip:123.123.123.123,sshd端口:2221

B主机:内网,sshd端口:2223

1.1.首先在B上执行

1
ssh -NfR 1234:localhost:2223 user1@123.123.123.123 -p2221

这句话的意思是将A主机的1234端口和B主机的2223端口绑定,相当于远程端口映射(Remote Port Forwarding)。

像平时一样连接到A主机的1234端口就可以控制内网B主机了

1
ssh localhost -p1234

Autossh的用法

1
autossh -M 5678 -NfR 1234:localhost:2223 user1@123.123.123.123 -p2221

比之前的命令添加的一个-M 5678参数,负责通过5678端口监视连接状态,连接有问题时就会自动重连.

gdb子进程

https://blog.csdn.net/fingding/article/details/46459095

1. follow-fork-mode

用法:set follow-fork-mode [parent|child]

进入gdb后,直接设置,默认是parent

所以如果想要调试子进程,进入gdb后设置set follow-fork-mode child,然后设置子进程的断点

可用使用show follow-fork-mode 来查询当前fork模式

使用follow-fork-mode,只能调试一个进程,不能同时调试父子进程

2. detach-on-fork mode

用法:set detach-on-fork [on|off]

on: 只调试父进程或子进程的其中一个(根据follow-fork-mode来决定),这是默认的模式。

off: 父子进程都在gdb的控制之下,其中一个进程正常调试(根据follow-fork-mode来决定),另一个进程会被设置为暂停状态。

如果设置了set detach-on-fork off且follow-fork-mode为parent,fork后子进程并不运行,而是处于暂停状态。