[命令] Linux 命令 logger (手动向系统日志写入信息)

内容一:手动向系统日志写入信息

# logger [This is test message]

(补充:这里以往系统日志里写入一条包含 This is test message 内容的信息为例)

内容二:显示手动向系统日志写入信息

# grep "This is test message" /var/log/messages

(补充:这里在系统里查找一条包含 This is test message 内容的信息为例)

[内容] Linux 生命周期

RHEL

English:

https://access.redhat.com/support/policy/updates/errata/#Extended_Life_Cycle_Phase

Or:

https://access.redhat.com/product-life-cycles?product=Red%20Hat%20Enterprise%20Linux

Chinese:

https://access.redhat.com/zh_CN/support/policy/updates/errata#Extended_Life_Cycle_Phase

Red Hat all products

https://access.redhat.com/product-life-cycles/update_policies

Red Hat software packages

https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle?extIdCarryOver=true&sc_cid=701f2000001OH6fAAG

openSUSE

English:

https://en.opensuse.org/Lifetime

Chinese:

https://zh.opensuse.org/%E4%BD%BF%E7%94%A8%E6%9C%9F%E9%99%90

SLES

https://www.suse.com/lifecycle

[步骤] Linux Kdump 内核奔溃信息的分析 (Rocky Linux & RHEL 版)

步骤一:开启 Kdump

1.1 确保 crash 和 kernel-debuginfo 两个软件包已安装

# rpm -qa | grep crash || dnf install crash ; rpm -qa | grep kernel-debug || dnf install kernel-debug

1.2 给 Kdump 分配保留内存

1.2.1 通过在 /etc/default/grub 配置文件里修改 crashkernel 参数
# vim /etc/default/grub

在这一行里:

GRUB_CMDLINE_LINUX_DEFAULT="......"

添加:

GRUB_CMDLINE_LINUX_DEFAULT="...... crashkernel=auto"


补充:这里的 auto 代表系统会根据内存大小自动设置一个值,也可以指定一个值,例如:crashkernel=128M,high、crashkernel=256M,high 等等。如果设置成一个固定值,建议
1) 1 GB 到 4 GB 内存设置成 160 M
2) 4 GB 到 64 GB 内存设置成 192 M
3) 64 GB 到 1 TB 内存设置成 256 M
4) 大于 1 TB 内存设置成 512 M

1.2.2 让刚刚修改的内核参数生效
# grub2-mkconfig -o /boot/grub2/grub.cfg;reboot
1.2.3 显示给 Kdump 预留内存的大小
# makedumpfile --mem-usage /proc/kcore

步骤二:触发 Kdump 内核奔溃

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

步骤三:分析 KDUMP 生成的内核奔溃信息

3.1 进入存放 KDUMP 内核奔溃信息的目录

# cd /var/crash/<date>/

3.2 解析 KDUMP 生成内核崩溃信息

# crash vmlinux-2.6.32.12-0.7-default vmcore

(补充:这里以使用 2.6.32.12-0.7-default 版本的 kernel-debuginfo 解析为例)

3.3 确认生成了 vmlinux-2.6.32.12-0.7-default.gz 压缩包

# ls vmlinux-2.6.32.12-0.7-default.gz

(注意:如果这里生成了 vmlinux-2.6.32.12-0.7-default.gz 压缩包的话,这里会有 vmlinux-2.6.32.12-0.7-default.gz 信息的显示)

(补充:这里以确认 2.6.32.12-0.7-default 版本的 kernel-debuginfo 生成的压缩包为例)

3.4 解压 vmlinux-2.6.32.12-0.7-default.gz 压缩包

# gzip -d vmlinux-2.6.32.12-0.7-default.gz

(补充:这里以解压 2.6.32.12-0.7-default 版本的 kernel-debuginfo 生成的压缩包为例)

3.5 分析 KDUMP 生成的内核奔溃信息

(步骤略)

参考文献:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_monitoring_and_updating_the_kernel/analyzing-a-core-dump_managing-monitoring-and-updating-the-kernel

[排错] 解决 Linux 运行时报错 “watchdog: Bug: soft lockup – CPU……” (CPU 软锁)

报错代码

watchdog: Bug: soft lockup - CPU......

分析

当 CPU 的负载过高时,一个 CPU 在运行某一个进程时,在内核模式下超过 20 秒没有回应,则看门狗程序会将系统所有 CPU 软锁住,然后会让这些 CPU 显示各自正在运行的进程堆栈跟踪

缓解方法

方法一:通过 /proc/sys/kernel/watchdog_thresh 文件延长看门狗软锁 CPU 的时间

