
s2: Linux杂项
涛歌依旧
毕业后就职于华为和腾讯
展开
-
网络socket的状态要怎么统计?
最近,要分析socket为什么被占用那么多,需要知道socket的状态,写了一个语句,搞定:命令行的基本功底,还是没有丢下。怕忘了,记录一下。原创 2022-06-26 22:31:08 · 439 阅读 · 0 评论 -
性能优化之http耗时细化分析
直接看命令:结果:可以看到,每部分的耗时都出来了,这样就知道瓶颈在哪里了。原创 2022-06-26 22:23:08 · 902 阅读 · 0 评论 -
腾讯总考epoll, 很烦
腾讯面试每次都考epoll, 说真的,很烦。 很多面试官自己的知识不进化,天天只记得个epoll, 还说什么呢?其实,这就是八股文题目,没啥意思。原创 2022-06-26 22:20:16 · 665 阅读 · 1 评论 -
面试别问linux lsof命令
最近,一朋友吐槽,他去面试,被问lsof命令,然后卡住了,确实不应该:但凡熟悉linux调试的人,应该不会不知道这个命令吧。原创 2022-06-26 22:17:05 · 1370 阅读 · 3 评论 -
undefined reference 之坑
有读者在私信问这个怎么解决:undefined reference 之坑其实,我之前写过,遇到的朋友,可以自己去查阅一下,很简单,希望能解决大家的问题:https://blog.youkuaiyun.com/stpeace/article/details/45287211原创 2022-06-19 23:54:48 · 468 阅读 · 1 评论 -
程序员应该怎么查日期
程序员应该怎么查日期呢?我看到有的程序员喜欢用百度来查日期,哈哈,难道不知道有人爱笔试这玩意儿吗?直接用cal命令吧:比如,直接cal -3: 下次,真的别百度了。用命令行多快捷。原创 2022-06-19 23:49:10 · 1154 阅读 · 2 评论 -
linux中的vmstat和iostat
最近查一个性能问题,需要用到vmstat和iostat, 所以简单介绍下:在笔试面试中,也是重点,务必掌握。不要一问三不知。原创 2022-06-19 23:44:55 · 392 阅读 · 0 评论 -
有趣的linux LS命令
我们都知道linux的ls命令的作用,上次也说过了。那么,当你的输入法大小写没有切换正确时,你可能敲过LS命令,那会想怎样呢?且看:ubuntu@VM-0-15-ubuntu:~$ man LSLS(6) Games Manual LS(6)NAME LS - display animations aimed to correct原创 2021-09-05 21:29:13 · 1375 阅读 · 5 评论 -
linux ls命令的搞笑回忆
由于我是硬件出身,所以以前对linux什么的也不太了解。后来去了第二家公司实习,看到别人敲命令ls, 觉得好新鲜。打开一个黑黑的窗口,敲入ls命令,显示好多东西,从此,我学会了ls命令。挺搞笑,权当回忆。来看看linux ls命令的用法吧:ubuntu@VM-0-15-ubuntu:~$ man lsLS(1) User Commands原创 2021-08-28 20:59:44 · 1659 阅读 · 6 评论 -
进程、线程、协程对CPU的消耗
大家好,我是涛哥,又是周末,祝愿大家开心。今天,不分享复杂高深的东西了,仅来聊聊进程、线程、协程对CPU的消耗问题,并用实际代码来验证,加深对这些概念的理解。另外,值得一提的是,进程、线程、协程几乎是笔试面试必考的内容。而且,在实际开发中,也有必要深入理解这些基础概念。一. 单核CPU的消耗C语言死循环程序如下:int main(){ while(1); return 0;}开启单进程,可以看到,大约消耗100%的CPU核:开启2个进程,可以看到,.原创 2021-08-14 15:44:51 · 4589 阅读 · 5 评论 -
QPS和并发数,究竟是何种关系?
大家好,我是涛哥。又是周末,愿大家开心。今天不写复杂文章,来聊点简单有趣的,探讨下QPS(Query Per Second)和并发数的关系。就我的个人经验而言,很多人在工作中对这两个概念一知半解,也有很多人在面试时回答得模棱两可,不太应该哦。多年前,在面试阿里巴巴时,遇到了一个开放性问题:假设超市每分钟有10个人走出来,请估算超市里面有多少人?是不是感觉手足无措呢?嗯,可能如此。其实,这个问题没有标准答案,关键还是考查思路。我们先看一个有趣的定律,即Little's La原创 2021-08-14 15:42:03 · 5621 阅读 · 4 评论 -
free的含义究竟是什么?
今天要聊的是linux的free命令,它输出的是内存相关的信息。该命令看似简单,但它所涉及到的一些内存信息经常被误解,所以有必要澄清。在开发和运维中,我们不仅需要关注CPU资源的消耗情况,还需要关注内存资源的消耗情况,这就必须涉及到free命令,本文将进行实战讲解。我的云服务器内存简介我买了一台老东家的云服务器,每年三四百块钱,基本参数如下:可以看到,内存1G,即1024M. 当我用free命令查看时,结果如下:ubuntu@VM-0-15-ubuntu:~$ free -wh原创 2021-08-14 15:38:18 · 3198 阅读 · 0 评论 -
CPU使用率到100%了?
最近,一位同事急匆匆跑过来跟我说:糟糕了,服务器CPU的使用率达100%了。我心想不可能啊,CPU有那么多核,怎会跑满?于是看了一眼,结果虚惊一场。这位同事看到的100%,并非指整个CPU使用率到了100%,而是指CPU某些核的使用率到了100%.趁此机会,我来聊聊与CPU相关的概念,对很多软件开发和运维人员来说,这些概念是必须要掌握的: CPU主频 多个CPU 多核CPU 逻辑核(超线程) 大小端 以一款CPU为例,看下具体参数:.原创 2021-08-14 15:35:18 · 3434 阅读 · 1 评论 -
size_t和unsigned int傻傻不区分?
一. 前面的话上次洪哥跟我说,希望多写一些bug调试和踩坑经验的文章。没问题,反正我是挺会写bug的。在C++相关的开发中,有的朋友对一些基本的概念很模糊,用的时候也不注意,然后就呵呵哒了。我自己也偶尔有这样的问题,之前用C++写了一个程序,在测试环境自测无问题,上线后就跪了。二. bug程序为了便于叙述,我对原程序进行简化,如下:#include <iostream>using namespace std;string getCutRemark(const st原创 2021-08-14 12:31:54 · 1983 阅读 · 6 评论 -
六招制敌,搞定core dump问题
缘来缘起core的最原始含义是磁芯,是一种存储设备,dump的意思是倒出,那么core dump的含义就是:当进程发生异常时,会把当时的内存信息倾倒出来,形成core文件。每个做linux C++开发的人,必然会遇到过core dump问题。在C++相关的面试中,core dump的调试,几乎是一个必考的考点,旨在检验应聘者的实战调试经验。我知道的一个真实案例是:面试官让应聘者现场写出一个core dump程序,结果应聘者很懵圈,不知道怎么写。这说明,应聘者没有相关的调试经历,何谈通过面试?原创 2021-08-14 12:27:06 · 3549 阅读 · 0 评论 -
妙用xxd命令,节省0.5小时
一. 缘来缘起最近,同事遇到一个非常奇怪的问题,花了0.5小时,还没有头绪,而且,越想越奇怪。我刚好路过,感兴趣地问了一下,然后直接用一个xxd命令搞定问题,于是,皆大欢喜。二. 奇怪问题原问题相对复杂,为了便于叙述,我来简化一下问题。a.txt和b.txt文件内容如下:咦?这两个文件一模一样啊。但是,问题是,相同程序在读取它们时,出现了不同的结果。读取a.txt第一行,发现长度为3:#include <fstream>#include &l原创 2021-08-14 12:09:52 · 1875 阅读 · 0 评论 -
用valgrind定位内存泄漏
如果准备得不成功,那就要准备失败了。在笔试面试中,遇到内存泄漏的定位问题,如果连valgrind都说不出来,那就很容易歇菜了。总之,无论是为了找工作,还是为了实际工作中的问题,都很有必要熟练使用valgrind,那么,我们一起来看看这玩意儿是怎么回事。原创 2021-02-28 18:44:32 · 2595 阅读 · 4 评论 -
妙用linux strings命令
开发实战经验,还是很重要的。一个小小的linux命令strings,能帮人省掉很多麻烦,加强心安。在后续的文章中,会多分享一些开发实战方面的经验、技巧等干货,希望对初入职场的人有帮助。职场不易,都有压力,每位大侠都曾经是菜鸟,只要不断学习、积累并总结,就会有进步,祝好。原创 2021-02-28 18:42:51 · 3847 阅读 · 0 评论 -
mac securecrt记住密码的方法
刚安装securecrt时,每次都需要输入密码,挺烦的。 如下方式可以避免重复输入密码: 菜单preferences--general,找到mac options。然后去掉Use KeyChain选项,这样每次连接服务器后就会自动保存密码了。不同的版本可能这个选项的位置不同,只要记住勾选掉Use keyChain选项就可以了。...原创 2020-07-05 10:42:39 · 3654 阅读 · 1 评论 -
mac下的/etc/bash_profile不执行的问题
最近入手一台新mac, 在设置环境时,发现~/.bashrc不执行,然后发现/etc/profile也不执行, 真是大写的尴尬。 原因: zsh和bash有别, zsh不执行上述脚本,需要改为bash后,才执行。 至于zsh和bash之间的相互切换,网上一搜一大推,故不赘述。...原创 2020-07-05 10:41:29 · 2287 阅读 · 2 评论 -
dial tcp: lookup xxx.com on 8.8.8.8:53: no such host
最近在执行go mod tidy更新依赖库时遇到如下问题: dial tcp: lookup xxx.com on 8.8.8.8:53: no such host 但我的mac明明没有任何地方配置8.8.8.8啊, 而且我抓包看了,mac确实没有给8.8.8.8发任何请求。 继续仔细分析,看到这个提示: reading https://sum.golang.org/lookup/xxx.com 就是这里了,原来是这里在向8.8.8...原创 2020-07-05 10:42:17 · 57459 阅读 · 10 评论 -
从最近三个实际问题来看tcpdump抓包
在实际开发中,我们经常会遇到一些疑难问题。以网络的客户端和服务端为例,经常出现客户端和服务端的现象矛盾,导致僵持不下,怎么确认和处理这类问题呢? 之前碰到过很多类似问题,最后直接用tcpdump抓包解决。原创 2020-05-16 19:46:53 · 3267 阅读 · 3 评论 -
mac上的sed: invalid command code .
sed用得很熟,但在mac上执行出错,奇怪:~/hehe$ sed -i "s/taojie/taoge/g" `grep -rl taojie .` sed: 1: "./test.txt": invalid command code .~/hehe$ ~/hehe$ ~/hehe$ sed -i "" "s/taojie/taoge/g" `grep -rl taojie .`~/hehe$ ~/hehe$ ~/hehe$ cat test.txt ta...原创 2020-06-06 20:42:08 · 3796 阅读 · 1 评论 -
mac上更新go版本
go.1.12版本出现编译错误:go: finding github.com/codahale/hdrhistogram latestbuild command-line-arguments: cannot load crypto/ed25519: cannot find module providing package crypto/ed25519 原因是:go...原创 2020-05-08 22:22:54 · 7139 阅读 · 3 评论 -
curl ip.sb查询公网ip
查询公网ip, 记录一下:ubuntu@VM-0-15-ubuntu:~$ curl ip.sb115.159.x.yubuntu@VM-0-15-ubuntu:~$ 不多说。原创 2020-05-08 22:22:29 · 5982 阅读 · 1 评论 -
从cat a.txt | grep -E "[5-9][0-9]{2}ms"看linux小命令的大用途
最近查一个耗时的问题,需要在log中过滤出耗时在500ms-999ms之间的log, 假设文件a.txt的内容如下:ubuntu@VM-0-15-ubuntu:~$ cat a.txtxxx 1ms yyyagag aga 2ms zzz300msagagagxxx agag agaga 600ms 直接用grep加正则表达式搞起:...原创 2020-04-11 17:07:24 · 3041 阅读 · 2 评论 -
tr命令去掉换行符
tr命令很有用,来记录一下:ubuntu@VM-0-15-ubuntu:~$ cat a.txtabcdefhahaheheubuntu@VM-0-15-ubuntu:~$ ubuntu@VM-0-15-ubuntu:~$ ubuntu@VM-0-15-ubuntu:~$ cat a.txt | tr "\n" " "abc def haha hehe ubun...原创 2020-04-11 16:32:58 · 5467 阅读 · 7 评论 -
交叉编译后strip遇到的问题:can‘t process non-object and non-archive file
在mac上利用交叉编译,可生成在ubuntu上运行的文件。 然后,在mac上想strip时,发现失败:/Library/Developer/CommandLineTools/usr/bin/strip: can't process non-object and non-archive file 想了一下,大概知道原因了:在mac上的strip命令,不认知交叉编译后的文...原创 2020-03-21 18:15:53 · 2965 阅读 · 2 评论 -
如何查看tcp连接的建立时间?
在进行服务性能分析时,有时需要确认连接池、长连接、短连接相关的问题,需要查看tcp连接的建立时间? 怎么看? 1. 以如下tcp链接为例:ubuntu@VM-0-15-ubuntu:~$ netstat -nap | grep -i esta(Not all processes could be identified, non-owned process info...原创 2020-03-06 22:29:16 · 14876 阅读 · 10 评论 -
tail -f a.txt | grep x | y 无法输出的问题------用行缓冲来搞定
最近同事反馈, tail -f + grep + awk时没有输出预期的内容, 我觉得奇怪, 试了一下, 果然没有输出。 第一感觉是:缓存, 缓冲, 又他娘是你。 因为我之前碰到过类似的问题《又是缓存惹的火------从tcpdump -iany port xxx -Xnlps0 | grep yyy | grep zzz 说起》:https://b...原创 2019-11-01 20:05:29 · 3581 阅读 · 3 评论 -
mac上的交叉编译:CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ./main.go
开发环境是mac, 生产环境是ubuntu, 显然mac上编译出来的二进制,没法在ubuntu上运行。 于是乎,在mac上需要安装虚拟机, 用virtualbox + vagrant搞起,据我所知, 很多刚入职的同学,往往不能在一周的时间内(当然,这一周肯定有其他杂事,并不是说需要用一周来装虚拟机),把这个环境搞定。 真是搞笑啊。 其实, 稍等了解一点交...原创 2019-10-27 22:14:10 · 12726 阅读 · 2 评论 -
如何获取linux shell中ls进程的进程号?---有趣的问题!
我们知道, 在linux中, 开启一个shell, 实际上就是开启一个shell进程, 如果在shell中运行一个ls命令, 实际上就是让shell进程拉起了一个ls进程, 且shell进程是父进程, ls进程是子进程。 某次, 我胡思乱想, 既然ls执行的时候对应一个进程, 那么怎么获取ls进程的进程号码呢? 执行一下ls, ls很快执行完毕了, 进程消失了啊。 于是, 我想到原创 2015-04-25 21:13:14 · 10377 阅读 · 3 评论 -
如何获取main函数(Windows/Linux环境下)的返回值?
不知道为什么, 我突然想到了这个古怪的问题。 下面, 我们来实战一下: test0.exe对应的程序为:int main(){ return 0;} test1.exe对应的程序为:int main(){ return 1;} 为了简便起见, 我把test0.exe, test1.exe和cmd.exe拷贝到同一文件夹下, 双击c原创 2015-03-10 22:56:07 · 10989 阅读 · 0 评论 -
Linux下/proc目录简介
由于无法找到最原始的地址, 所以仅仅给出一个间接地址:http://blog.youkuaiyun.com/zdwzzu2006/article/details/7747977, 向原创作者表示致意. (我会加上红色的注释部分) 1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制(也就是说/proc转载 2015-04-29 21:27:00 · 7809 阅读 · 1 评论 -
玩转并理解linux中的文件/目录的rwx权限
linux是一个相对安全的系统, 其中的权限更是无处不在。 在本文中, 我们来谈谈linux中的文件/目录的rwx权限。 为了简便起见, 我们仅仅以文件owner的rwx为例。 一. 文件的rwx权限分别是什么意思? 1. r权限:可读权限, 验证如下:[taoge@localhostlearn_c]$ls-ltotal0[t原创 2015-05-06 22:16:05 · 13324 阅读 · 4 评论 -
彻底解读剪不断理还乱的\r\n和\n, 以Windows和Linux为例
多数程序员都会在不经意间遇到下面这两个问题: 1. linux上用vim写的文件test.txt拷贝到windows上, 结果所有的内容都显示在一行中。(当然, 如果你Windows上的编辑显示器够智能, 那就是另外一回事了) 2. Windows上建立的test.txt拷贝到linux上, 结果linux程序运行异常。(当然, 如果你的linux程序足够健壮原创 2015-05-16 13:00:57 · 33088 阅读 · 11 评论 -
Linux文件名中rc是什么意思?------Run Command
转载地址:http://blog.sina.com.cn/s/blog_716844910100qs7m.html 在Linux中,最为常用的缩略语也许是“rc”,它是“runcomm”的缩写――即名词“run command”(运行命令)的简写。rc是任何脚本类文件的后缀,这些脚本通常在程序的启动阶段被调用,通常是Linux系统启动时。如/etc/rc(连接到/etc转载 2015-05-07 22:20:41 · 10843 阅读 · 1 评论 -
linux中的nm命令简介
一般来说, 搞linux开发的人, 才会用到nm命令, 非开发的人, 应该用不到。 虽然nm很简单, 但是还是有必要写几句, 聊表心意。 nm不是ni ma的缩写, 当然, 也不是ni mei的缩写, 而是names的缩写, nm命令主要是用来列出某些文件中的符号(说白了就是一些函数和全局变量等)。 下面, 我们一起来看看。 test.h为:void原创 2015-07-27 21:45:14 · 108510 阅读 · 13 评论 -
sed基本用法简介
sed是stream editor, 也就是流编辑器, 实际上就是linux中的一个命令, 作用很强大。 搞linux开发的人, 不能不熟悉该命令, 否则, 何以立足于江湖呢? 在本文中, 我们来一起玩玩sed, 简要介绍其用法。 因为sed很强大, 所以难以一次介绍所有的内容。 以后遇到新的东东, 再往本博文中添加。 现在, 能学一点就是一点。 还是老规矩, 在理解的基础上, 大量练习和实践。以实践操作为荣, 以只看不练为耻。原创 2015-07-07 00:02:38 · 11045 阅读 · 9 评论 -
linux中的file命令简介
我们先来看看三个文件, test.h文件:void print(); test.c文件:#include #include "test.h"void print(){ printf("rainy days\n");} main.c文件:#include "test.h"int main(){ print(); retu原创 2015-07-26 20:22:07 · 12696 阅读 · 10 评论