寫在前面
? 想必,通過《【小白幾分鐘】幾分鐘了解Linux常用基本命令》這一篇文章,大家應該對Linux系統的操作有了一個大致的了解,如果還沒有看過基礎命令篇的胖友們,可以點進去閱覽一下,并且對應著命令敲一遍
接下來,打算跟大家介紹一下Linux中的一些進階命令,該篇能讓你對Linux系統環境有個更好的認知,話不多說,進入正題
?
Linux常用進階命令
?
-
df
功能描述:查看磁盤空間
語法:df
[選項]
常用選項:
?????-h?以高可讀性顯示
示例:
[root@vultr ~]# df -h
Filesystem Size Used Avail Use% Mounted on
//文件系統 容量 已使用 可用 已用% 掛載點
devtmpfs 463M 0 463M 0% /dev
tmpfs 494M 20K 494M 1% /dev/shm
tmpfs 494M 50M 444M 11% /run
tmpfs 494M 0 494M 0% /sys/fs/cgroup
/dev/vda1 25G 4.0G 20G 17% /
tmpfs 99M 0 99M 0% /run/user/0
?
-
free
功能描述:查看內存使用情況
語法:free
[選項]
常用選項:
?????-m?以MB為單位顯示內存使用情況
示例:
[root@vultr ~]# free -m
total used free shared buffers cached
#內存總數 已使用數量 空閑數量 當前廢棄不用 輸入緩存數量 輸出緩存數量
Mem: 2016 1973 42 0 163 1497
-/+ buffers/cache: 312 1703#真實剩余內存可為1703MB
Swap: 4094 0 4094
#swap交換內存,當系統真實內存不夠用的時候可以臨時用磁盤空間來充當內存,一般大小為真實內存的2-4倍
?
-
lsblk
功能描述:用于列出所有可用塊設備的信息,而且還能顯示他們之間的依賴關系,但是它不會列出RAM盤的信息。塊設備有硬盤,閃存盤,cd-ROM等等。
語法:lsblk
示例:
[root@Jobs ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 25G 0 disk
└─vda1 253:1 0 25G 0 part /
//字段含義
NAME:這是塊設備名
MAJ:MIN:本欄顯示主要和次要設備號
RM:本欄顯示設備是否可移動設備。RM值等于1,這說明他們是可移動設備
SIZE:本欄列出設備的容量大小信息
RO:該項表明設備是否為只讀。RO值為0,不是只讀的
TYPE:本欄顯示塊設備是否是磁盤或磁盤上的一個分區
MOUNTPOINT:設備掛載的掛載點
?
-
mount
功能描述:用于加載文件系統到指定的掛載點
語法:mount
設備原始地址(設備原始地址都統一在/dev
下) 需掛載的位置路徑
示例:
[root@Jobs ~]# mkdir -p /mnt/cdrom //創建一個掛載點,最好在“/mnt/”下創建
[root@Jobs ~]# ls /mnt
cdrom
[root@Jobs ~]#mount /dev/sr0 /mnt/cdrom //掛載到cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only //掛載成功后便可正常使用
[root@Jobs ~]#umount /mnt/cdrom //卸載已掛載的文件
?
-
|
功能描述:|
為管道符,一般可用于將兩個命令隔開,管道符左邊命令的輸出就會作為管道符右邊命令的輸入
語法:管道符不能單獨使用,必須要其他指令一同使用,主要起輔助作用
示例:
[root@vultr /]# ls / | wc -l //統計根目錄下,有多少個文件
22
[root@vultr /]# ls / | grep o //“grep”起到了過濾作用,過濾出含有“o”的文件
boot
home
lost+found
opt
proc
root
?
-
id
功能描述:顯示真實有效的UID(用戶id)和GID(組id)
語法:id
[用戶名]
示例:
[root@vultr ~]# id //后面不跟任何參數視為查看當前用戶id信息
uid=0(root) gid=0(root) groups=0(root)
[root@vultr ~]# id testdog //查看“testdog”這個用戶的id信息
uid=501(testdog) gid=1002(testdog) groups=1002(testdog)
[root@vultr ~]# id -un //功能和“whoami”相同, 查看當前登錄用戶名,一般用戶shell腳本中
root
?
-
ps
功能描述:顯示當前系統的進程狀態,
語法:ps
[選項] (結合管道符使用)
常用選項:
?????-e?列出全部進程
?????-f?顯示全部字段(列)
示例:
[root@vultr ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jul02 ? 00:00:04 /usr/lib/systemd/systemd --switched-root --system --des
root 2 0 0 Jul02 ? 00:00:00 [kthreadd]
root 3 2 0 Jul02 ? 00:00:00 [rcu_gp]
root 5 2 0 Jul02 ? 00:00:00 [kworker/0:0H]
root 7 2 0 Jul02 ? 00:00:00 [mm_percpu_wq]
...
字段含義:
UID:執行該進程的用戶id
PID:進程id
PPID:進程的父級進程id,如果一個程序找不到父級id,該程序則視作僵尸進程
C:cpu的占用率,以%顯示
STIME:進程的啟動時間
TTY:發起該進程的設備識別符號,如果顯示“?”則表示進程不是有終端設備發起的
TIME:進程的執行時間
CMD:該進程的名稱或對應的路勁
[root@vultr ~]# ps -ef | grep python
//結合管道符使用,過濾出名稱為“python”的進程,注意這條命令行本身也是一個進程,所有會顯示在最后
root 484 1 0 Jul02 ? 00:00:00 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
root 891 1 0 Jul02 ? 00:00:18 /usr/bin/python -Es /usr/sbin/tuned -l -P
root 999 1 0 Jul02 ? 00:00:19 python main.pyc 8888
root 1218 1 0 Jul02 ? 00:00:19 python task.pyc
root 1806 1 0 Jul02 ? 00:00:47 /bin/python /usr/bin/ssserver -c /etc/shadowsocks.json -d start
root 24854 24380 0 14:18 pts/0 00:00:00 grep --color=auto python
?
-
top
功能描述:可以實時動態地查看系統的整體運行情況
語法:top
[選項]
常用交互命令:
?????-M?根據駐留內存大小進行排序
?????-P?根據CPU使用百分比大小進行排序
?????-1?當服務器擁有多個cpou時,可以使用“1”來切換顯示各個cpu的詳細信息
?????-q?退出程序
示例:
[root@vultr ~]# top
top - 14:29:08 up 1 day, 23:13, 2 users, load average: 0.00, 0.01, 0.00
//系統之間 運行1天 啟動了23:13分鐘 2個用戶當前登錄 分別表示在1分鐘內、5分鐘內、15分鐘內的負載情況
Tasks: 95 total, 1 running, 61 sleeping, 0 stopped, 0 zombie
//總進程數量 運行進程數 睡眠進程數 停止進程數 僵尸進程數
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
//CPU使用情況
KiB Mem : 1009800 total, 477188 free, 227052 used, 305560 buff/cache
//物理內存使用情況
KiB Swap: 1049596 total, 1049596 free, 0 used. 576220 avail Mem
//交換內存使用情況
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAD
1 root 20 0 43328 4976 3860 S 0.0 0.5 0:04.26 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
...
字段含義:
PID:進程id
USER:該進程對應的用戶
PR:優先級,數值越大優先級越高
VIRT:虛擬內存
RES:常駐內存
SHR:共享內存
進程實際使用內存 = 常駐內存(RES)- 共享內存 (SHR)
*S:表示進程的狀態“S”表示sleeping,“R”表示running
*%CPU:Cpu占用百分比
*%MEN:內存占用百分比
TIME+:執行時間
*COMMAD:進程的名稱或路徑
?
-
du
功能描述:查看目錄的真實大小
語法:du
[選項] [文件]
常用選項:
?????-s?只顯示匯總大小
?????-h?以高可讀性顯示
[root@vultr ~]# du -h /etc //列出“etc”文件夾下每個文件大小
4.0K /etc/ppp/peers
36K /etc/ppp
8.0K /etc/cron.hourly
8.0K /etc/python
4.0K /etc/gcrypt
40K /etc/iproute2
...
[root@vultr ~]# du -sh /etc/ //統計“etc”文件夾的總大小
13M /etc/
?
-
find
功能描述:文件搜索
語法:find
[搜索范圍] [匹配條件]
常用匹配條件:
?????-name?按照文件名來查找(-iname不區分大小寫)
?????-type?按照類型查找(-iname不區分大小寫)
?????-user?按照文件所有者查找
?????-exec find?命令對匹配的文件執行該參數所給出的其他linux命令。相應命令的形式為'命令' {} ;,注意{ }和\;之間的空格。
示例:
[root@vultr ~]# find /etc -name te* //在etc文件夾下找出所有以te開頭的文件
/etc/terminfo
[root@vultr /]# find /tmp -user root | grep test* //按所有者root來查詢以“test”開頭的文件
/tmp/testwjj
/tmp/testwjj/test
/tmp/testwjj/test.pl
/tmp/test.pl
[root@vultr ~]# find /tmp/ -type d //查找tmp目錄下,類型為文件
/tmp/
/tmp/.X11-unix
/tmp/testt
/tmp/testt/test2
/tmp/testt/test2/test3
/tmp/.XIM-unix
/tmp/.font-unix
/tmp/test1
/tmp/test1/test2
/tmp/test1/test2/test3
/tmp/.Test-unix
/tmp/.ICE-unix
[root@vultr ~]# find /tmp/ -type d | wc -l //統計tmp目錄下,類型為文件的總數
12
[root@vultr /]# find /tmp -name test* -exec ls -l {} \; //將tmp文件夾下,以test開頭的文件詳細列出
total 4
-rw-r--r-- 1 root root 0 Jun 22 14:04 test
-rw-r--r-- 1 root root 40 Jun 22 15:30 test.pl
-rw-r--r-- 1 root root 0 Jun 22 14:04 /tmp/testwjj/test
-rw-r--r-- 1 root root 40 Jun 22 15:30 /tmp/testwjj/test.pl
-rw-r--r-- 1 root root 40 Jun 26 10:40 /tmp/test.pl
?
-
service
功能描述:控制系統服務的工具,啟動、停止、重啟和關閉服務
語法:service
[服務名稱] start/stop/restart
示例:
[root@vultr ~]# service mysql restart //以重啟“mysql”服務為例,大家也可以去嘗試停止和關閉等命令
Redirecting to /bin/systemctl restart mysql.service
?
-
kill
功能描述:殺死進程
語法1:kill
PID (先要通過ps -ef
進行進程的查詢,然后再通過PID殺死進程)
語法2:killall
進程名稱
示例:
[root@vultr ~]# ps -ef | grep vim //通過“ps”命令找到“vim”的PID
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
[root@vultr ~]#kill 3268 //通過PID殺死進程
[root@vultr ~]#kill 3268 //再次輸入命令則會提示沒有這個進程,表示該進程已被殺死
-bash: kill: (3268) - 沒有那個進程
?
-
reboot
功能描述:重啟服務器
語法:reboot
[選項]
常用選項:
?????-w?僅做測試,并不是真的關機,只會把重開機器的數據寫入/var/log目錄下的wtmp記錄文件
示例:
[root@vultr ~]# reboot //重開機。
[root@vultr ~]# reboot -w //做個重開機的模擬(只有紀錄并不會真的重開機)。
?
-
shutdown
功能描述:關機(慎用!)
語法:shutdown
[選項] (參數)
常用選項:
?????-h?將系統關機
示例:
[root@vultr ~]# shutdown -h now //立即關機
[root@vultr ~]# init 0 //立即關機
[root@vultr ~]# poweroff //立即關機
?
-
netstat
功能描述:顯示Linux中網絡系統的狀態信息
語法:netstat
[選項]
常用選項:
?????-t?表示只列出tpc協議的連接
?????-n?直接使用ip地址
?????-l?“state”列中被監聽的連接
?????-p?顯示發起連接的進程的PID和進程名稱
示例:
[root@vultr ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 943/nginx: master p
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 922/pure-ftpd (SERV
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 916/sshd
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 995/python
tcp 0 0 0.0.0.0:888 0.0.0.0:* LISTEN 943/nginx: master p
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1616/master
...
?
寫在最后
至此的話,關于Linux的一些進常用階操作也都說完了,有不太明白的胖友們,可以去“Linux命令手冊”進行查詢,感覺這東西真的是神器啊,所以向各位胖友安利了兩次
自從有了這個手冊,腰不酸、腿不疼,就連man
命令都用的少了(還不是因為英文差),但這邊還是希望有條件的胖友還是可以使用man
命令對Linux的命令進行幫助查詢,畢竟不是每個人都像我英文這么差的,以后呢,也要好好學習英語了。。。
那最后就來句英文的雞湯作為結尾吧~
?
別向這個操蛋的世界投降!