
操作系统
Docker与防火墙问题——不让docker创建iptables规则
穆琪 发表于2023-04-28 浏览85 评论0
1.背景
在某一天,线上被扫出来一个服务漏洞,但是那个服务漏洞的端口不在firewalld防火墙上开放,查了大半天,发现docker自动会在iptable上面添加规则。
默认情况下当Docker启动容器映射端口时,会直接使用iptables开启添加端口。
操作系统
根据进程pid查看该进程所属的容器
穆琪 发表于2023-04-28 浏览74 评论0
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Name}}' | grep "PID"
将PID换成实际pid即可

杂项
CI/CD简述
穆琪 发表于2023-04-28 浏览79 评论0
1.背景

杂项
Git Merge 与 Git Rebase的区别
穆琪 发表于2023-04-28 浏览73 评论0
1.背景
merge和rebase都是用于分支合并,但实现机制不同。
git merge是将两个分支的修改合并成一个新的提交,并保留两个分支的历史记录;
git rebase是将一个分支的修改应用到另一个分支上,使得两个分支的修改看起来像是顺序提交的。
接下来,通过图形的方式直观地介绍git merge和git rebase的工作过程。
2.合并(Merge)
git merge是将一个分支的修改融入到另一个分支的一种方式,可执行两种类型的合并:fast-forward 和 no-fast-forward,现在你可能分不清,不过没关系,我们马上来看看它们的差异所在。
数据库
查看pg中正在执行的语句
穆琪 发表于2023-04-28 浏览78 评论0
1.背景
有时候代码写的不好,会导致sql性能比较差,比如乱用in_。这时候就需要查看pg中正在执行的语句,看哪些语句执行时间过长。
2.sql语句
select pid, datname, usename, client_addr, application_name, state, backend_start, xact_start, xact_stay, query_start, query_stay, replace(query, chr(10), ' ') as query from (select pgsa.pid as pid, pgsa.datname as datname, pgsa.usename as usename, pgsa.client_addr client_addr, pgsa.application_name as application_name, pgsa.state as state, pgsa.backend_start as backend_start, pgsa.xact_start as xact_start, extract(epoch from (now() - pgsa.xact_start)) as xact_stay, pgsa.query_start as query_start, extract(epoch from (now() - pgsa.query_start)) as query_stay, pgsa.query as query from pg_stat_activity as pgsa where pgsa.state != 'idle' and pgsa.state != 'idle in transaction' and pgsa.state != 'idle in transaction (aborted)') idleconnections order by query_stay desc;
操作系统
grep 打印出前后n行的内容
穆琪 发表于2023-04-28 浏览60 评论0
1.背景
在开发排查问题的过程中,需要grep错误日志,为了更好的分析,需要把grep到的错误日志的前后n行打印出了,此处以10行为例。
2.步骤
可以使用 grep 命令结合 Context Control 选项来打印出匹配行的前后行内容,其中 -C 选项用于指定要打印的上下文行数,例如:

操作系统
检查在 Linux 中按 RAM 或 CPU 使用率排序的进程
穆琪 发表于2023-04-28 浏览54 评论0
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
效果:
操作系统
监控删除docker日志
穆琪 发表于2023-04-28 浏览50 评论0
1.背景
docker容器在启动一段时间后应用服务会产生日志,当没有映射出来的时候,这些日志就会持续占用var下的目录空间,此时就需要清理这些日志。
2.脚本
echo "======== start clean docker containers logs ========" logs=$(find /var/lib/docker/containers/ -name *-json.log) for log in $logs do echo "clean logs : $log" cat /dev/null > $log done echo "======== end clean docker containers logs ========"