Unix/Linux命令行小技巧(19)- 显示系统的内存使用

使用“ps -A --sort -rss -o pid,comm,pmem,rss | less”命令可以显示系统的内存使用。
举个例子:

[root@home]$ ps -A --sort -rss -o pid,comm,pmem,rss | less
 PID COMMANDMEM  RSS
1386 abrtd           0.1   4824
1223 hald            0.0   3888
1423 login           0.0   3420
......

可以看到打印了每个进程占用的内存百分比,以及RSS的大小。
技巧出处:https://twitter.com/nixcraft/status/288158831551332353

Unix/Linux命令行小技巧(18)- ls命令按文件size大小列举文件

使用“ls -l -S *.d”命令按文件size从大到小列举文件,而“ls -l -S *.d | sort -k 5 -n”按文件size从小到大列举文件:
举个例子:

Nans-MacBook-Pro:Proc nanxiao$ ls -l -S *.d
-rwxr-xr-x@ 1 nanxiao  staff  4988 Dec  7 11:51 crash.d
-rwxr-xr-x@ 1 nanxiao  staff  3067 Dec  7 11:51 shortlived.d
-rwxr-xr-x@ 1 nanxiao  staff  2491 Dec  7 11:51 rwbytype.d
-rwxr-xr-x@ 1 nanxiao  staff  2452 Dec  7 11:51 pathopens.d
-rwxr-xr-x@ 1 nanxiao  staff  2263 Dec  7 11:51 stacksize.d
-rwxr-xr-x@ 1 nanxiao  staff  1684 Dec  7 11:51 kill.d
-rwxr-xr-x@ 1 nanxiao  staff  1656 Dec  7 11:51 sigdist.d
-rwxr-xr-x@ 1 nanxiao  staff  1651 Dec  7 11:51 threaded.d
-rwxr-xr-x@ 1 nanxiao  staff  1583 Dec  7 11:51 mmapfiles.d
-rwxr-xr-x@ 1 nanxiao  staff  1502 Dec  7 11:51 rwbbypid.d
-rwxr-xr-x@ 1 nanxiao  staff  1494 Dec  7 11:51 rwbypid.d
-rwxr-xr-x@ 1 nanxiao  staff  1476 Dec  7 11:51 sysbypid.d
-rwxr-xr-x@ 1 nanxiao  staff  1331 Dec  7 11:51 pidpersec.d
-rwxr-xr-x@ 1 nanxiao  staff  1331 Dec  7 11:51 syscallbypid.d
-rwxr-xr-x@ 1 nanxiao  staff   283 Dec  7 11:51 filebyproc.d
-rwxr-xr-x@ 1 nanxiao  staff   281 Dec  7 11:51 creatbyproc.d
-rwxr-xr-x@ 1 nanxiao  staff   268 Dec  7 11:51 writedist.d
-rwxr-xr-x@ 1 nanxiao  staff   267 Dec  7 11:51 newproc.d
-rwxr-xr-x@ 1 nanxiao  staff   267 Dec  7 11:51 syscallbyproc.d
-rwxr-xr-x@ 1 nanxiao  staff   264 Dec  7 11:51 readdist.d
-rwxr-xr-x@ 1 nanxiao  staff   259 Dec  7 11:51 writebytes.d
-rwxr-xr-x@ 1 nanxiao  staff   255 Dec  7 11:51 readbytes.d

Nans-MacBook-Pro:Proc nanxiao$ ls -l -S *.d | sort -k 5 -n
-rwxr-xr-x@ 1 nanxiao  staff   255 Dec  7 11:51 readbytes.d
-rwxr-xr-x@ 1 nanxiao  staff   259 Dec  7 11:51 writebytes.d
-rwxr-xr-x@ 1 nanxiao  staff   264 Dec  7 11:51 readdist.d
-rwxr-xr-x@ 1 nanxiao  staff   267 Dec  7 11:51 newproc.d
-rwxr-xr-x@ 1 nanxiao  staff   267 Dec  7 11:51 syscallbyproc.d
-rwxr-xr-x@ 1 nanxiao  staff   268 Dec  7 11:51 writedist.d
-rwxr-xr-x@ 1 nanxiao  staff   281 Dec  7 11:51 creatbyproc.d
-rwxr-xr-x@ 1 nanxiao  staff   283 Dec  7 11:51 filebyproc.d
-rwxr-xr-x@ 1 nanxiao  staff  1331 Dec  7 11:51 pidpersec.d
-rwxr-xr-x@ 1 nanxiao  staff  1331 Dec  7 11:51 syscallbypid.d
-rwxr-xr-x@ 1 nanxiao  staff  1476 Dec  7 11:51 sysbypid.d
-rwxr-xr-x@ 1 nanxiao  staff  1494 Dec  7 11:51 rwbypid.d
-rwxr-xr-x@ 1 nanxiao  staff  1502 Dec  7 11:51 rwbbypid.d
-rwxr-xr-x@ 1 nanxiao  staff  1583 Dec  7 11:51 mmapfiles.d
-rwxr-xr-x@ 1 nanxiao  staff  1651 Dec  7 11:51 threaded.d
-rwxr-xr-x@ 1 nanxiao  staff  1656 Dec  7 11:51 sigdist.d
-rwxr-xr-x@ 1 nanxiao  staff  1684 Dec  7 11:51 kill.d
-rwxr-xr-x@ 1 nanxiao  staff  2263 Dec  7 11:51 stacksize.d
-rwxr-xr-x@ 1 nanxiao  staff  2452 Dec  7 11:51 pathopens.d
-rwxr-xr-x@ 1 nanxiao  staff  2491 Dec  7 11:51 rwbytype.d
-rwxr-xr-x@ 1 nanxiao  staff  3067 Dec  7 11:51 shortlived.d
-rwxr-xr-x@ 1 nanxiao  staff  4988 Dec  7 11:51 crash.d

