Linux shell常用命令匯總
10年積累的網(wǎng)站設(shè)計、做網(wǎng)站經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有靖宇免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
對于經(jīng)常使用linux系統(tǒng)的博主來說,基本常用的shell命令是少不了的,下面為大家總結(jié)了Linux shell的常用命令,希望對大家有所幫助!
1.檢查遠(yuǎn)程端口是否對bash開放:
echo /dev/tcp/8.8.8.8/53 echo "open"
2.讓進(jìn)程轉(zhuǎn)入后臺:
Ctrl + z
3、將進(jìn)程轉(zhuǎn)到前臺:
fg
4.產(chǎn)生隨機(jī)的十六進(jìn)制數(shù),其中n是字符數(shù):
openssl rand -hex n
5.在當(dāng)前shell里執(zhí)行一個文件里的命令:
source /home/user/file.name
6.截取前5個字符:
${variable:0:5}
7.SSH debug 模式:
ssh -vvv user@ip_address
8.SSH with pem key:
ssh user@ip_address -i key.pem
9.用wget抓取完整的網(wǎng)站目錄結(jié)構(gòu),存放到本地目錄中:
wget -r --no-parent --reject "index.html*" -P /home/user/dirs
10.一次創(chuàng)建多個目錄:
mkdir -p /home/user/{test,test1,test2}
11.列出包括子進(jìn)程的進(jìn)程樹:
ps axwef
12.創(chuàng)建 war 文件:
jar -cvf name.war file
13.測試硬盤寫入速度:
dd if=/dev/zero of=/tmp/output.img bs=8k count=256k; rm -rf /tmp/output.img
14.測試硬盤讀取速度:
hdparm -Tt /dev/sda
15.獲取文本的md5 hash:
echo -n "text" | md5sum
16.檢查xml格式:
xmllint --noout file.xml
17.將tar.gz提取到新目錄里:
tar zxvf package.tar.gz -C new_dir
18.使用curl獲取HTTP頭信息:
curl -I
19.修改文件或目錄的時間戳(YYMMDDhhmm):
touch -t 0712250000 file
20.用wget命令執(zhí)行ftp下載:
wget -m
21.生成隨機(jī)密碼(例子里是16個字符長):
LANG=c /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;
22.快速備份一個文件:
cp some_file_name{,.bkp}
23.訪問Windows共享目錄:
smbclient -U "DOMAIN\user" //dc.domain點抗 /share/test/dir
24.執(zhí)行歷史記錄里的命令(這里是第100行):
!100
25.解壓:
unzip package_name.zip -d dir_name
26.輸入多行文字(CTRL + d 退出):
cat test.txt
27.創(chuàng)建空文件或清空一個現(xiàn)有文件:
\ test.txt
28.與Ubuntu NTP server同步時間:
ntpdate ntp.ubuntu點抗
29.用netstat顯示所有tcp4監(jiān)聽端口:
netstat -lnt4 | awk '{print $4}' | cut -f2 -d: | grep -o '[0-9]*'
30.qcow2鏡像文件轉(zhuǎn)換:
qemu-img convert -f qcow2 -O raw precise-server-cloudimg-amd64-disk1.img \precise-server-cloudimg-amd64-disk1.raw
31.重復(fù)運(yùn)行文件,顯示其輸出(缺省是2秒一次):
watch ps -ef
32.所有用戶列表:
getent passwd
33.Mount root in read/write mode:
mount -o remount,rw /
34.掛載一個目錄(這是不能使用鏈接的情況):
mount --bind /source /destination
35.動態(tài)更新DNS server:
nsupdate eof p="" /eof
update add $HOST 86400 A $IP
send
EOF
36.遞歸grep所有目錄:
grep -r "some_text" /path/to/dir
37.列出前10個最大的文件:
lsof / | awk '{ if($7 1048576) print $7/1048576 "MB "$9 }' | sort -n -u | tail
39.打開Vim并跳到文件末:
vim + some_file_name
40.Git 克隆指定分支(master):
git clone git@github點抗 :name/app.git -b master
41.Git 切換到其它分支(develop):
git checkout develop
42.Git 刪除分支(myfeature):
git branch -d myfeature
43.Git 刪除遠(yuǎn)程分支
git push origin :branchName
44.Git 將新分支推送到遠(yuǎn)程服務(wù)器:
git push -u origin mynewfeature
45.打印歷史記錄中最后一次cat命令:
!cat:p
46.運(yùn)行歷史記錄里最后一次cat命令:
!cat
47.找出/home/user下所有空子目錄:
echo /dev/tcp/8.8.8.8/53 echo "open"
1.檢查遠(yuǎn)程端口是否對bash開放:
find /home/user -maxdepth 1 -type d -empty
48.獲取test.txt文件中第50-60行內(nèi)容:
test.txt sed -n '50,60p'
49.運(yùn)行最后一個命令(如果最后一個命令是mkdir /root/test, 下面將會運(yùn)行: sudo mkdir /root/test):
sudo !!
50.創(chuàng)建臨時RAM文件系統(tǒng) – ramdisk (先創(chuàng)建/tmpram目錄):
mount -t tmpfs tmpfs /tmpram -o size=512m
51.Grep whole words:
grep -w "name" test.txt
52.在需要提升權(quán)限的.情況下往一個文件里追加文本:
echo "some text" | sudo tee -a /path/file
53.列出所有kill signal參數(shù):
kill -l
54.在bash歷史記錄里禁止記錄最后一次會話:
kill -9 $$
55.掃描網(wǎng)絡(luò)尋找開放的端口:
nmap -p 8081 172.20.0.0/16
56.設(shè)置git email:
git config --global user.email "me@example點抗 "
57.To sync with master if you have unpublished commits:
git pull --rebase origin master
58.將所有文件名中含有”txt”的文件移入/home/user目錄:
find -iname "*txt*" -exec mv -v {} /home/user \;
59.將文件按行并列顯示:
paste test.txt test1.txt
60.shell里的進(jìn)度條:
pv data.log
61.使用netcat將數(shù)據(jù)發(fā)送到Graphite server:
echo "hosts.sampleHost 10 `date +%s`" | nc 192.168.200.2 3000
62.將tabs轉(zhuǎn)換成空格:
expand test.txt test1.txt
63.Skip bash history:
space cmd
64.去之前的工作目錄:
cd -
65.拆分大體積的tar.gz文件(每個100MB),然后合并回去:
split –b 100m /path/to/large/archive /path/to/output/files
cat files* archive
66.使用curl獲取HTTP status code:
curl -sL -w "%{http_code}\\n" -o /dev/null
67.設(shè)置root密碼,強(qiáng)化MySQL安全安裝:
/usr/bin/mysql_secure_installation
68.當(dāng)Ctrl + c不好使時:
Ctrl + \
69.獲取文件owner:
stat -c %U file.txt
70.block設(shè)備列表:
lsblk -f
71.找出文件名結(jié)尾有空格的文件:
find . -type f -exec egrep -l " +$" {} \;
72.找出文件名有tab縮進(jìn)符的文件
find . -type f -exec egrep -l $'\t' {} \;
73.用”=”打印出橫線:全選復(fù)制放進(jìn)筆記
printf '%100s\n' | tr ' ' = ;
用來建立一個軟鏈接,而ln -s /usr/lib/libX11.3 libX11.sl的意思為:為/usr/lib/libX11.3文件建立一個名為libX11.sl的軟鏈接。
命令格式:
ln [參數(shù)][源文件或目錄][目標(biāo)文件或目錄]
參數(shù)
1、-b 刪除,覆蓋以前建立的鏈接
2、-d 允許超級用戶制作目錄的硬鏈接
3、-f 強(qiáng)制執(zhí)行
4、-i 交互模式,文件存在則提示用戶是否覆蓋
5、-n 把符號鏈接視為一般目錄
6、-s 軟鏈接(符號鏈接)
7、-v 顯示詳細(xì)的處理過程
擴(kuò)展資料
軟鏈接解釋
1、軟鏈接,以路徑的形式存在。類似于Windows操作系統(tǒng)中的快捷方式。
2、軟鏈接可以 跨文件系統(tǒng) ,硬鏈接不可以。
3、軟鏈接可以對一個不存在的文件名進(jìn)行鏈接。
4、軟鏈接可以對目錄進(jìn)行鏈接。
硬鏈接:
1、硬鏈接,以文件副本的形式存在。但不占用實際空間。
2、不允許給目錄創(chuàng)建硬鏈接。
3、硬鏈接只有在同一個文件系統(tǒng)中才能創(chuàng)建。
linux ps命令介紹
來源《鳥哥的linux私房菜》
ps:將某個時間點的程序運(yùn)作情況擷取下來
?
[root@linux ~]# ps aux
[root@linux ~]# ps -lA
[root@linux ~]# ps axjf
參數(shù):
-A :所有的 process 均顯示出來,與 -e 具有同樣的效用;
-a :不與 terminal 有關(guān)的所有 process ;
-u :有效使用者 (effective user) 相關(guān)的 process ;
x :通常與 a 這個參數(shù)一起使用,可列出較完整信息。
輸出格式規(guī)劃:
l :較長、較詳細(xì)的將該 PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一個更為完整的輸出。
特別說明:
由于 ps 能夠支持的 OS 類型相當(dāng)?shù)亩?,所以他的參?shù)多的離譜!
而且有沒有加上 - 差很多!詳細(xì)的用法應(yīng)該要參考 man ps 喔!
范例1:將目前屬于您自己這次登入的 PID 與相關(guān)信息列示出來
?
[root@linux ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 5881 5654 0 76 0 - 1303 wait pts/0 00:00:00 su
4 S 0 5882 5881 0 75 0 - 1349 wait pts/0 00:00:00 bash
4 R 0 6037 5882 0 76 0 - 1111 - pts/0 00:00:00 ps
?
# 上面這個信息其實很多喔!各相關(guān)信息的意義為:
# F 代表這個程序的旗標(biāo) (flag), 4 代表使用者為 super user;
# S 代表這個程序的狀態(tài) (STAT),關(guān)于各 STAT 的意義將在內(nèi)文介紹;
# PID 沒問題吧?。烤褪沁@個程序的 ID ??!底下的 PPID 則上父程序的 ID;
# C CPU 使用的資源百分比
# PRI 這個是 Priority (優(yōu)先執(zhí)行序) 的縮寫,詳細(xì)后面介紹;
# NI 這個是 Nice 值,在下一小節(jié)我們會持續(xù)介紹。
# ADDR 這個是 kernel function,指出該程序在內(nèi)存的那個部分。如果是個 running
# 的程序,一般就是『 - 』的啦!
# SZ 使用掉的內(nèi)存大??;
# WCHAN 目前這個程序是否正在運(yùn)作當(dāng)中,若為 - 表示正在運(yùn)作;
# TTY 登入者的終端機(jī)位置啰;
# TIME 使用掉的 CPU 時間。
# CMD 所下達(dá)的指令為何???
# 仔細(xì)看到每一個程序的 PID 與 PPID 的相關(guān)性為何喔!上頭列出的三個程序中,
# 彼此間可是有相關(guān)性的吶!
范例2:列出目前所有的正在內(nèi)存當(dāng)中的程序
?
[root@linux ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 1740 540 ? S Jul25 0:01 init [3]
root 2 0.0 0.0 0 0 ? SN Jul25 0:00 [ksoftirqd/0]
root 3 0.0 0.0 0 0 ? S Jul25 0:00 [events/0]
.....中間省略.....
root 5881 0.0 0.3 5212 1204 pts/0 S 10:22 0:00 su
root 5882 0.0 0.3 5396 1524 pts/0 S 10:22 0:00 bash
root 6142 0.0 0.2 4488 916 pts/0 R+ 11:45 0:00 ps aux
?
? USER:該 process 屬于那個使用者賬號的?
? PID :該 process 的號碼。
? %CPU:該 process 使用掉的 CPU 資源百分比;
? %MEM:該 process 所占用的物理內(nèi)存百分比;
? VSZ :該 process 使用掉的虛擬內(nèi)存量 (Kbytes)
? RSS :該 process 占用的固定的內(nèi)存量 (Kbytes)
? TTY :該 process 是在那個終端機(jī)上面運(yùn)作,若與終端機(jī)無關(guān),則顯示 ?,另外, tty1-tty6 是本機(jī)上面的登入者程序,若為 pts/0 等等的,則表示為由網(wǎng)絡(luò)連接進(jìn)主機(jī)的程序。
? STAT:該程序目前的狀態(tài),主要的狀態(tài)有:
o R :該程序目前正在運(yùn)作,或者是可被運(yùn)作;
o S :該程序目前正在睡眠當(dāng)中 (可說是 idle 狀態(tài)啦!),但可被某些訊號 (signal) 喚醒。
o T :該程序目前正在偵測或者是停止了;
o Z :該程序應(yīng)該已經(jīng)終止,但是其父程序卻無法正常的終止他,造成 zombie (疆尸) 程序的狀態(tài)
? START:該 process 被觸發(fā)啟動的時間;
? TIME :該 process 實際使用 CPU 運(yùn)作的時間。
? COMMAND:該程序的實際指令為何?
范例3:以范例一的顯示內(nèi)容,顯示出所有的程序
?
[root@linux ~]# ps -lA
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 76 0 - 435 - ? 00:00:01 init
1 S 0 2 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0
1 S 0 3 1 0 70 -5 - 0 worker ? 00:00:00 events/0
.....以下省略.....
范例4:列出類似程序樹的程序顯示
?
[root@linux ~]# ps -axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 1 0 0 ? -1 S 0 0:01 init [3]
1 2 0 0 ? -1 SN 0 0:00 [ksoftirqd/0]
.....中間省略.....
1 5281 5281 5281 ? -1 Ss 0 0:00 /usr/sbin/sshd
5281 5651 5651 5651 ? -1 Ss 0 0:00 \_ sshd: dmtsai [priv]
5651 5653 5651 5651 ? -1 S 500 0:00 \_ sshd: dmtsai@pts/0
5653 5654 5654 5654 pts/0 6151 Ss 500 0:00 \_ -bash
5654 5881 5881 5654 pts/0 6151 S 0 0:00 \_ su
5881 5882 5882 5654 pts/0 6151 S 0 0:00 \_ bash
5882 6151 6151 5654 pts/0 6151 R+ 0 0:00 \_ ps -axjf
范例5:找出與 cron 與 syslog 這兩個服務(wù)有關(guān)的 PID 號碼
?
[root@linux ~]# ps aux | egrep '(cron|syslog)'
root 1539 0.0 0.1 1616 616 ? Ss Jul25 0:03 syslogd -m 0
root 1676 0.0 0.2 4544 1128 ? Ss Jul25 0:00 crond
root 6157 0.0 0.1 3764 664 pts/0 R+ 12:10 0:00 egrep (cron|syslog)
在預(yù)設(shè)的情況下, ps 僅會列出與目前所在的 bash shell 有關(guān)的 PID 而已,所以, 當(dāng)我使用 ps -l 的時候,只有三個 PID (范例一)。