# echo 20 > /proc/sys/kernel/watchdog_thresh

(补充:这里以将看门狗的值延长到 20 为例,也可以根据自己的需求延长更多,默认值为 10)

方法二:通过新建文件延长看门狗软所 CPU 的时间

2.1 通过新建文件延长看门狗软所 CPU 的时间

# echo "kernel.watchdog_thresh = 20" >> /etc/sysctl.conf

(补充:这里以将看门狗的值延长到 20 为例,也可以根据自己的需求延长更多,默认值为 10)

2.2 让新建文件立刻生效

# sysctl -p /etc/sysctl.conf

深究方法

开启 Kdump,等此报错再次发生时分析 Kdump 在内核崩溃时搜集信息 vmcore

最后一个特洛伊战士

众神之晨曦,在东方升起,圣洁的阳光普照大地。雅典娜在歌唱,歌唱胜利的来临。

木马里的士兵,冒着特洛伊人的诅咒,打开了城门,让希腊联军一拥而入。

正义不属于特洛伊,雅典娜的手杖,散发着耀眼的智慧之光,照亮了希腊士兵前进的方向,映照着光明的来临。

“光明?”一个小特洛伊在我身边小声地说了一句。

我在追随着最后一支特洛伊队伍进入城市的密道时,回望着雅典娜在空中的身影。

“埃涅阿斯!”

当我们从密道出来时,与一支巡逻的希腊队伍撞在了一起,我鼓起全部勇气颤抖着冲向一个希腊士兵,却发现他毫不畏惧。

我憎恨自己所要面对的一切,憎恨雅典的自以为是,憎恨斯巴达的残暴,憎恨战俘是奴隶,女人是战利品的制度。

我憎恨宙斯的闪电划破宁静的天空,憎恨哈克斯的火球漫天飞舞,憎恨雅典娜的智慧,憎恨阿瑞斯的强大,憎恨他们以不死之身与人类战斗。

我增恨海伦花枝招展地卖弄自己的身体,憎恨她美丽,憎恨她笑容,憎恨她不以自己所引起的战争感到羞愧而是以之为自豪。

风吹走了浅浅的云层,明媚的阳光再次直射大地,透过稀稀疏疏的树林,形成了一束束的光明。

终于冲破了重围。血在剑刃上凝固,整个队伍都默不作声,“特洛伊,你到底代表着什么?”

不论天空再明在暗,海永远都是蓝色,终于快到了爱琴海,清新的空气扑面而来。

在海边,整齐地排列着一队希腊重装步兵,银色的铠甲和盾牌反射着耀眼的秩序之光,直射入特洛伊人的眼里。

“光明?”一个小特洛伊在我身边小声地说了一句。

此时,一个身影从希腊队伍中走了出来映入了我们的眼帘:阿喀琉斯!没有人能与希腊第一勇士阿喀琉斯单独抗衡。

我抬起了头,看见雅典娜在空中得意地笑了:要么失去自由,要么失去生命。

我低下了头,为什么是我,来面对这一切。

“埃涅阿斯?”

我拔出了剑。为了自由,饱经沧桑的特洛伊军队再次向希腊的铁墙冲去。

我无法面对阿喀琉斯,我用尽全力挥舞着利剑,却怎么也无法穿透他的铠甲,而每次用盾牌格挡攻击时,却能被随之而来的剑击震麻整个手臂……

但一个声音中断了战斗,阿喀琉斯:“让他们走,他们不是特洛伊人。”

我困惑得看着阿喀琉斯,他似乎在同情特洛伊人最后的勇气。我没吭声,慢慢地向他走去。

谁也无法想象,阿喀琉斯慢慢地在我面前倒下了,他的鲜血沾在了我的身上……

(阿波罗趁我走近阿喀琉斯的时候,悄悄射出了一支利箭击中了阿喀琉斯唯一的弱点——脚踝。阿波罗,特洛伊的太阳神,他想用这种方式让世界都认为:特洛伊是最伟大的战士)

最后一个希腊士兵死在了一个小特洛伊的剑下,他举目四望,却发现埃涅阿斯正站在海边哭泣,他独自说道:“宙斯想让他指定的人创造奇迹,他以为他什么都懂,但是他根本不知道一个奇迹的代价到底有多大。”

(阿喀琉斯死后,我们不再愿意自称是特洛伊人)

我们抢走了希腊人的船只,向着西方航行,在那里我们将找到一片新的土地——意大利,我们将在那里创建一个新的国家——罗马。

(续写自 《伊利亚特》)