Linux进程和线程

思考题:当你用ssh登录到一个linux机器,并且执行了某个hello.sh之后,有哪些进程参与了该过程? linux系统架构 kernel mode user mode 内核态和用户态的区别 什么是进程 进程是运行的程序 process 是对 processor 虚拟化,通过时间片 进程都有uid nginx访问某个目录,Permission denied 进程都有pid $$ 进程都有父进程 准确来说,除了pid为0的进程之外,其他进程都有父进程 有时候,你用kill命令杀死了一个进程,但是立马你就发现这个进程又起来了。你就要看看,这个进程是不是有个非init进程的父进程。一般这个进程负责监控子进程,一旦子进程挂掉,就会去重新创建一个进程。所以你需要找到这个父进程的Id,先把父进程kill掉,然后在kill子进程。 进程是一棵树 #!/bin/bash echo "pid is $$" times=0 while true do sleep 2s; let times++; echo $times hello; done ➜ ~ pstree 24601 sshd─┬─3*[sshd───zsh] ├─sshd───zsh───pstree └─sshd───zsh───world.sh───sleep 进程都有生命周期 创建 销毁 进程都有状态 runing 进程占用CPU, 正在执行指令 ready 进程所有需要的资源都已经就绪,等待进入CPU执行 blocked 进程被某些事件阻断,例如IO。 进程的状态转移图 进程都有打开的文件描述符 使用lsof命令,可以查看某个进程所打开的文件描述符 /proc/pid/fd/目录下也有文件描述符 lsof -c 进程名lsof -p 进程号lsof filename # 查看某个文件被哪个进程打开** [root@localhost ~]# lsof -c rtpproxy COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rtpproxy 2073 root cwd DIR 253,0 4096 128 / rtpproxy 2073 root rtd DIR 253,0 4096 128 / rtpproxy 2073 root txt REG 253,0 933247 18295252 /usr/local/bin/rtpproxy rtpproxy 2073 root mem REG 253,0 2127336 33617010 /usr/lib64/libc-2....

2020-04-25 20:30:18 · 7 min · Eddie Wang

老年生活

最近感觉提前步入老年生活,晚上九点睡觉,早上六点醒来。醒来之后打盹一会,等着按灭六点十分的闹钟。 哎,又困了。😩😩😩😩😩😩

2020-04-23 21:18:22 · 1 min · Eddie Wang

简历之吃苦耐劳

最近需要招个前端开发,我更想让他向Nodejs方面发展。 简历看的眼花,不知道为什么有那么多人都在简历上写吃苦难耐,难道做前端开发真的需要吃苦耐劳吗? 我在NPM上没有找到能收邮件的包,找到了发邮件的包。 我想找个能收邮件的包,自动收邮件,自动分析和过滤一些不想看的简历。

2020-04-23 21:06:33 · 1 min · Eddie Wang

window轻量级抓包工具RawCap介绍

相比于wireshark, RawCap非常小,仅有48kb。 使用RawCap命令需要使用管理员权限打开CMD,然后进入到RawCap.exe的目录。例如F:\Tools 显示网卡列表 输入RawCap.exe –help, 可以显示命令的使用帮助、网卡列表还有使用例子。 F:\Tools>RawCap.exe --help NETRESEC RawCap version 0.2.0.0 Usage: RawCap.exe [OPTIONS] <interface> <pcap_target> <interface> can be an interface number or IP address <pcap_target> can be filename, stdout (-) or named pipe (starting with \\.\pipe\) OPTIONS: -f Flush data to file after each packet (no buffer) -c <count> Stop sniffing after receiving <count> packets -s <sec> Stop sniffing after <sec> seconds -m Disable automatic creation of RawCap firewall entry -q Quiet, don't print packet count to standard out INTERFACES: 0....

2020-04-09 16:58:20 · 1 min · Eddie Wang

大数据时代的平民新装

之前在百毒搜索了一下营养师考证,然后最近就经常收到骚扰电话,咨询我是否有意参加考试。 在没有留任何电话号码的情况下,我的手机号就被精准的定位到。可想而知个人隐私问题是多么严重。 以前只有皇帝一个人穿透明新装,现在每个人都穿着这件衣服。

2020-04-05 08:41:48 · 1 min · Eddie Wang

孩子血型一定和父母血型相同吗?

之前看过一个报道,父亲发现儿子的血型和自己以及妻子的血型都不一样,怀疑儿子不是自己亲生的,最后把自己妻儿弄死了。但是孩子的DNA检测显示是自己亲生的。 这是一个不懂血型相关知识的悲剧啊。 血型是由红细胞表面的两种抗原决定的。 A抗原 B抗原 血型 1 0 A 0 1 B 1 1 AB 0 0 O 下图的表格是父母血型与子女血型的可能性与比例。 父母血型 子女可能有血型及比例 子女不可能有血型 O、O O A、B、AB O、A O、A (1:3) B、AB O、B O、B (1:3) A、AB O、AB A、B (1:1) O、AB A、A O、A (1:15) B、AB A、B A、B、AB、O (3:3:9:1) — A、AB A、B、AB (4:1:3) O B、B O、B(1:15) A、AB B、AB A、B、AB(1:4:3) O AB、AB A、B、AB(1:1:2) O 虽说孩子的血型不一定和父母的血型相同。但是如果父母都是O型血,生出的孩子如果不是O型,那么不是亲生的可能性也是蛮大的。