技巧出处:https://twitter.com/nixcraft/status/290535134485176321

离开A公司——新的开始

昨天是我在A公司的最后一天。一转眼,在这里工作了将近45个月,是我迄今为止效力时间最长的公司。是时候记录一些东西,做为一个回忆吧。

坦率地讲,在A公司这么多年,收入方面并没有增长很多。和外面互联网公司比起来,我的薪水相差不少。但是,我在这里还是学到了很多东西的。如果我当初还是留在M公司,而不是来到A公司,我相信薪水会比现在要好。但是我可能不会开阔眼界,学到现在所知道的知识。总结起来,这4年多的收获大致如下:
(a)通信方面的知识。因为A公司是通信公司,而自己做的方向也和核心网密切相关。所以相比于之前对电信知识一窍不通,这几年我还是积累了很多通信方面的经验的。此外,对网络协议的知识和工具使用能力也大有长进。
(b)Unix/Linux编程能力。这四年基本都在和SolarisLinux打交道。了解和使用了DTracemdbsnoop等工具,也懂得了很多Unix系统底层的知识和原理,受益匪浅。
(c)参加开源社区。有了githubstackoverflow账号,开始订阅一些开源项目的邮件和好的博客。遇到问题,也可以熟练地用英语发帖子求助。为很多开源项目贡献了自己的一点绵薄之力。去年还和hellogcc的伙伴们在github上合作写了第一本开源的书《100个gdb小技巧》,收获了300多颗星。
(d)有了自己的博客和网站。搭建了专门介绍DTrace的网站:http://chinadtrace.org/。建立了属于自己的博客:https://nanxiao.me/。开始写一些技术和生活方面的文章,希望能够帮助更多的人。

下面谈一下对A公司的一点想法:
(a)个人感觉公司的一些做法太过死板,可能并不是很适合现在的社会了。打个比方,说是有5天病假,但是即使请的病假不超过1天,也还要医院开病假条。试想我感冒很难受,只想在家躺在床上休息一天就好了,还要跑到医院去排队,挂号,开病假条?大家又不是小孩,谁会撒这个谎呢?
(b)公司并没有很好的激励机制,和以前国企的“大锅饭”类似。说是有“Performance Review”,但是实际大家涨工资幅度基本一样,都是一样的百分比。这样,一开始工资拿的高的人,就始终拿的高,而且幅度还越来越高,因为他的基数越来越高。这样就会引起大家的不平衡。我相信很多人刚进公司时,是想好好大干一场的。但是后来发现,你干的活多,和其他“南郭先生”得到的差不多时,慢慢地也就随波逐流了。此外,很多中高层领导上班时间炒股,逛淘宝,处理私事,也起到了不好的带头作用,正所谓“上梁不正下梁歪”。
(c)没能及时转型。其实早在20102011年的时候,通信行业已经出现疲软的态势了。但是领导们似乎并没有考虑转型,或者说转型得并不成功。现在想想,我们这个大组也有20来号人,其实一直是在维护老产品,做一些边边角角的修改,而这些改动并不能给公司的利润带来大幅度的提升。很多同事只是做一些调研和demo,最后无一例外不是不了了之,而时间却再也回不来了。如果早动手,大家齐心协力去做一些新的项目,我相信会做出一点新东西的。

好了,就到这里吧。祝A公司越来越好,我也开始新的旅程了!

Unix/Linux命令行小技巧(17)- 打印进程打开的文件数目

