Recent Posts
-
August 20, 2018
Shell脚本的字符串分割和参数展开shell expansions 和word splitting
bash的叫脚本写起来真是不习惯。args="param1 param2 param3"command1 "$args" # command 看到1个参数command1 $args # command1 命令里面会看到3个参数 “param1” 、“param2” 、“param3”。看上面这个例子, 后面这个args字符串没有引号的就被展开,分成3个参数传给 command1这个命令或者函数了。这个在bash脚本里面叫做Shell-Expansions,字符串的分割也是可以通过...
-
August 14, 2018
Linux程序重定向标准输出流stdout到文件
像golang里面的log是很容易位置输出文件的, c程序的话需要重定向标准输出流sstdout和错误输出流到stderr其实也很容易,关键是 dup2 和 freopen 函数。 freopen("stdout.txt","w", stdout); freopen("stderr.txt","w", stderr); freopen(“stdout.txt”,”w”, stdout);应该等价于 int new_fd = open("st...
-
August 06, 2018
Linux的pf_packet原始套接字接收和发送链路层的网络包
PF_PACKET socket可以用来接收和发送链路层的网络包,让你直接在二层的mac地址头后面自由构造任意的数据直接投递给网卡驱动,应该是绕过netfilter, 如果设置PACKET_QDISC_BYPASS选项还可以绕过QDISC流控。这个可以用来直接发送ARP/ICMP/IGMP/802.1q vlan头的网络包等。参考 http://man7.org/linux/man-pages/man7/packet.7.html Packet sockets are used...
-
July 29, 2018
Linux系统启动时的背景动画splash screen和plymouth
启动时的静态的背景图是grub里面提供的功能,设置一个图片就可以了,自己搜索 grub splash screen可以搜索到很多相关的配置。参考 http://www.tuxfixer.com/set-grub2-custom-splash-screen-on-rhel-7-centos-7-uefi-and-legacy-bios-iso-image/像centos和ubuntu等动画式启动进度条的,应该都是通过PLYMOUTH 这个来软件来实现的。这个软件允许配置之制作动画式的主题背景...
-
July 21, 2018
Cpu微码补丁microcode和linux内核的microcode更新机制
今天在linux的启动的内核日志里面看到一条下面这样的日志,[Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x20 (or later)好像是CPU的microcode版本太低, 影响“APIC timer”的初始化。所以就花了点时间看看这个 Microcode。CPU的微码Microcode原来CPU还是可以动态更新一下固件的microcode的。像Inte...
-
July 14, 2018
Linux字符界面编程tui之为啥perf的tui终端颜色显示
发现测试机上的perf top显示的没有颜色高亮,看起来很不舒服。看一下原本的centos7的机器,有颜色显示,看起来就好看了。 之前了解到Ncurses这个库,专门用来开发字符终端界面的。功能很强大,好像还有一个CDK(develop kit) 做了更多控件包装。感兴趣的可以看一下。 https://en.wikipedia.org/wiki/Ncurses 不过perf用的不是ncurses, 网上有人说用的是newt,另外一个字符界面编程库。 ...
-
May 24, 2018
Windows控制面板子项网络连接的快捷方式
windows 10 里面打开这个 “网络连接”真是不方便,要点击很多次。windows 里面还不能直接创建快捷方式。搜索了一下, 这里有很多控制面板子功能的快捷方式。Windows 10: List of Commands to Open Control Panel Items in Windows 10在桌面新建一个快捷方式, 位置指定为 “control.exe ncpa.cpl” 或者 “control.exe netconnections”这下省事了,
-
May 18, 2018
Linux内核printk的打印速率限制
如果在一些关键的路径上,比如网络包处理路径,大量用printk打印东西,是会拖垮系统的。 要对这种关键路径上可能频繁打印的地方,做一些频率限制,可以避免估计触发打印的DDOS攻击等。这个新版的内核已经提供了printk_ratelimited, pr_err_ratelimited , pr_warn_ratelimited 等宏的定义,直接使用就行了。#define printk_ratelimited(fmt, ...) \({ \ static DEFINE...
-
May 16, 2018
多模式匹配 多正则表达式匹配算法
很多时候有一个这种应用场景,想测试某个字符串来测试,看看是否匹配多个正则表达式里面的某一个。如果正则表达式的数量很少,直接循环检查所有的正则表达式就好了,但如果正则表达式数量太多了成千上万条的话,这么轮询匹配效率就太低了。很多人也遇到过类似的问题: Regex was taking 5 days to run. So I built a tool that did it in 15 minutes Speed up millions of regex replacements in P...
-
May 10, 2018
解压linux内核vmlinuz为vmlinux
linux源码里面提供一个脚本,比如在ubuntu上面/lib/modules/4.15.0-20-generic/build/scripts/extract-vmlinux vmlinuz > vmlinux