这些命令可能你没怎么用过,但记住他们,需要的时候可以帮大忙!
pgrep
pgrep名字前有个p,我们可以猜到这和进程相关,又是grep,当然这是进程相关的grep命令。不过,这个命令主要是用来列举进程ID的
想要找到 SSH 服务器的 PID
> pgrep ssh1529284392844228719
pgrep会在每一行打印一个匹配的进程。-d选项允许你指定一个分隔符
> pgrep ssh -d " "1529 28439 28442 28719 28810 28813
-l选项告诉pgrep显示名称和 ID:
> pgrep -l ssh1529 sshd28439 sshd28442 sshd28719 sshd
pstree
这个命令可以以树形的方式列出进程
> systemd─┬─NetworkManager───2*[{NetworkManager}] ├─VGAuthService ├─abrt-watch-log ├─abrtd ├─agetty ├─atd ├─auditd───{auditd} ├─crond ├─dbus-daemon───{dbus-daemon} ├─firewalld───{firewalld} ├─gssproxy───5*[{gssproxy}] ├─irqbalance ├─java───28*[{java}] ├─lsmd ├─lvmetad ├─master─┬─pickup │ └─qmgr ├─mcelog ├─nginx───nginx ├─ntpd ├─polkitd───6*[{polkitd}] ├─redis-server───4*[{redis-server}] ├─rngd ├─rpcbind ├─rsyslogd───2*[{rsyslogd}] ├─smartd ├─sshd─┬─sshd───sshd───sftp-server │ └─sshd─┬─bash───pstree │ └─sftp-server ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned───4*[{tuned}] └─vmtoolsd───2*[{vmtoolsd}]
bc
这个命令主要是做一个精度比较高的数学运算的。比如开平方根等。下面是一个我们利用bc命令写的一个脚本(文件名:sqrt)
#!/bin/bash
if [ $# -ne 1 ]then echo 'Usage: sqrt number' exit 1else echo -e "sqrt($1)nquitn" | bc -q -ifi
> ./sqrt.sh 123.00sqrt(123.00)11.09quit
split
如果你有一个很大的文件,你想把其分割成一些小的文件,那么这个命令就是干这件事的了
> split -b 100m mysql.tar> ls -lh-rw-r--r--. 1 root root 517M Jun 21 22:35 mysql.tar-rw-r--r--. 1 root root 100M Jun 21 22:35 xaa-rw-r--r--. 1 root root 100M Jun 21 22:35 xab-rw-r--r--. 1 root root 100M Jun 21 22:35 xac-rw-r--r--. 1 root root 100M Jun 21 22:35 xad-rw-r--r--. 1 root root 100M Jun 21 22:35 xae-rw-r--r--. 1 root root 17M Jun 21 22:35 xaf
文件合并
> cat xa* > mysql.tar
nl
nl命令其它和cat命令很像,只不过它会打上行号
> nl rumenz.sh 1 123 2 345 3 rumenz.com 4 111 5 222
ldd
这个命令可以知道你的一个可执行文件所使用了动态链接库
> ldd /usr/bin/ls linux-vdso.so.1 => (0x00007ffdb51ba000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f4518ead000) libcap.so.2 => /lib64/libcap.so.2 (0x00007f4518ca8000) libacl.so.1 => /lib64/libacl.so.1 (0x00007f4518a9f000) libc.so.6 => /lib64/libc.so.6 (0x00007f45186d1000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f451846f000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f451826b000) /lib64/ld-linux-x86-64.so.2 (0x00007f45190d4000) libattr.so.1 => /lib64/libattr.so.1 (0x00007f4518066000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4517e4a000)
col
这个命令可以让你把man文件转成纯文本文件。如下示例:
> PAGER=cat> man ls | col -b > ls.txt
lsof
可以列出打开了的文件。
> lsof rumenz.txt 显示开启文件rumenz.txt的进程> lsof -c nginx 显示出以字母nginx开头进程现在打开的文件> lsof -p 1234 列出进程号为1234的进程所打开的文件> lsof -g gname/gid 显示归属gname或gid的进程情况> lsof -u uname/uid 显示归属uname或uid的进程情况> lsof d /usr/local/ 显示目录下被进程开启的文件> lsof D /usr/local/ 同上,但是会搜索目录下的目录,时间较长> lsof -d 4 显示使用fd为4的进程> lsof -i 用以显示符合条件的进程情况
我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶紧点击加群,享受一起成长的快乐。另外,如果你最近想跳槽的话,年前我花了2周时间收集了一波大厂面经,节后准备跳槽的可以点击这里领取!
推荐阅读
- 杭州程序员从互联网跳央企,晒一天工作和收入,网友:待一年就废
- IntelliJ IDEA 如何共享设置?
- 应届生就业难?小微企业经营难?网友建议:大学生付费上班,两全其美...
··································
你好,我是程序猿DD,10年开发老司机、阿里云MVP、腾讯云TVP、出过书创过业、国企4年互联网6年。从普通开发到架构师、再到合伙人。一路过来,给我最深的感受就是一定要不断学习并关注前沿。只要你能坚持下来,多思考、少抱怨、勤动手,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。如果你看好一个事情,一定是坚持了才能看到希望,而不是看到希望才去坚持。相信我,只要坚持下来,你一定比现在更好!如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯,帮你积累弯道超车的资本。
点击领取2022最新10000T学习资料