使用“for p in $(pidof process); do echo "PID # $p has $(lsof -n -a -p $p|wc -l) fd opened."; done”命令打印process进程打开的文件数目。
举个例子:

[root@localhost /]# for p in $(pidof java); do echo "PID # $p has $(lsof -n -a -p $p|wc -l) fd opened."; done
PID # 37747 has 139 fd opened.
PID # 30279 has 117 fd opened.
PID # 28033 has 204 fd opened.
PID # 10501 has 211 fd opened.
PID # 4998 has 442 fd opened.

显示了所有java进程打开的文件数目。
技巧出处:https://twitter.com/nixcraft/status/281010856706334720

 

Unix/Linux命令行小技巧(16)- ls命令显示以大写字母作为文件名开头的文件

使用“ls /path/to/[[:upper:]]*”命令可以显示以大写字母作为文件名开头的文件。
举个例子:

[root@localhost /]# ls /usr/bin/[[:upper:]]*
/usr/bin/AtoB            /usr/bin/GenIssuerAltNameExt   /usr/bin/PKCS12Export
/usr/bin/AuditVerify     /usr/bin/GenSubjectAltNameExt  /usr/bin/POST
/usr/bin/BtoA            /usr/bin/GET                   /usr/bin/PrettyPrintCert
/usr/bin/CMCEnroll       /usr/bin/HEAD                  /usr/bin/PrettyPrintCrl
/usr/bin/CMCRequest      /usr/bin/HtFileType            /usr/bin/RSA_SecurID_getpasswd
/usr/bin/CMCResponse     /usr/bin/HttpClient            /usr/bin/RunSimTest
/usr/bin/CMCRevoke       /usr/bin/IBMgtSim              /usr/bin/TokenInfo
/usr/bin/CRMFPopClient   /usr/bin/Mail                  /usr/bin/X
/usr/bin/ExtJoiner       /usr/bin/OCSPClient            /usr/bin/Xorg
/usr/bin/GenExtKeyUsage  /usr/bin/PKCS10Client

技巧出处:https://twitter.com/nixcraft/status/275006059209424896

 

Unix/Linux命令行小技巧(15)- 显示端口的状态及原因

使用“nmap --reason ip-address”命令可以显示当前IP地址上端口的状态及原因。
举个例子:

[root@localhost nan]# nmap --reason 192.168.23.150

Starting Nmap 6.46 ( http://nmap.org ) at 2015-01-13 15:17 CST
Nmap scan report for localhost.localdomain (192.168.23.150)
Host is up, received localhost-response (0.0000030s latency).
Not shown: 995 closed ports
Reason: 995 resets
PORT     STATE SERVICE REASON
22/tcp   open  ssh     syn-ack
23/tcp   open  telnet  syn-ack
111/tcp  open  rpcbind syn-ack
3306/tcp open  mysql   syn-ack
6699/tcp open  napster syn-ack

Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

技巧出处:https://twitter.com/nixcraft/status/272866836545163264

 

Unix/Linux命令行小技巧(14)- 显示指定网络协议的所有连接

使用“ss -o state established '( dport = :protocol or sport = :protocol )'”命令可以显示所有网络协议为protocol的连接。
举个例子:

[root@localhost nan]# ss -o state established '( dport = :ssh or sport = :ssh )'
Recv-Q Send-Q                        Local Address:Port                            Peer Address:Port
0      0                            192.168.23.150:ssh                            10.228.155.38:49631    timer:(keepalive,87min,0)

把协议换成http

[root@localhost nan]# ss -o state established '( dport = :http or sport = :http )'
Recv-Q Send-Q                        Local Address:Port                            Peer Address:Port

技巧出处:https://twitter.com/nixcraft/status/272857310689366016

 

Unix/Linux命令行小技巧(13)- 计算每个用户打开的文件数

使用“lsof -u user | wc -l”命令可以显示user用户打开的文件数。
举个例子:

[root@localhost nan]# lsof -u root | wc -l
5293

显示root用户打开了5293个文件。

技巧出处:https://twitter.com/nixcraft/status/271973489303502848

 

Unix/Linux命令行小技巧(12)- 根据文件修改时间查找文件

使用“find folder -type f -ctime -n -print”命令可以显示folder文件夹下最近n天修改过的文件。
举个例子:

[root@localhost nan]# find /etc -type f -ctime -5 -print
/etc/adjtime
/etc/prelink.cache

也可以显示详细信息:

[root@localhost nan]# find /etc -type f -ctime -5 -exec ls -l {} \;
-rw-r--r--. 1 root root 45 Jan 13 14:09 /etc/adjtime
-rw-r--r-- 1 root root 646080 Jan 10 03:27 /etc/prelink.cache

技巧出处:https://twitter.com/nixcraft/status/269719613720391682