linux 内核全景图
2020-07-27 tech kernel linux 1 mins 116 字
原网站: https://makelinux.github.io/kernel/map/
展示 Linux内核中的所有模块,和模块中的关键函数调用关系。
原网站上将图中的所有函数都附上连接,点击进去可以看到该函数在内核源码中的哪个位置。
原网站: https://makelinux.github.io/kernel/map/
展示 Linux内核中的所有模块,和模块中的关键函数调用关系。
原网站上将图中的所有函数都附上连接,点击进去可以看到该函数在内核源码中的哪个位置。
挺有趣的题目,原文: https://zhuanlan.zhihu.com/p/163623062
本考试为闭卷考试,总分 120 分,考试时间 120 分钟。答题卡必须使用中性笔或黑色墨水的钢笔填写,答在试卷上的答案视为无效。考试期间允许使用游标卡尺。
编写 Ansible playbook 实现 Ubuntu 20.04 服务器自动加入 Active Directory 域,允许域管理员以 sudo 身份执行任意命令(无需再次输入登录密码),并且域用户可以使用 kerberos 认证方式从 SSH 登录服务器。(10 分)
你有公司服务器的 root 权限,并且对公司怀恨在心已久,想要在从公司离职之前破坏 CentOS 8 服务器上的数据。请使用 POSIX 兼容的 Shell 脚本写一个小程序,支持以下功能:
(20 分)
请写出 QEMU 从一个 raw 格式虚拟磁盘文件启动虚拟机的所有方法。(10 分)
已知服务器上现有一个病毒程序,你使用 ps 和 top 均无法看到此病毒进程。那么接下来你将如何查找该病毒程序的位置?请简述你的思路。(10 分)
随着网络技术的发展,网络的瓶颈已经逐渐不再是网卡和网线,而是 CPU、内存和基于中断的内核网络协议栈。为了充分利用 100Gbps 以上的高速网络,人类不断开创新技术以绕过这些瓶颈。请在这类技术中任选一个,说明:
1)它以什么方式绕过了哪些网络传输过程中的瓶颈 2)它的部署成本和带来的性能提升 3)它对计算机系统和网络分别有哪些前提要求(20 分)
你是一家大型传统行业公司的运维部门领导,公司的主要业务都基于 Java 和 PHP 编写。开发部门的领导准备在公司推广使用 k8s。 1)使用 k8s 对运维部门会带来哪些好处和哪些坏处?(10 分) 2)公司非技术出身的领导团队对 k8s 仍持怀疑态度,从你和对方的专业角度出发,提出强有力的观点来打消对方的疑虑。(20 分)
不喜欢服务器上跑着不明的进程,年初入了几个华为云耀云服务器,这一篇记录如何卸载华为云服务器自带的系统探针,系统为Debian 10。
首先我们来看一下服务器有哪些进程:
pstree -a
可以查到与几个不明的进程,
systemd
|-ModemManager --filter-policy=strict # 控制移动宽带设备和连接,管理上网卡,跑这个,有病?
| `-2*[{ModemManager}]
|-NetworkManager --no-daemon # 网络配置
| |-dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper -pf /run/dhclient-eth0.pid -lf...
| `-2*[{NetworkManager}]
|-hostguard # 目标进程,执行检测任务,全量扫描主机;实时监测主机的安全状态,并将收集的主机信息上报给云端防护中心。
| `-hostguard
| `-15*[{hostguard}]
|-irqbalance --foreground # 优化中断分配(可以卸载),自动迁移中断保持中断的平衡,同时会考虑到省电因素等等。 但是在实时系统中会导致中断自动漂移,对性能造成不稳定因素。
| `-{irqbalance}
|-polkitd --no-debug # 系统层级权限控制(可以卸载)
| `-2*[{polkitd}]
|-rpcbind -f -w
|-rsyslogd -n -iNONE
| `-3*[{rsyslogd}]
|-systemd --user
| `-(sd-pam)
|-systemd-journal
|-systemd-logind
|-systemd-udevd
|-wpa_supplicant -u -s -O /run/wpa_supplicant # 无线网络配置,不能卸载= =,卸载之后会因为无法配置网络而无法启动
`-wrapper /CloudResetPwdUpdateAgent/bin/../conf/wrapper.confwrapper.syslog.ident=cloudResetPwdUpdateA
|-java -Dorg.tanukisoftware.wrapper.WrapperSimpleApp.maxStartMainWait=40-Djava.libr
| `-14*[{java}]
`-{wrapper}
# 改密码的代理agent
整理了需要卸载这个几个组件,以下命令均需要root权限运行:
ModemManager
systemctl |grep Modem
systemctl stop ModemManager.service
systemctl disable ModemManager.service
apt-get purge --auto-remove -y modemmanager
hostguard
dpkg -P hostguard
irqbalance
apt-get purge --auto-remove -y irqbalance
polkitd
systemctl disable polkit.service
systemctl stop polkit.service
CloudResetPwdUpdateAgent
bash /CloudrResetPwdAgent/bin/cloudResetPwdAgent.script remove
bash /CloudResetPwdUpdateAgent/bin/cloudResetPwdUpdateAgent.script remove
rm -rf /CloudrResetPwdAgent
rm -rf /CloudResetPwdUpdateAgent
SSL 证书是有过期时间的,以前有介绍过 Let’s Encrypt,Let’s Encrypt 证书过期时间是90天,这篇文章记录我的证书过期时间检测脚本。
首先有一个文件记录域名信息 :
# domain_list.md
blog.kelu.org:443
cdn.kelu.org:443
然后同级目录下读取文件进行监控:
#!/bin/bash
script_dir=$( cd "$( dirname "$0" )" && pwd )
readFile="${script_dir}/domain_list.md"
grep -v '^#' ${readFile} | while read line;do # 读取存储了需要监测的域名的文件
domain=$(echo "${line}" | awk -F ':' '{print $1}')
domain_port=$(echo "${line}" | awk -F ':' '{print $2}')
# 使用openssl获取域名的证书情况,然后获取其中的到期时间
END_TIME=$(echo | openssl s_client -servername ${domain} -connect ${domain}:${domain_port} 2>/dev/null | openssl x509 -noout -dates |grep 'After'| awk -F '=' '{print $2}'| awk -F ' +' '{print $1,$2,$4 }' )
END_TIME1=$(date +%s -d "$END_TIME") # 将日期转化为时间戳
NOW_TIME=$(date +%s -d "$(date | awk -F ' +' '{print $2,$3,$6}')") # 将当前的日期也转化为时间戳
RST=$(($(($END_TIME1-$NOW_TIME))/(60*60*24))) # 到期时间减去目前时间再转化为天数
echo "${RST}天 : ${domain}"
if [ $RST -lt 30 ]; then
# 一些告警的逻辑。。。
/usr/bin/kelumail "${domain} 证书即将到期" "剩余${RST}天"
fi
done
血衫的blog实际上对应着好些个IP,如果直接监控域名,如果某IP挂掉,也不易察觉。以下是我监控的做法,使用自定义域名解析监控:
domain="blog.kelu.org"
port="443"
curl -I -m 10 -o /dev/null -s -w %{http_code} https://$domain --resolve "$domain:$port:10.100.1.1"
iftop是类似于top的实时流量监控工具。
=>代表发送数据,<= 代表接收数据
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
-i 指定需要检测的网卡, 如果有多个网络接口,则需要注意网络接口的选择,如:# iftop -i eth1
-B 将输出以byte为单位显示网卡流量,默认是bit
-n 将输出的主机信息都通过IP显示,不进行DNS解析
-N 只显示连接端口号,不显示端口对应的服务名称
-F 显示特定网段的网卡进出流量 如iftop -F 192.168.85.0/24
-h 帮助,显示参数信息
-p 以混杂模式运行iftop,此时iftop可以用作网络嗅探器 ;
-P 显示主机以及端口信息
-m 设置输出界面中最上面的流量刻度最大值,流量刻度分5个大段显示 如:# iftop -m 100M
-f 使用筛选码选择数据包来计数 如iftop -f filter code
-b 不显示流量图形条
-c 指定可选的配置文件 如iftop -c config file
-t 使用不带ncurses的文本界面,
以下两个是只和-t一起用的:
-s num num秒后打印一次文本输出然后退出,-t -s 60组合使用,表示取60秒网络流量输出到终端
-L num 打印的行数
-f 参数支持tcpdump的语法,可以使用各种过滤条件。
P 切换暂停/继续显示
h 在交互界面/状态输出界面之间切换
b 切换是否显示平均流量图形条
B 切换显示2s 10s和40s内的平均流量
T 切换是否显示每个连接的总流量
j/k 向上或向下滚动屏幕显示当前的连接信息
f 编辑筛选码
l 打开iftop输出过滤功能 ,如输入要显示的IP按回车键后屏幕就只显示与这个IP相关的流量信息
L 切换显示流量刻度范围,刻度不同,流量图形条也会不同
q 退出iftop
n 使iftop输出结果以IP或主机名的方式显示
s 切换是否显示源主机信息
d 切换是否显示远端目标主机信息
t 切换输出模式,一行或多行
N 切换显示端口号/端口号对应服务名称
S 切换是否显示本地源主机的端口信息
D 切换是否显示远端目标主机的端口信息
p 切换是否显示端口信息
1/2/3 通过第一列/第二列/第三列排序
< 根据左边的本地主机名或IP地址进行排序
> 根据远端目标主机的主机名或IP地址进行排序
o 切换是否固定显示当前的连接
启动界面
iftop -i eth0 -PB -f tcp
按L,显示流量刻度
按T,显示总量
按t,合并发送接收,只显示一行
按1/2/3,按照 2/10/40s的速度进行排序
按B,查看最近2s、10s、40s的统计
按D,不显示远端目标主机的端口信息
按P,暂停刷新