2020-04-01 13:33:51 · 1 min · Eddie Wang

食物的酸碱性的误解

大多数人可能由下面的两种方式去判断食物的酸碱性 舌头👅。用嘴巴尝一下,酸的食物就是酸性的。 ph值。可以用ph试纸 以上两种判断食物酸碱性的方法都是错误的。 食物的酸碱性,取决于食物中含有矿物质的种类和含量。 碱性食物:含有钠、钾、钙、镁、铁 酸性食物:还有磷、氯、硫 从元素周期表中也可以看出来,酸碱性相同的物质基本都是比较靠近的。 含有钠钾钙镁铝的食物,进入人体之后,在人体的氧化作用下,最终代谢产物呈现碱性。 另外,大部分的水果,例如柠檬、橙子、苹果这种的,吃起来是酸的,而实际上他们是碱性食物。 食物分类表 项目 举例 强酸性食物 牛肉、猪肉、鸡肉、金枪鱼、牡蛎、比目鱼、奶酪、米、麦、面包、酒类、花生、核桃、糖、饼干、啤酒等 弱酸性食物 火腿、鸡蛋、龙虾、章鱼、鱿鱼、荞麦、奶油、豌豆、鳗鱼、河鱼、巧克力、葱、空心粉、炸豆腐等 强碱性食物 茶、白菜、柿子、黄瓜、胡萝卜、菠菜、卷心菜、生菜、芋头、海带、柑橘、无花果、西瓜、葡萄、板栗、咖啡、葡萄酒等 弱碱性食物 豆腐、豌豆、大豆、绿豆、竹笋、马铃薯、香菇、蘑菇、油菜、南瓜、芹菜、番薯、莲藕、洋葱、茄子、萝卜、牛奶、苹果、梨、香蕉、樱桃等

2020-04-01 13:04:30 · 1 min · Eddie Wang

代码增肥赋

大学,编程之师作业,曰:xxx功能,至少代码三千行。 室友呕心沥血,废寝忘食,东拼西凑。奈何凑到代码一千行。 友不释然,怏怏不乐。求助于我。 于告知曰:此事易尔!但需可乐两瓶、瓜子两包。 友悦之,曰:请稍等,片刻回。 友即回,代码亦成。 友黯然道:子之功力,无不及也。 于笑曰:无他,但手熟而。 多加注释多换行,一不留神三千行。 😂😂😂😂🤣🤣🤣🤣😅😅😅😅

2020-03-24 13:42:26 · 1 min · Eddie Wang

devicemap 驱动模式修改

2020-03-20 17:32:30 · 0 min · Eddie Wang

命令行日志查看神器:lnav

lnav, 不需要服务端,不需要设置,仍然功能强大到没有朋友。 速度与性能 lnav是一个可以运行在终端上的日志分析工具。功能非常强大,如果grep和tail等命令无法满足你的需求,或许你可以尝试一下lnav。 lnav的官方仓库是https://github.com/tstack/lnav,在mac上可以使用 brew install lnav 命令安装这个命令。 在我的4C8G的Macbook Pro上,打开一个2.8G的日志文件到渲染出现,需要花费约40s,平均每秒载入超过70MB。载入日志和渲染时,使用了接近100%的CPU。渲染完毕,使用1.2G的内存空间。 总之呢,这个工具载入日志的速度很快。但是最好不要再生产环境上使用这个命令载入过大的日志文件,否则可能造成系统资源消耗太大的问题。 在载入2.8G的日志文件后(3200多万行),过滤时显得非常卡顿,但是查看日志并不卡顿。 在lnav的搜索关键字,下次打开其他日志时,lnav会自动搜索这个关键词。这是它的Session记录功能,可以使用Ctrl+R重置Session。 lnav的特点 语法高亮 各种过滤条件 多关键词过滤 各种快捷跳转 自带统计和可视化功能,比如使用条形图展示单位时间内的报错和日志数量 自动日志格式检查。支持很多种日志格式 能够按照时间去过滤日志 TAB自动补全 实时操作 支持SQL语法查日志 支持文件导出成其他格式 支持直接打开tar.gz等压缩后的日志文件 支持很多快捷键 x下面是按天的日志统计,灰色是普通日志,黄色是告警日志,红色的错误日志。三种颜色叠加的长度就是总日志。时间跨度单位也是可以调节的。最大跨度是一天,最短跨度是1秒。 仍然是日志格式 自动日志格式检测 系统日志 Web服务器访问日志 报错日志 等等 过滤 可以设置多个过滤规则 时间线过滤 精确时间的日志 上个小时,下个小时 上一分钟,下一分钟 能够按照时间去追踪日志 按照时间周期统计 统计每秒出现的错误,告警和总日志的量 语法高亮 Tab键自动补全 参考 https://lnav.readthedocs.io/en/latest/ 如果你更喜欢GUI工具,那也可以试试https://github.com/nickbnf/glogg 后记 最近因为工作需要,每天都会去排查很多的日志文件。我也曾想过装ELK之类的工具,但是我收到是文件。日志文件要转存到ELK中也要花功夫。另外ELK也是非常耗费资源的。ELK部署到一半我就果断放弃了。 与其南辕北辙,不如回归本质。找些命令行的小工具直接分析日志文件。

2020-03-13 21:48:40 · 1 min · Eddie Wang