Linux系統(tǒng)中的命令實(shí)在是太多了,簡單包括兩類命令,一類是內(nèi)部命令,指的是Shell自身提供的功能,一類是外部命令,指的是第三方的控制臺應(yīng)用程序。
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、江門網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、江門網(wǎng)絡(luò)營銷、江門企業(yè)策劃、江門品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供江門建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
一般來說,沒必要完全學(xué)習(xí)所有的命令,大體上有個印象,用到的時(shí)候去查一下幫助文檔,久而久之,自然熟練。
下面是網(wǎng)友整理的20個最常用的Linux命令:
1. ls命令
ls命令是列出目錄內(nèi)容(List Directory Contents)的意思。運(yùn)行它就是列出文件夾里的內(nèi)容,可能是文件也可能是文件夾。
2. lsblk命令
"lsblk"就是列出塊設(shè)備。除了RAM外,以標(biāo)準(zhǔn)的樹狀輸出格式,整齊地顯示塊設(shè)備。
3. md5sum命令
“md5sum”就是計(jì)算和檢驗(yàn)MD5信息簽名。md5 checksum(通常叫做哈希)使用匹配或者驗(yàn)證文件的文件的完整性,因?yàn)槲募赡芤驗(yàn)閭鬏斿e誤,磁盤錯誤或者無惡意的干擾等原因而發(fā)生改變。
4. dd命令
“dd”命令代表了轉(zhuǎn)換和復(fù)制文件??梢杂脕磙D(zhuǎn)換和復(fù)制文件,大多數(shù)時(shí)間是用來復(fù)制iso文件(或任何其它文件)到一個usb設(shè)備(或任何其它地方)中去,所以可以用來制作USB啟動器。
6. history命令
“history”命令就是歷史記錄。它顯示了在終端中所執(zhí)行過的所有命令的歷史。
7. sudo命令
“sudo”(super user do)命令允許授權(quán)用戶執(zhí)行超級用戶或者其它用戶的命令。通過在sudoers列表的安全策略來指定。
8. mkdir命令
“mkdir”(Make directory)命令在命名路徑下創(chuàng)建新的目錄。然而如果目錄已經(jīng)存在了,那么它就會返回一個錯誤信息"不能創(chuàng)建文件夾,文件夾已經(jīng)存在了"("cannot create folder, folder already exists")
9. touch 命令
“touch”命令代表了將文件的訪問和修改時(shí)間更新為當(dāng)前時(shí)間。touch命令只會在文件不存在的時(shí)候才會創(chuàng)建它。如果文件已經(jīng)存在了,它會更新時(shí)間戳,但是并不會改變文件的內(nèi)容。
10. chmod 命令
“chmod”命令就是改變文件的模式位。chmod會根據(jù)要求的模式來改變每個所給的文件,文件夾,腳本等等的文件模式(權(quán)限)。
11. chown命令
“chown”命令就是改變文件擁有者和所在用戶組。每個文件都屬于一個用戶組和一個用戶。在你的目錄下,使用"ls -l",你就會看到像這樣的東西。
12. apt命令
Debian系列以“apt”命令為基礎(chǔ),“apt”代表了Advanced Package Tool。APT是一個為Debian系列系統(tǒng)(Ubuntu,Kubuntu等等)開發(fā)的高級包管理器,在Gnu/Linux系統(tǒng)上,它會為包自動地,智能地搜索,安裝,升級以及解決依賴。
13. tar命令
“tar”命令是磁帶歸檔(Tape Archive),對創(chuàng)建一些文件的的歸檔和它們的解壓很有用。
14. cal 命令
“cal”(Calender),它用來顯示當(dāng)前月份或者未來或者過去任何年份中的月份。
16. cat命令
“cat”代表了連結(jié)(Concatenation),連接兩個或者更多文本文件或者以標(biāo)準(zhǔn)輸出形式打印文件的內(nèi)容。
17. cp 命令
“copy”就是復(fù)制。它會從一個地方復(fù)制一個文件到另外一個地方。
18. mv 命令
“mv”命令將一個地方的文件移動到另外一個地方去。
19. pwd 命令
“pwd”(print working directory),在終端中顯示當(dāng)前工作目錄的全路徑。
20. cd 命令
最后,經(jīng)常使用的“cd”命令代表了改變目錄。它在終端中改變工作目錄來執(zhí)行,復(fù)制,移動,讀,寫等等操作。
磁盤空間管理
系統(tǒng)軟件和應(yīng)用軟件,都要以文件的形式存儲在計(jì)算機(jī)的磁盤空間中。因此,應(yīng)該隨時(shí)監(jiān)視磁盤空間的使用情況。Linux系統(tǒng)提供了一組有關(guān)磁盤空間管理的命令。
df命令
功能:檢查文件系統(tǒng)的磁盤空間占用情況??梢岳迷撁顏慝@取硬盤被占用了多少空間,目前還剩下多少空間等信息。
語法:df [選項(xiàng)]
說明:df命令可顯示所有文件系統(tǒng)對i節(jié)點(diǎn)和磁盤塊的使用情況。
該命令各個選項(xiàng)的含義如下:
-a 顯示所有文件系統(tǒng)的磁盤使用情況,包括0塊(block)的文件系統(tǒng),如/proc文件系統(tǒng)。
-k 以k字節(jié)為單位顯示。
-i 顯示i節(jié)點(diǎn)信息,而不是磁盤塊。
-t 顯示各指定類型的文件系統(tǒng)的磁盤空間使用情況。
-x 列出不是某一指定類型文件系統(tǒng)的磁盤空間使用情況(與t選項(xiàng)相反)。
-T 顯示文件系統(tǒng)類型。
例1:列出各文件系統(tǒng)的磁盤空間使用情況。
$ df
Filesystem 1 K-blocks Used Available Use% Mounted on
/dev/hda2 1361587 1246406 44823 97% /
df命令的輸出清單的第1列是代表文件系統(tǒng)對應(yīng)的設(shè)備文件的路徑名(一般是硬盤上的分區(qū));第2列給出分區(qū)包含的數(shù)據(jù)塊(1024字節(jié))的數(shù)目;第3,4列分別表示已用的和可用的數(shù)據(jù)塊數(shù)目。用戶也許會感到奇怪的是,第3,4列塊數(shù)之和不等于第2列中的塊數(shù)。這是因?yàn)槿笔〉拿總€分區(qū)都留了少量空間供系統(tǒng)管理員使用。即使遇到普通用戶空間已滿的情況,管理員仍能登錄和留有解決問題所需的工作空間。清單中Use% 列表示普通用戶空間使用的百分比,即使這一數(shù)字達(dá)到100%,分區(qū)仍然留有系統(tǒng)管理員使用的空間。最后,Mounted on列表示文件系統(tǒng)的安裝點(diǎn)。
例2:列出各文件系統(tǒng)的i節(jié)點(diǎn)使用情況。
$ df -ia
Filesystem Inodes IUsed IFree Iused% Mounted on
/dev/ hda2 352256 75043 277213 21% /
none 0 0 0 0% /proc localhost:(pid221) 0 0 0 0% /net
例3:列出文件系統(tǒng)的類型。
$ df -T
Filesystem Type 1K-blocks Used Available use% Mounted on
/dev/hda2 ext2 1361587 1246405 44824 97% /
本例中的文件系統(tǒng)是ext2類型的。
du命令
du的英文原義為“disk usage”,含義為顯示磁盤空間的使用情況。
功能:統(tǒng)計(jì)目錄(或文件)所占磁盤空間的大小。
語法:du [選項(xiàng)] [Names…]
說明:該命令逐級進(jìn)入指定目錄的每一個子目錄并顯示該目錄占用文件系統(tǒng)數(shù)據(jù)塊(1024字節(jié))的情況。若沒有給出Names,則對當(dāng)前目錄進(jìn)行統(tǒng)計(jì)。
該命令的各個選項(xiàng)含義如下:
-s 對每個Names參數(shù)只給出占用的數(shù)據(jù)塊總數(shù)。
-a 遞歸地顯示指定目錄中各文件及子孫目錄中各文件占用的數(shù)據(jù)塊數(shù)。若既不指定-s,也不指定-a,則只顯示Names中的每一個目錄及其中的各子目錄所占的磁盤塊數(shù)。
-b 以字節(jié)為單位列出磁盤空間使用情況(系統(tǒng)缺省以k字節(jié)為單位)。
-k 以1024字節(jié)為單位列出磁盤空間使用情況。
-c 最后再加上一個總計(jì)(系統(tǒng)缺省設(shè)置)。
-l 計(jì)算所有的文件大小,對硬鏈接文件,則計(jì)算多次。
-x 跳過在不同文件系統(tǒng)上的目錄不予統(tǒng)計(jì)。
下面舉例說明du命令的使用:
例1:查看/mnt目錄占用磁盤空間的情況。
$ cd /mnt $ ls -lFR total 10 -rwxrwxrwx 2 root root ll0 Ju1 3l 00:33 aa*
drwxr-xr-x 2 root root l024 Ju1 20 14:16 dev/
-rw-r--r-- 1 root root 6229 Aug 2 0l:39 s1ack
drwxrwxrwx 2 root root 1024 Aug 2 02:09 var/
1rwxrwxrwx 1 root root l0 Aug 2 0l:51 wei-/home/wei/
dev:
tota1 0
lrwxrwxrwx 1 root root 8 Ju1 20 l4:l6 cdrom-/dev/hdb
var:
tata1 37
-r-xr-xr-x l root root 36064 Aug 2 02:09 rawrite. exe*
例2:列出各目錄所占的磁盤空間,但不詳細(xì)列出每個文件所占的空間。
$ du
l . /dev
38 . /var
48 .
輸出清單中的第一列是以塊為單位計(jì)的磁盤空間容量,第二列列出目錄中使用這些空間的目錄名稱。 注意不帶選項(xiàng)的du命令將從當(dāng)前目錄開始沿著目錄結(jié)構(gòu)向下工作直到列出所有目錄的容量為止。這可能是一個很長的清單,有時(shí)只需要一個總數(shù)。這時(shí)可在du命令中加-s選項(xiàng)來取得總數(shù):
$ du –s /mnt
/mnt
例3:列出所有文件和目錄所占的空間(使用a選項(xiàng)),而且以字節(jié)為單位(使用b選項(xiàng))來計(jì)算大小。
$ du -ab
8 ./dev/cdrom
l032 ./dev
36064 ./var/rawrite. exe
37088 ./var
6229 ./s1ack
1l0 ./aa
l0 ./wei
45493 .
磁 盤 操 作
dd命令
功能:把指定的輸入文件拷貝到指定的輸出文件中,并且在拷貝過程中可以進(jìn)行格式轉(zhuǎn)換。可以用該命令實(shí)現(xiàn)DOS下的diskcopy命令的作用。先用dd命令把軟盤上的數(shù)據(jù)寫成硬盤的一個寄存文件,再把這個寄存文件寫入第二張軟盤上,完成diskcopy的功能。需要注意的是,應(yīng)該將硬盤上的寄存文件用rm命令刪除掉。系統(tǒng)默認(rèn)使用標(biāo)準(zhǔn)輸入文件和標(biāo)準(zhǔn)輸出文件。
語法:dd [選項(xiàng)]
if =輸入文件(或設(shè)備名稱)。
of =輸出文件(或設(shè)備名稱)。
ibs = bytes 一次讀取bytes字節(jié),即讀入緩沖區(qū)的字節(jié)數(shù)。
skip = blocks 跳過讀入緩沖區(qū)開頭的ibs*blocks塊。
obs = bytes 一次寫入bytes字節(jié),即寫入緩沖區(qū)的字節(jié)數(shù)。
bs = bytes 同時(shí)設(shè)置讀/寫緩沖區(qū)的字節(jié)數(shù)(等于設(shè)置ibs和obs)。
cbs = byte 一次轉(zhuǎn)換bytes字節(jié)。
count=blocks 只拷貝輸入的blocks塊。
conv = ASCII 把EBCDIC碼轉(zhuǎn)換為ASCIl碼。
conv = ebcdic 把ASCIl碼轉(zhuǎn)換為EBCDIC碼。
conv = ibm 把ASCIl碼轉(zhuǎn)換為alternate EBCDIC碼。
conv = block 把變動位轉(zhuǎn)換成固定字符。
conv = ublock 把固定位轉(zhuǎn)換成變動位。
conv = ucase 把字母由小寫轉(zhuǎn)換為大寫。
conv = lcase 把字母由大寫轉(zhuǎn)換為小寫。
conv = notrunc 不截短輸出文件。
conv = swab 交換每一對輸入字節(jié)。
conv = noerror 出錯時(shí)不停止處理。
conv = sync 把每個輸入記錄的大小都調(diào)到ibs的大?。ㄓ肗UL填充)。
例1:要把一張軟盤的內(nèi)容拷貝到另一張軟盤上,利用/tmp作為臨時(shí)存儲區(qū)。把源盤插入驅(qū)動器中,輸入下述命令:
$ dd if =/dev/fd0 of = /tmp/tmpfile
拷貝完成后,將源盤從驅(qū)動器中取出,把目標(biāo)盤插入,輸入命令:
$ dd if = /tmp/tmpfile of =/dev/fd0
軟盤拷貝完成后,應(yīng)該將臨時(shí)文件刪除:
$ rm /tmp/tmpfile
例2:把net.i這個文件寫入軟盤中,并設(shè)定讀/寫緩沖區(qū)的數(shù)目。 (注意:軟盤中的內(nèi)容會被完全覆蓋掉)
$ dd if = net.i of = /dev/fd0 bs = 16384
例3:將文件sfile拷貝到文件 dfile中。
$ dd if=sfile of=dfile
fdformat 命令
軟盤是用戶常用的存儲介質(zhì)之一。軟盤在使用之前必須先作格式化操作,然后可以用tar、dd、cpio等命令存儲數(shù)據(jù),也可以在軟盤上建立可安裝的文件系統(tǒng)。
功能:低級格式化軟盤
語法:format [-n] device
說明:該命令的作用是對軟盤進(jìn)行格式化。
-n 軟盤格式化后不作檢驗(yàn)。
device 指定要進(jìn)行格式化的設(shè)備,通常是下述設(shè)備之一:
/dev/fd0d360
/dev/fd0h1200
/dev/fd0D360
/dev/fd0H360
/dev/fd0D720
/dev/fd0H720
/dev/fd0h360
/dev/fd0h720
/dev/fd0H1440
在Linux下一切資源皆文件,普通文件是文件,磁盤打印機(jī)是文件,socket 當(dāng)然也是文件。
關(guān)于Linux下系統(tǒng),進(jìn)程能最大能打開的文件描述符數(shù)看過好多文章,但大都沒有完整,詳細(xì)說明每個值表示什么意思,在實(shí)踐中該怎么設(shè)置?
如何通過最簡單的設(shè)置來實(shí)現(xiàn)最有效的性能調(diào)優(yōu),如何在有限資源的條件下保證程序的運(yùn)作?
max-file 表示系統(tǒng)級別的能夠打開的文件句柄的數(shù)量,是對整個系統(tǒng)的限制,并不是針對用戶的。
ulimit -n 控制進(jìn)程級別能夠打開的文件句柄的數(shù)量,提供對shell及其啟動的進(jìn)程的可用文件句柄的控制,這是進(jìn)程級別的。
對于服務(wù)器來說,file-max和ulimit都需要設(shè)置,否則會出現(xiàn)文件描述符耗盡的問題。
一般如果遇到文件句柄達(dá)到上限時(shí),會碰到"Too many open files"或者Socket/File: Can’t open so many files等錯誤。
相關(guān)的3個文件:
/proc/sys/fs/file-max
/proc/sys/fs/file-nr
/etc/security/limits.conf
/proc/sys/fs/file-max
Linux系統(tǒng)級別限制所有用戶進(jìn)程能打開的文件描述符總數(shù)。
max-file 表示系統(tǒng)級別的能夠打開的文件句柄的數(shù)量,是對整個系統(tǒng)的限制,并不是針對用戶的。
/etc/security/limits.conf
用戶級別的限制是通過可以通過命令ulimit命令和文件/etc/security/limits.conf
/proc/sys/fs/file-nr 該參數(shù)是只讀的,不能修改。
file-nr的值由3部分組成:
1,已經(jīng)分配的文件描述符數(shù);
2,已經(jīng)分配但未使用的文件描述符數(shù);
3,內(nèi)核最大能分配的文件描述符數(shù)
/proc/${pid}/fd
眾所周知,在相應(yīng)進(jìn)程的/proc/$pid/fd 目錄下存放了此進(jìn)程所有打開的fd。
當(dāng)然有些可能不是本進(jìn)程自己打開的,如通過fork()從父進(jìn)程繼承而來的。
那么這個socket:后面的一串?dāng)?shù)字是什么呢?其實(shí)是該socket的inode號。
那么,知道了某個進(jìn)程打開的socket的inode號后,我們可以做什么呢?
這就涉及到/proc/net/tcp(udp對應(yīng)/proc/net/udp)文件了,其中也列出了相應(yīng)socket的inode號通過比對此字段,我們能在/proc/net/tcp下獲得此套接口的其他信息,如對應(yīng)的本地地址:端口號,遠(yuǎn)端地址:端口號對,窗口大小,狀態(tài)等信息。
具體字段含義詳見net/ipv4/tcp_ipv4.c 中的 tcp4_seq_show 函數(shù)。
如果socket創(chuàng)建了,沒有被使用,那么就只會在/proc/pid/fd下面有,而不會在/proc/net/下面有相關(guān)數(shù)據(jù)。
目錄中的每一項(xiàng)都是一個符號鏈接,指向打開的文件,數(shù)字則代表文件描述符。
其中0 = /dev/null ,1 = stdout, 2 = stderr,用cat或tail查看即可。
Number of file descriptors: different between /proc/sys/fs/file-nr and /proc/$pid/fd?
Linux中最大文件描述符數(shù)
How do linux file descriptor limits work?
limits.conf(5) - Linux man page
Why can't I tail -f /proc/$pid/fd/1 ?
Linux查看進(jìn)程運(yùn)行輸出(/proc/<pid>/fd)