Linux中幾個你不常用,但卻很有用的命令
這些命令可能你沒怎么用過,但記住他們,需要的時候可以幫大忙!
pgrep
pgrep名字前有個p,我們可以猜到這和進(jìn)程相關(guān),又是grep,當(dāng)然這是進(jìn)程相關(guān)的grep命令。不過,這個命令主要是用來列舉進(jìn)程ID的
想要找到 SSH 服務(wù)器的 PID
> pgrep ssh1529284392844228719
pgrep會在每一行打印一個匹配的進(jìn)程。-d選項允許你指定一個分隔符
> pgrep ssh -d " "1529 28439 28442 28719 28810 28813
-l選項告訴pgrep顯示名稱和 ID:
> pgrep -l ssh1529 sshd28439 sshd28442 sshd28719 sshd
pstree
這個命令可以以樹形的方式列出進(jìn)程
> 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
這個命令主要是做一個精度比較高的數(shù)學(xué)運(yùn)算的。比如開平方根等。下面是一個我們利用bc命令寫的一個腳本(文件名:sqrt)
#!/bin/bashif [ $# -ne 1 ]thenecho 'Usage: sqrt number'exit 1elseecho -e "sqrt($1)\nquit\n" | 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.tarnl
nl命令其它和cat命令很像,只不過它會打上行號
> nl rumenz.sh1 1232 3453 rumenz.com4 1115 222
ldd
這個命令可以知道你的一個可執(zhí)行文件所使用了動態(tài)鏈接庫
> ldd /usr/bin/lslinux-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文件轉(zhuǎn)成純文本文件。如下示例:
> PAGER=cat> man ls | col -b > ls.txt
lsof
可以列出打開了的文件。
> lsof rumenz.txt 顯示開啟文件rumenz.txt的進(jìn)程> lsof -c nginx 顯示出以字母nginx開頭進(jìn)程現(xiàn)在打開的文件> lsof -p 1234 列出進(jìn)程號為1234的進(jìn)程所打開的文件> lsof -g gname/gid 顯示歸屬gname或gid的進(jìn)程情況> lsof -u uname/uid 顯示歸屬uname或uid的進(jìn)程情況> lsof +d /usr/local/ 顯示目錄下被進(jìn)程開啟的文件> lsof +D /usr/local/ 同上,但是會搜索目錄下的目錄,時間較長> lsof -d 4 顯示使用fd為4的進(jìn)程> lsof -i 用以顯示符合條件的進(jìn)程情況
推薦閱讀
杭州程序員從互聯(lián)網(wǎng)跳央企,曬一天工作和收入,網(wǎng)友:待一年就廢 IntelliJ IDEA 如何共享設(shè)置? 應(yīng)屆生就業(yè)難?小微企業(yè)經(jīng)營難?網(wǎng)友建議:大學(xué)生付費(fèi)上班,兩全其美...
你好,我是程序猿DD,10年開發(fā)老司機(jī)、阿里云MVP、騰訊云TVP、出過書創(chuàng)過業(yè)、國企4年互聯(lián)網(wǎng)6年。從普通開發(fā)到架構(gòu)師、再到合伙人。一路過來,給我最深的感受就是一定要不斷學(xué)習(xí)并關(guān)注前沿。只要你能堅持下來,多思考、少抱怨、勤動手,就很容易實現(xiàn)彎道超車!所以,不要問我現(xiàn)在干什么是否來得及。如果你看好一個事情,一定是堅持了才能看到希望,而不是看到希望才去堅持。相信我,只要堅持下來,你一定比現(xiàn)在更好!如果你還沒什么方向,可以先關(guān)注我,這里會經(jīng)常分享一些前沿資訊,幫你積累彎道超車的資本。
評論
圖片
表情
