linux命名详解及其软件安装实例
始于cd,ls命令
好啦,步入正題,我使用的linux連接工具為xshell,mRemoteNG,對兩款工具不做介紹啦,你可以百度一下,實在不會入左上方群。
進入之后,便是上面的界面黑乎乎一片,對于初學者也可能是一片懵逼,猶如狗拿刺猬,那么不要急,我們先來看下人生中的第一個linux命令:ls 與 cd 。
首先你先使用下面的cd命令:
[root@localhost ~]# ? 這個是當前用戶的用戶文件夾主目錄
[root@localhost ?/]# ? 這個是整個系統的根目錄
緊接著輸入ls命令展示出一下結果。
那么這些文件都裝載啦什么東東,為什么要放在根目錄下,接下來我們對此做個詳解。
ls,cd命令的語法與參數使用方法:http://man.linuxde.net? ,不能偷懶哦,要敲敲, 你才能學好,多敲才能記住的。
Linux的文件種類,擴展名
在linux中,任何設備都是文件,就連數據通信接口也有專門的文件負責。所以我們要搞清楚linux下的文件有哪些?哪些作用?
首先我們這樣輸入命令,如下:
亂七八糟的都是什么呢?我拿dev這個文件夾做為示例分解下:
1、文件類型
普通文件:就是我們一般的文件,他在linux中按照文件內容大致分文3種。
- 純文本文件(ASCII):內容直接被我們讀到,如數字,字母等,幾乎我們可以設置讀寫的文件都是這一種,他可以通過cat命令打開,直接查看內容。
- 二進制文件(binary):linux唯一可以識別執行的文件,在系統中可執行文件就是這種格式,例如:剛剛執行的cat就是一個二進制文件。
- 數據格式文件(data):程序在運行過程中讀取的特定格式文件,就是數據文件,比如:用戶登錄的用戶數據記錄在/var/log/wtmp這個數據格式文件中。比較明顯的特征使用last可以讀出來,cat讀時是亂碼。
塊(block)設備文件:為一些存儲數據,以體統隨機訪問的接口設備,如硬盤,軟盤等,可以隨機的在硬盤的不同塊讀寫,可以看看/dev/sda
字符(character)設備文件:一些串行端口的接口設備,如鍵盤、鼠標等。這些設備的特征就是“一次性讀取”的,不能夠截斷輸出。例如:鼠標只能滑動到一個地方而不能跳到另外一個地方。
套字節(sockets):這種文件類型用于在網絡上的數據連接。
管道(FIFO,pipe):fifo,first-in-first-out,主要解決多個程序同事訪問一個文件所造成的錯誤問題。
目錄(directory):就是目錄。
連接文件(link):類似windows系統中的快捷鍵。
?2、文件權限r-xr-xr-x
- 縮寫字母的意義:x:可執行,r:可讀,w:可寫,-占位。
- 123:擁有者權限,456:用戶組用戶權限,789:其他用戶權限。
- 特征順序為rwx。
3、連接數:表示有多少文件名連接到此節點。
4、文件名
- linux中沒有像windows中所謂的擴展名。但是為啦方便認識還是要有寫擴展名的習慣。
-
文件長度限制,一般不要超過255個字符就好。
- 文件命名限制,最好避免*?><;&|、\'"(){}
文件目錄結構
當你打開linux系統之后,輸入命令:cd \ 進入根目錄之后,再ls會顯示出如下目錄結構
那么這些目錄都有存放些什么文件,我們的文件又該以何種規范來存放呢?
Linux目錄結構標準:FHS(Filesystem Hierarchy Standard)標準
為什么要使用一個標準呢?很簡單,就是讓用戶和廠商有個共同的認識與約束,不至于各自為政,把linux系統的目錄搞的亂七八糟,東西隨便放,那我們的學習成本就很大啦。
關于FHS網上有很多介紹,FHS根據多去的經驗也一直在持續改版(http://www.pathname.com/fhs/),FHS根據文件系統使用的頻繁情況,是否允許用戶隨意改動,將目錄定義成4種交互作用的形態,如下:
- 可分享的:可以分享給其他系統掛載使用的目錄。
- 不可分享的:僅與自身機器有關,不適合分享給其他主機的。如自己機器上運行的設備文件或者與程序有關的socket文件。
- 不變的:不會經常變動的數據,如說明文件,函數庫,主機服務配置文件等。
- 可變動的:經常會改變的數據,如登錄文件,新聞組等。
根目錄與根目錄下的文件夾存放說明
根目錄是整個系統最重要的一個目錄,因為所有的目錄都是由它衍生出來,而且根目錄也與開機,還原,系統修復等操作有關。
由于系統開機需要特定的開機軟件、內核文件、開機所需要的程序、函數庫等文件數據,若系統出現異常時,根目錄也要有能夠修復文件系統的程序。由此可見根目錄的重要性,所以FHS建議,根目錄不要放在非常大的分區內,因為越大防止的文件越多,出錯的幾率也越大,性能也越不好,所以,根目錄應該越小越好,且應用程序所安裝的軟件最好不要與根目錄放在一個分區內。
由此我們來說說下面的文件都是什么,又怎么放置才好。
其實,FHS標準對根目錄的定義僅有如下的目錄數據。
其中有5個目錄不可與根目錄分開放在不同的分區。這5個目錄分別為:etc,bin,dev,lib,sbin。
那么除啦以上的文件夾之外,還有一些linux系統中也非常重要的目錄如下:
/dev目錄:
- hd[a-t]:IDE設備
- sd[a-z]:SCSI設備
- fd[0-7]:標準軟驅
- md[0-31]:軟raid設備
- loop[0-7]:本地回環設備
- ram[0-15]:內存
- null:無限數據接收設備,相當于黑洞
- zero:無限零資源
- tty[0-63]:虛擬終端
- ttyS[0-3]:串口
- lp[0-3]:并口
- console:控制臺
- fb[0-31]:framebuffer
- cdrom => /dev/hdc
- modem => /dev/ttyS[0-9]
- pilot => /dev/ttyS[0-9]
- random:隨機數設備
- urandom:隨機數設備
/etc目錄
- /etc/rc,/etc/rc.d,/etc/rc*.d : 啟動、或改變運行級時運行的scripts或scripts的目錄。
- /etc/passwd: 用戶數據庫,其中的域給出了用戶名、真實姓名、家目錄、加密的口令和用戶的其他信息。
- /etc/fstab :啟動時mount -a命令(在/etc/rc 或等效的啟動文件中)自動mount的文件系統列表。Linux下,也包括用swapon -a啟用的swap區的信息。
- /etc/group :類似/etc/passwd ,但說明的不是用戶而是用戶組。
- /etc/inittab :init 的配置文件,設定系統啟動時init進程將把系統設置成什么樣的runlevel 。
- /etc/issue getty 在登錄提示符前的輸出信息.通常包括系統的一段短說明或歡迎信息內容由系統管理員確定。
- /etc/motd: Message Of The Day,成功登錄后自動輸出內容由系統管理員確定,經常用于通告信息,如計劃關機時間的警告。
- /etc/mtab: 當前安裝的文件系統列表.由scripts初始化,并由mount 命令自動更新,需要一個當前安裝的文件系統的列表時使用,例如df 命令。
- /etc/shadow: 在安裝了影子口令軟件的系統上的影子口令文件.影子口令文件將/etc/passwd 文件中的加密口令移動到/etc/shadow 中,而后者只對root可讀這使破譯口令更困難.
- /etc/login.defs: login 命令的配置文件。
- /etc/printcap: 類似/etc/termcap ,但針對打印機語法不同。
- /etc/profile , /etc/csh.login , /etc/csh.cshrc :登錄或啟動時Bourne或C shells執行的文件,這允許系統管理員為所有用戶建立全局缺省環境。
- /etc/securetty: 確認安全終端,即哪個終端允許root登錄.一般只列出虛擬控制臺,這樣就不可能(至少很困難)通過modem或網絡闖入系統并得到超級用戶特權。
- /etc/shells: 列出可信任的shell.chsh 命令允許用戶在本文件指定范圍內改變登錄shell.提供一臺機器FTP服務的服務進程ftpd 檢查用戶shell是否列在 /etc/shells 文件中,如果不是將不允許該用戶登錄.
- /etc/sysconfig :網絡配置相關目錄
- /etc/DIR_COLORS: 設定顏色
- /etc/HOSTNAME: 設定用戶的節點名
- /etc/NETWORKING: 只有YES標明網絡存在
- /etc/host.conf: 文件說明用戶的系統如何查詢節點名
- /etc/hosts: 設定用戶自已的IP與名字的對應表
- /etc/hosts.allow: 設置允許使用inetd的機器使用
- /etc/hosts.deny: 設置不允許使用inetd的機器使用
- /etc/hosts.equiv: 設置遠端機不用密碼
- /etc/inetd.conf: 設定系統網絡守護進程inetd的配置
- /etc/inetd.pid :inetd這個進程的進程id
- /etc/hosts.lpd :設定遠端有哪些節點可以使用本機的打印機
- /etc/gateways: 設定路由器
- /etc/protocols: 設定系統支持的協議
- /etc/named.boot: 設定本機為名字服務器的配置文件
- /etc/named.pid: 本機上運行的名字服務器的進程id
- /etc/networks :設定網絡的配置文件
- /etc/resolv.conf :設定系統的名字服務器
- /etc/services: 設定系統的端品與協議類型和提供的服務
- /etc/exports: 設定NFS系統用的
- /etc/NNTP_INEWS_DOMAIN: 設置新聞服務器的配置文件
- /etc/nntpserver: 設置用戶使用的新聞服務器的地址
- /etc/XF86Config: X Window的配置文件
- /etc/hostid: 系統獨有的一個硬件id
- /etc/at.deny: 設置哪些用戶不能使用at命令
- /etc/bootptab: 給MAKEDEV程序設定各種不同的設備驅動文件的格式
- /etc/makedev.cfg: 同DEVINFO一樣給MAKEDEV使用的設置文件
- /etc/diphosts: 設置拔號服務器的用戶名和口令
- /etc/slip.hosts,/etc/slip.login: 設定SLIP的配置文件
- /etc/fastboot: 使用shutdown -f產生的,重啟系統要查這個文件
- /etc/fstab: 記錄開機要mount的文件系統
- /etc/ftpaccess: FTP服務器的一些配置
- /etc/ftpconversions: 設定在FTP時使用的過濾器的位置
- /etc/ftpusers: 設定不能使用FTP服務的用戶
- /etc/ld.so.cache: 查找系統動態鏈接庫的緩存
- /etc/ld.so.conf: 系統動態鏈接庫的路徑
- /etc/lilo.conf lilo:的配置文件
- /etc/magic: 給file命令使用的
- /etc/aliases :給sendmail使用的設置別名的文件
- /etc/sendmail.st: 設置sendmail的
- /etc/motd: 超級用戶發布通知的地方
- /etc/organization: 存放用戶的名字和組織
- /etc/pnpdevices: 列出支持的Plug&Play設備
- /etc/snooptad: 監控用戶的屏幕,監聽的終端列表
- /etc/sudoers: 可以sudo命令的配置文件
- /etc/syslog.conf: 系統記錄程序syslogd的配置文件
- /etc/utmp: 目前在用系統的用戶信息
- /etc/wtmp: 同utmp差不多,只是它累加
- /etc/nologin: 系統在shutdown時不希望用戶登錄就產生這個文件
- /etc/termcap: 設置系統終端信息的
- /etc/ttys: 設定系統的終端類型
- /etc/gettydefs: getty_ps的定義文件
- /etc/yp.conf: NIS的配置文件
- /etc/mtools.conf: 設定mtools程序的參數
- /etc/fdprm: 設定格式化軟盤的參數
- /etc/login.access: 控制用戶登錄權限的文件
/proc目錄
- /proc/cmdline: 加載 kernel 時所下達的相關參數,查閱此文件,可了解系統是如何啟動。
- /proc/cpuinfo: 本機的 CPU 的相關資訊,包含時脈、類型與運算功能等
- /proc/devices: 這個文件記錄了系統各個主要裝置的主要裝置代號,與 mknod 有關。
- /proc/filesystems: 目前系統已經加載的文件系統。
- /proc/interrupts: 目前系統上面的 IRQ 分配狀態。
- /proc/ioports: 目前系統上面各個裝置所配置的 I/O 位址。
- /proc/kcore: 這個就是內存的大小,但是不要讀他。
- /proc/loadavg: 還記得 top 以及 uptime 吧?沒錯,上頭的三個平均數值就是記錄在此。
- /proc/meminfo: 使用 free 列出的內存資訊,在這里也能夠查閱到。
- /proc/modules: 目前我們的 Linux 已經加載的模塊列表,也可以想成是驅動程序。
- /proc/mounts: 系統已經掛載的數據,就是用 mount 這個命令呼叫出來的數據。
- /proc/swaps: 到底系統掛加載的內存在哪里?使用掉的 partition 就記錄在此啦。
- /proc/partitions: 使用 fdisk -l 會出現目前所有的 partition 吧?在這個文件當中也有紀錄。
- /proc/pci: 在 PCI 匯流排上面,每個裝置的詳細情況,可用 lspci 來查閱。
- /proc/uptime: 就是用 uptime 的時候,會出現的資訊。
- /proc/version: 核心的版本,就是用 uname -a 顯示的內容。
- /proc/bus/*: 一些匯流排的裝置,還有 U盤 的裝置也記錄在此。
/usr目錄
依據FHS的基本定義/usr里面放置的數據屬于可分享不可變動的。usr是UNIX Software Resource的縮寫,也就是“UNIX操作系統軟件資源”所放置的目錄,而不是用戶數據,不要跟user扯上關系。它相當于windows系統中的c:\windows與c:program files這兩個目錄的綜合體。剛裝完系統時,這個目錄占用的硬盤容量最多。因為幾乎所有的應用程序都安裝在這里,本地安裝的程序和其他東西放在/usr/local下。
- /usr/etc: 存放配置文件。
- /usr/games: 存放游戲和教學文件。
- /usr/include: c/c++等程序語言的頭文件與包含文件放置處,當我們以tarball方式(*.tar.gz的方式安裝軟件)安裝某些數據時,會使用到里面的許多包含文件。開發和編譯應用程序所需要的頭文件。
- /usr/share:放置共享文件的地方,在這個目錄下放置的數據幾乎是不分硬件架構均可讀取的數據,因為幾乎都是文本文件。如/usr/share/man:在線幫助文件,/usr/share/doc:軟件雜項的文件說明,zoneinfo:與時區相關的文件。
- /usr/bin: 絕大部分用戶可使用的命令都放在這里。有些命令在/bin(是否與開機過程有關) 或/usr/local/bin 中。
- /usr/sbin :根文件系統不必要的系統管理命令,例如多數服務程序。
- /usr/share/man , /usr/share/info , /usr/share/doc: 手冊頁、GNU信息文檔和各種其他文檔文件。
- /usr/lib:?包含各應用軟件的函數庫,目標文件,以及不被一般用戶慣用的執行文件或腳本。某些軟件會提供一些特殊的命令來進行服務器的設置,這些命令也不會經常被系統管理員操作,那就被放在這個目錄下。
- /usr/local:管理員在本機自己安裝自己下載的軟件,建議安裝到此目錄。該目錄也具有bin,etc,include,lib。
- /usr/src: 存放程序的源代碼,linux內核的源代碼存放在/usr/src/kernels。
/var目錄
usr是安裝時占用大量的硬盤容量,而var則是在系統運行后才會慢慢占用硬盤的容量。因為var目錄主要針對常態性變動的文件,比如,緩存,登錄文件,以及某些軟件運行所產生的文件,包括程序文件(lock file,run file)。
- /var/catman:當要求格式化時的man頁的cache.man頁的源文件一般存在/usr/man/man* 中;有些man頁可能有預格式化的版本,存在/usr/man/cat* 中.而其他的man頁在第一次看時需要格式化,格式化完的版本存在/var/man 中,這樣其他人再看相同的頁時就無須等待格式化了. (/var/catman 經常被清除,就象清除臨時目錄一樣.)
- /var/lib:系統正常運行時要改變的文件。
- /var/local,/usr/local:中安裝的程序的可變數據(即系統管理員安裝的程序).注意,如果必要,即使本地安裝的程序也會使用其他/var 目錄,例如/var/lock 。
- /var/lock:鎖定文件.許多程序遵循在/var/lock 中產生一個鎖定文件的約定,以支持他們正在使用某個特定的設備或文件.其他程序注意到這個鎖定文件,將不試圖使用這個設備或文件。
- /var/log:各種程序的Log文件,特別是login (/var/log/wtmp log所有到系統的登錄和注銷) 和syslog (/var/log/messages 里存儲所有核心和系統程序信息. /var/log 里的文件經常不確定地增長,應該定期清除。
- /var/run:某些程序或者服務啟動后,會將他們的pid放置在這個目錄下。保存到下次引導前有效的關于系統的信息文件.例如, /var/run/utmp 包含當前登錄的用戶的信息。
- /var/spool:放置一些隊列數據,就是排隊等待其他程序使用的數據。這些數據被使用后通常都會被刪除。例如,系統收到新信件會放置到/var/spool/mail中,用戶收下后,該信件原則上時會被刪除。信件如果暫時寄不出去會被放到/var/spool/mqueue中,等到被送出去就被刪除。如果是工作排程數據,就會被放置到/var/spool/cron目錄中。
- /var/tmp 比/tmp:允許的大或需要存在較長時間的臨時文件。 (雖然系統管理員可能不允許/var/tmp 有很舊的文件.)
- /var/cache:應用程序本身運行過程中會產生的一些暫存文件。
LIUNX系統的目錄樹,如下:
Linux系統中文件的壓縮打包功能?
壓縮:是一種通過特定的算法來減小計算機文件大小的機制(百度百科下)。
打包:將多個文件放入一個文件中,最終以一個文件的形式存在。
Linux系統中常見的壓縮命令有三種:compress , gzip , bzip2 。
- compress:這個壓縮命令僅存在古老的unix機器上,是一個很古老的壓縮方式,被gzip所取代,gzip也可以解壓commress的壓縮文件。所以我這里不做過多介紹,有需求的朋友可以:http://man.linuxde.net/compress? 我這里給一個截圖如下:
- gzip:這個壓縮命令在目前來說算是最常見的,它可以解開compress\zip\gzip等軟件所壓縮的文件。有9個壓縮等級,1最快壓縮比最差,9最慢壓縮比最好,默認為6。使用zcat命令可以查看讀取compress與gzip的壓縮文件。對文本的壓縮率可達到:60%-70%,可配合tar使用。
- bzip:如果說gzip是用來取代compress的,那么bzip就是為了取代gzip而存在的。他的壓縮率竟然比gzip還要好,可配合tar使用。
gzip的常用用法:
語法:gzip ?參數 ?文件名
參數:
-c:將壓縮的數據輸出到屏幕上,可通過數據重定向來處理。
-d:解壓的參數
-t:可以用來檢驗一個壓縮文件的一致性,看看文件是否有錯誤。
-v:可以顯示出源文件/壓縮文件的壓縮比信息。
-#:壓縮等級,1-9。
常用的語句:壓縮:gzip -v filename ?,解壓:gzip -d filename 。 查看文本壓縮文件:zcat 文件名。
bzip2的常用用法:
語法:bzip2 參數 文件名
參數:
-c:將壓縮過程中產生的數據輸出到屏幕上
-d:解壓縮
-k:保留源文件,而不會刪除原始文件
-z:壓縮
-v:顯示出源文件/壓縮文件的壓縮比等信息。
-#:與gzip相同,1-9壓縮比的參數,1最快,9最佳。
常用的語句:壓縮:bzip2 -z ?filename ,解壓:bzip2 -d filename 。查看壓縮文本:bzcat filename.bz2
tar打包命令
以上三種壓縮解壓只能針對單文件執行,那么如果將多個文件合并到一個大文件中,怎么做到呢?那就要用tar這個命令。tar不止這么多,它還支持gzip/bzip2在打包的同時對文件進行壓縮。由于這tar使用過于廣泛,就連windows中的WinRAR也支持.tar.gz文件名的解壓縮。
語法:打包與壓縮:tar ?[-j|-z] [cv] [-f 新建的文件名] filename ? ? 解壓縮: tar [-j|-z] [xv] [-f 新建的文件名] [-C 目錄]
參數:
-c:新建打包文件,可搭配-v來查看過程中被打包的文件名
-t:查看打包文件的內容含有那些文件名,重點在查看文件
-x:解壓縮或解打包的功能,可搭配-C在特定目錄解開。特別留意的是,-c,-t,-x不可同時出現在一串命令中。
-j:通過bzip2的支持進行壓縮或解壓。
-z:通過gzip的支持進行壓縮或解壓。
-v:在壓縮或解壓的過程中,將正在處理的文件名稱顯示出來。
-f filename:-f后面要接被處理的文件名。建議-f單獨寫一個參數。
-C 目錄:這個參數在解壓時,若要在特定目錄解壓縮,可以使用這個參數。
?
.tar.bz2 格式常用的語法
解壓: tar jxvf filename.tar.bz2 , 壓縮: tar jcvf filename.tar.bz2 ?要壓縮的文件
.tar.gz 格式常用的語法
解壓:tar zxvf filename.tar.gz ,壓縮: tar zcvf filename.tar.gz ?要壓縮的文件
?
Linux系統(二)軟件的安裝與卸載
序言?
上一篇我們了解啦Linux系統中,根目錄下的各個文件夾是做什么用的啦,也學會文件如何壓縮打包。那么接下來我們就該用到這個系統啦。用這個系統,就是用這個系統的軟件,那么我們對我們需要的軟件如何安裝,對不需要的軟件如何卸載,本篇就此做個詳解。
我們針對的系統為Centos,那么Centos的主要軟件管理有3種,源碼與tarball,rpm與srpm,yum。
我會在講解每一種安裝方式的同時,寫一個我們開發常用到的軟件實例的安裝,源碼安裝redis,rpm安裝rabbitmq,yum安裝nginx。?
源碼與tarball方式安裝軟件的幾個名詞
在安裝之前我們先說幾個名詞,對于開發人員來說應該是一目了然的。
開放源碼:就是用編程語言寫的程序代碼,人懂機器不懂,無法在系統中執行。
編譯程序:將程序代碼轉譯成為機器看得懂的語言。
gcc:Liunx系統中最常見的語言為c語言,而c語言在linux上面最標準的編譯程序就是gcc。它是由GNU計劃所維護。對GNU有興趣的話大家可以網上搜下資料。
利用gcc編譯器進行程序的編譯流程示意圖:
?
可執行文件:經過編譯程序變成二進制程序后機器能夠看得懂所以稱為可執行的文件。
函數庫:類似子程序的角色,可以被調用來執行的一段功能函數。又分為動態函數庫與靜態函數庫,動態函數庫以so結尾,通常被命名為libxxx.so,編譯時程序中只保存起指向地址,不合并到主程序中,所以主程序不能獨立運行,需包含動態庫,且動態庫不可隨意修改路徑。靜態函數庫以.a結尾,通常被命名為libxxx.a,編譯時會將其功能合并至主程序中,運行是不需要靜態庫的支持。
程序執行時引用外部動態函數庫的示意圖如下:
Tarball:這個更容易理解啦,就是為啦方面在網絡上下載,軟件開發者把源碼打包壓縮后,放到網上發布的軟件文件。一般包含,源代碼文件,檢測程序文件(可能是configure或config等文件名),本軟件的簡易說明與安裝說明(install或readme)。
Tarball方式安裝Redis實例演練
基本步驟:
1、下載源文件至/usr/local/src目錄下解壓縮。
2、取得步驟流程:進入新建的目錄下面,去查閱install與readme等相關文件內容。
3、相關屬性軟件安裝:根據install與readme的內容查看并安裝好一些相關的軟件
4、建立makefile:以自動檢測程序(configure或config)檢測操作環境,并建立makefile這個文件
5、編譯:以make這個程序并使用該目錄下的makefile作為他的參數配置文件,進行make(編譯)操作
安裝:以make這個程序,并以makefile這個參數配置文件,依據install這個目標的指定來安裝到正確的路徑。?
常用命令:
./configure:這個步驟就是在創建 Makefile 這個文件啰!通常程序開發者會寫一支 scripts 來檢查你的 Linux 系統、相關的軟件屬性等等,這個步驟相當的重要, 因為未來你的安裝信息都是這一步驟內完成的!另外,這個步驟的相關信息應該要參考一下該目錄下的 README 或 INSTALL 相關的文件!
make clean:make 會讀取 Makefile 中關于 clean 的工作。這個步驟不一定會有,但是希望執行一下,因為他可以去除目標文件!因為誰也不確定源代碼里面到底有沒有包含上次編譯過的目標文件 (*.o) 存在,所以當然還是清除一下比較妥當的。 至少等一下新編譯出來的可執行文件我們可以確定是使用自己的機器所編譯完成的嘛!
make:make 會依據 Makefile 當中的默認工作進行編譯的行為!編譯的工作主要是進行 gcc 來將源代碼編譯成為可以被執行的 object files ,但是這些 object files 通常還需要一些函數庫之類的 link 后,才能產生一個完整的可執行文件!使用 make 就是要將源代碼編譯成為可以被執行的可可執行文件,而這個可可執行文件會放置在目前所在的目錄之下, 尚未被安裝到預定安裝的目錄中;
make install:通常這就是最后的安裝步驟了,make 會依據 Makefile 這個文件里面關于 install 的項目,將上一個步驟所編譯完成的數據給他安裝到預定的目錄中,就完成安裝啦!
通過configure與make進行編譯的示意圖如下:
Redis實例安裝:
下載:
解壓:
編譯:
設置配置參數:
?
啟動:
驗證使用redis:
總結下:其實在安裝某些軟件時,可能沒有那么繁瑣,就比如redis官方也有安裝示例,大家看看就會啦,安裝的方式有很多種,不必過于居于模式,但是一定要看官方的文檔,不能胡亂一起瞎搞。
rpm與srpm基礎理解
RPM全名是“RedHat Package Manager”,是RedHat公司發展出來的以一種數據庫記錄的方式來將你所需要的軟件安裝到linux系統的一套管理機制。
那么什么叫一種數據庫記錄的方式呢?就是開發發布者將軟件編譯過之后,打包成rpm基礎的包文件,包中的軟件都有頭文件,頭文件中記錄這個軟件需要依賴的軟件,所需的服務器配置,及自身版本的一些信息,當我們安裝這個軟件時,rpm會根據這個頭文件與liunx主機中的安裝軟件的記錄信息做匹配,然后反饋環境是否滿足,是否已存在,等等信息。
那么編譯過后的軟件,直接安裝有什么優缺點呢?優點不用編譯可快速安裝,缺點:我們安裝的主機環境必須要跟開發發布者編譯時的環境一致。
那么什么叫做依賴的軟件呢?很簡單就想你安裝MSSQL需要.NetFramwork一樣,安裝rabbitmq需要安裝erlang環境一樣。他們安裝時都有依賴的軟件或平臺。
那么rpm與srpm的區別是什么呢?一張圖搞定,如下:
rpm的包是什么樣子呢?
首先先掛載cdrom到media下
查看rpm什么樣子?
看看有多少自帶的Rpm包
哇自帶3725個,基本夠你用的啦。如果處理一些依賴軟件或者自帶的不能滿足你的話,除啦軟件官網下載之外,哥哥推薦三個網站:
http://rpm.pbone.net/
http://rpmfind.net/
http://www.rpmseek.com/index.html
Rpm命名規則
操作硬件平臺:
Rpm安裝語法:
[root@localhost ~]# rpm -ivh?package_name
選項與參數:
-i :install 的意思
-v :察看更細部的安裝信息畫面
-h :以安裝信息列顯示安裝進度
一般情況下這一句命令,配上系統自帶的rpm包與上面三個網站中的包就足夠啦,如果不能解決你的問題的話,那要查看軟件官方提供的安裝文檔。
如果你對軟件足夠的熟悉那么也可以采用下面的參數進行安裝。
Rpm的升級與更新
Rpm的查詢
Rpm驗證與數碼簽章
上面查詢是否被改動過中有......T. 這是什么意思呢??
- S :(file Size differs) 文件的容量大小是否被改變
- M :(Mode differs) 文件的類型或文件的屬性 (rwx) 是否被改變?如是否可執行等參數已被改變
- 5 :(MD5 sum differs) MD5 這一種指紋碼的內容已經不同
- D :(Device major/minor number mis-match) 設備的主/次代碼已經改變
- L :(readLink(2) path mis-match) Link 路徑已被改變
- U :(User ownership differs) 文件的所屬人已被改變
- G :(Group ownership differs) 文件的所屬群組已被改變
- T :(mTime differs) 文件的創建時間已被改變
- P :(caPabilities differ) 功能已經被改變
如果一個文件都被改動過,那么如下顯示:SM5DLUGTP c filename
至于那個 c 代表的是“ Config file ”的意思,也就是文件的類型,文件類型有下面這幾類:
- c :配置文件 (config file)
- d :文件數據文件 (documentation)
- g :鬼文件~通常是該文件不被某個軟件所包含,較少發生!(ghost file)
- l :授權文件 (license file)
- r :讀我文件 (read me)
Rpm反安裝與重建數據庫
rpm --rebuilddb ??==重建數據庫
Rpm安裝rabbitmq實戰?
首先打開rabbitmq.com官網,他的安裝頁有rpm包。安裝文檔指示我們安裝rabbitmq需要2大步驟。
1、先安裝erlang環境,2、安裝rabbitmq。
由此可知rabbitmq是依賴erlang環境的,下面我們先安裝下erlang。
[root@localhost src]# wget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_19.2~centos~7_amd64.rpm --2017-02-07 14:10:27-- https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_19.2~centos~7_amd64.rpm 正在解析主機 packages.erlang-solutions.com (packages.erlang-solutions.com)... 31.172.186.53 正在連接 packages.erlang-solutions.com (packages.erlang-solutions.com)|31.172.186.53|:443... 已連接。 已發出 HTTP 請求,正在等待回應... 200 OK 長度:43611864 (42M) [application/x-redhat-package-manager] 正在保存至: “esl-erlang_19.2~centos~7_amd64.rpm”100%[==================================================================================================================================>] 43,611,864 446KB/s 用時 80s 2017-02-07 14:12:04 (530 KB/s) - 已保存 “esl-erlang_19.2~centos~7_amd64.rpm” [43611864/43611864])[root@localhost src]# rpm -ivh esl-erlang_19.2~centos~7_amd64.rpm 錯誤:依賴檢測失敗:libodbc.so.2()(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_baseu-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_baseu-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_baseu_xml-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_adv-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_adv-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_aui-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_aui-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_aui-2.8.so.0(WXU_2.8.5)(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_core-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_core-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_core-2.8.so.0(WXU_2.8.10)(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_gl-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_gl-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_html-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_html-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_stc-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_stc-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_xrc-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要libwx_gtk2u_xrc-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要由此可見安裝erlang環境也是需要環境支持的。那么我們安裝erlang需要的安裝環境,那么我們首先需要安裝非默認的第三方yum庫。
[root@localhost bin]# yum install epel-release然后安裝erlang需要的安裝環境
[root@localhost bin]# yum install unixODBC unixODBC-devel wxBase wxGTK SDL wxGTK-gl 已加載插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* epel: mirror.premi.st* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com 軟件包 unixODBC-2.3.1-11.el7.x86_64 已安裝并且是最新版本 軟件包 unixODBC-devel-2.3.1-11.el7.x86_64 已安裝并且是最新版本 軟件包 wxBase-2.8.12-20.el7.x86_64 已安裝并且是最新版本 軟件包 wxGTK-2.8.12-20.el7.x86_64 已安裝并且是最新版本 軟件包 SDL-1.2.15-14.el7.x86_64 已安裝并且是最新版本 軟件包 wxGTK-gl-2.8.12-20.el7.x86_64 已安裝并且是最新版本然后就可以順利的把erlang安裝上啦
[root@localhost src]# rpm -ivh esl-erlang_19.2~centos~7_amd64.rpm最后安裝rabbitmq那也是順溜的很啦。
[root@localhost src]# rpm -ivh rabbitmq-server-3.6.6-1.el7.noarch.rpm啟動/關閉rabbitmq服務?
- Whereis rabbitmq 找到bin/rabbitmq-server
- ./rabbitmq-server 啟動 ?Starting?broker...?completed?with?0?plugins.??說明安裝成功。
- ./rabbitmq-server ?-detached?后臺啟動方式
- ./rabbitmqctl stop 關閉
啟動端口?
找到/etc/sysconfig/iptables?,如果不存在,隨便一個iptalbles命令即可出現,如iptables -F 清除iptables已有的所有規則。配置如下端口對外開放。?
[root@localhost src]# vim /etc/sysconfig/iptables #RabbitMQ?? -A?INPUT?-p?tcp?-m?state?--state?NEW?-m?tcp?--dport?15672?-j?ACCEPT?? -A?INPUT?-p?tcp?-m?state?--state?NEW?-m?tcp?--dport?25672?-j?ACCEPT?? -A?INPUT?-p?tcp?-m?state?--state?NEW?-m?tcp?--dport?5672?-j?ACCEPT?? -A?INPUT?-p?tcp?-m?state?--state?NEW?-m?tcp?--dport?4369?-j?ACCEPT?? -A?INPUT?-p?tcp?-m?state?--state?NEW?-m?tcp?--dport?5671?-j?ACCEPT?? #RabbitMQ??啟動插件?
./rabbitmq-plugins enable rabbitmq_management(執行一次以后不用再次執行)
客戶端打開管理頁面?
輸入:服務器地址:15672 ???默認gust,不可用。只能在服務端可用。
關于rabbitmq的詳細內容以后我還會補充,以前也有一篇我自己的博文,有興趣的可以點開看下:.Net使用Rabbitmq詳解
yum安裝軟件詳細
關于yum的使用是非常簡單的,大家可以看下?http://man.linuxde.net/yum?多敲敲練練就會啦。?
?
而文章一開始說yum方式安裝nginx,那么命令看仔細啦啊。
[root@localhost src]# yum install nginx對,你沒有看錯,在線安裝,自動解決軟件相互依賴問題,安裝成功啦,就是這么簡單。
這里值得一說的是yum的包源配置是在下面的文件中:
[root@localhost etc]# ll /etc|grep yum drwxr-xr-x. 6 root root 95 2月 7 20:09 yum -rw-r--r--. 1 root root 970 11月 15 23:30 yum.conf drwxr-xr-x. 2 root root 4096 2月 7 20:10 yum.repos.d在yum.repos.d這個文件夾下,你如何看懂文件中的內容,以及如何配置,那么你需要自行百度,我不想寫啦
?
主要內容:網絡,系統,cpu,內存,硬盤,進程等等常用的基礎信息查看與基礎功能設置。
Linux系統時間相關
查看系統當前時間
[root@zlhpc ~]# date 2017年 02月 09日 星期四 03:20:45 CST修改時間
[root@zlhpc sysconfig]# date -s "2016-02-09 15:15:00" 2016年 02月 09日 星期二 15:15:00 CST [root@zlhpc sysconfig]# date 2016年 02月 09日 星期二 15:15:05 CST同步網路時間
[root@zlhpc sysconfig]# ntpdate -u ntp.api.bz9 Feb 15:56:21 ntpdate[4132]: step time server 17.253.68.253 offset 31624839.558211 sec [root@zlhpc sysconfig]# date 2017年 02月 09日 星期四 15:56:27 CSTnote1:ntp是網絡時間協議,主要用作同步計算機時間與服務器時間一致的。常見的ntp服務器有:210.72.145.44(國家授時中心服務器地址),ntp.api.bz(上海),time.nist.gov(美國),ntp.fudan.edu.cn(復旦),s1b.time.edu.cn(清華大學),等等。
note2:date命令設置時間只有超級用戶才有,一般用戶只能查看,且修改玩之后要記得執行clock -w 命令,把系統時間寫入CMOS中。
Linux系統主機名與操作系統相關信息
顯示系統主機名
[root@zlhpc sysconfig]# hostname zlhpc修改主機名,需要同時修改/etc/hosts和/etc/sysconfig/network,且修改完之后需重啟機器生效且永久保存,使用hostname命令只能臨時修改不能永久有效。
[root@zlhpc sysconfig]# vim /etc/hostname -v:詳細信息模式; -a:顯示主機別名; -d:顯示DNS域名; -f:顯示FQDN名稱; -i:顯示主機的ip地址; -s:顯示短主機名稱,在第一個點處截斷; -y:顯示NIS域名。uname查看操作系統相關信息
[root@zlhpc /]# uname -a Linux zlhpc 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux數據依次為:內核名稱,主機名,內核版本號,內核版本,硬件名,處理器類型,硬件平臺類型,操作系統名稱
參數如下
- -m或–machine 顯示主機的硬件(CPU)名?
- -n或-nodename 顯示主機在網絡節點上的名稱或主機名稱?
- -r或–release 顯示linux操作系統內核版本號?
- -s或–sysname 顯示linux內核名稱?
- -v 顯示顯示操作系統是第幾個 version 版本?
- -p 顯示處理器類型或unknown?
- -i 顯示硬件平臺類型或unknown?
- -o 顯示操作系統名?
- –help 獲得幫助信息?
- –version 顯示uname版本信息?
其他幾種出去啊看Linux版本信息的方法
[root@zlhpc /]# cat /proc/version Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Nov 19 22:10:57 UTC 2015 [root@zlhpc /]# cat /etc/issue \S Kernel \r on an \m[root@zlhpc /]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.2.1511 (Core) Release: 7.2.1511 Codename: CoreLinux系統查看cpu信息
[root@zlhpc /]# grep "model name" /proc/cpuinfo #查看cpu信息 model name : Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz [root@zlhpc /]# more /proc/cpuinfo #查看cpu信息 processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 60 model name : Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz stepping : 3 microcode : 0x1e cpu MHz : 3591.678 cache size : 8192 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 [root@zlhpc /]# getconf LONG_BIT #查看cpu位數 64Linux系統用戶與用戶組
用戶與組分類,根據帳號或組的位置都可以分為:本地帳號|組,遠程(域)帳號|組 ,LDAP,NIS
根據帳號|組的功能分類可以分為:超級用戶(root) uid:0 ,普通用戶。普通用戶又分為:系統帳號(uid范圍:1-499,1-99:由distributions自行創建的系統帳號,100-499:若用戶有系統帳號的需求時,可以使用的帳號uid)和可登錄帳號(uid范圍:500+)
關于系統用戶和組的相關配置文件放在系統的一下文件中:
用戶的帳號信息:/etc/passwd 用戶的密碼信息:/etc/shadow
用戶組信息:/etc/group ?組的密碼信息:/etc/gshadow
那么下面我們一一打開這些文件來看看他們到底存放啦那些內容,格式是什么樣的,我們又該怎么解讀。
[root@zlhpc home]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:997:995:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin chrony:x:995:993::/var/lib/chrony:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin rabbitmq:x:994:992:RabbitMQ messaging server:/var/lib/rabbitmq:/bin/bash nginx:x:993:991:Nginx web server:/var/lib/nginx:/sbin/nologin每一行都代表一個用戶,每一行中的冒號(:)代表分割符,那我們拿第一行做一個解讀,如下:
root:x:0:0:root:/root:/bin/bash
查看系統中支持那些shell:
[root@zlhpc home]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh接下來我們看下用戶關于密碼的配置文件:
[root@zlhpc home]# cat /etc/shadow root:$6$zVDR2oO1Yg7alTbs$.70PPMYxg70k9BvLtjHdm94CDA1YWDRDI5NFzSfcmZF5WMESgIbLUdnqRjuVycg481Ny9rl//YzAFnXhurQi//::0:99999:7::: bin:*:16659:0:99999:7::: daemon:*:16659:0:99999:7::: adm:*:16659:0:99999:7::: lp:*:16659:0:99999:7::: sync:*:16659:0:99999:7::: shutdown:*:16659:0:99999:7::: halt:*:16659:0:99999:7::: mail:*:16659:0:99999:7::: operator:*:16659:0:99999:7::: games:*:16659:0:99999:7::: ftp:*:16659:0:99999:7::: nobody:*:16659:0:99999:7::: avahi-autoipd:!!:17203:::::: systemd-bus-proxy:!!:17203:::::: systemd-network:!!:17203:::::: dbus:!!:17203:::::: polkitd:!!:17203:::::: tss:!!:17203:::::: postfix:!!:17203:::::: sshd:!!:17203:::::: rpc:!!:17204:0:99999:7::: abrt:!!:17204:::::: libstoragemgmt:!!:17204:::::: chrony:!!:17204:::::: ntp:!!:17204:::::: tcpdump:!!:17204:::::: rabbitmq:!!:17204:::::: nginx:!!:17204::::::依然拿出第一行做一下解讀:
root:$6$zVDR2oO1Yg7alTbs$.70PPMYxg70k9BvLtjHdm94CDA1YWDRDI5NFzSfcmZF5WMESgIbLUdnqRjuVycg481Ny9rl//YzAFnXhurQi//::0:99999:7:::
查看關于組的配置文件,如下:
[root@zlhpc home]# head -n 4 /etc/group root:x:0: bin:x:1: daemon:x:2: sys:x:3:root:x:0:
接下來我們來看下帳號管理,關于帳號的增刪改查操作
1、添加用戶
[root@zlhpc home]# useradd zhanglonghao [root@zlhpc home]# useradd zhanglonghao1useradd (選項)(參數)
- -c<備注>:加上備注文字。備注文字會保存在passwd的備注欄位中;
- -d<登入目錄>:指定用戶登入時的啟始目錄;
- -D:變更預設值;
- -e<有效期限>:指定帳號的有效期限;
- -f<緩沖天數>:指定在密碼過期后多少天即關閉該帳號;
- -g<群組>:指定用戶所屬的群組;
- -G<群組>:指定用戶所屬的附加群組;
- -m:自動建立用戶的登入目錄;
- -M:不要自動建立用戶的登入目錄;
- -n:取消建立以用戶名稱為名的群組;
- -r:建立系統帳號;
- -s:指定用戶登入后所使用的shell;
- -u:指定用戶id。
修改用戶信息,參數選項和添加一致。
[root@zlhpc home]# usermod zhanglonghao -u 1005 [root@zlhpc home]# id zhanglonghao uid=1005(zhanglonghao) gid=1000(zhanglonghao) 組=1000(zhanglonghao)刪除用戶
[root@zlhpc home]# userdel zhanglonghao2 -rfuserdel,參數如下:如果不加下面的參數進行直接刪除,則用戶刪除,用戶的目錄與文件依舊保留。
- -f:強制刪除用戶,即使用戶當前已登錄;
- -r:刪除用戶的同時,刪除與用戶相關的所有文件。
把某個用戶添加到哪個組中:示例把用戶zhanglonghao添加到zhanglonghao1的組中,且也在原有的組中不被刪除,這是必須加 -a意思是附加的意思,如下:
[root@zlhpc home]# usermod zhanglonghao -a -G zhanglonghao1 [root@zlhpc home]# groups zhanglonghao zhanglonghao : zhanglonghao zhanglonghao1id查看用戶的id信息
[root@zlhpc home]# id zhanglonghao uid=1005(zhanglonghao) gid=1000(zhanglonghao) 組=1000(zhanglonghao),1001(zhanglonghao1)查看當前登錄系統的用戶信息
[root@zlhpc home]# who root pts/0 2017-02-12 15:01 (172.18.8.196) [root@zlhpc home]# users root [root@zlhpc home]# id -un root [root@zlhpc home]# whoami root [root@zlhpc home]# who root pts/0 2017-02-12 15:01 (172.18.8.196) [root@zlhpc home]# w16:51:15 up 1:50, 1 user, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 172.18.8.196 15:01 3.00s 0.44s 0.01s w我們針對w這個命令做個解釋
參數為 -h :忽略頭文件信息, -u:顯示結果的加載時間 , -s :不顯示JCPU,PCPU,登陸時間。
Liunx網絡的基本操作
打開網頁:curl
[root@zlhpc ~]# curl www.baidu.com <!DOCTYPE html> <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class="head_wrapper"> <div class="s_form"> <div class="s_form_wrapper"> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class="fm"> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class="s_ipt" value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class="mnav">新聞</a> <a href=http://www.hao123.com name=tj_trhao123 class="mnav">hao123</a> <a href=http://map.baidu.com name=tj_trmap class="mnav">地圖</a> <a href=http://v.baidu.com name=tj_trvideo class="mnav">視頻</a> <a href=http://tieba.baidu.com name=tj_trtieba class="mnav">貼吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class="lb">登錄</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登錄</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class="bri" style="display: block;">更多產品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>關于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>©2017 Baidu <a href=http://www.baidu.com/duty/>使用百度前必讀</a> <a href=http://jianyi.baidu.com/ class="cp-feedback">意見反饋</a> 京ICP證030173號 <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>下載文件:wget
[root@zlhpc ~]# wget http://download.redis.io/releases/redis-3.0.6.tar.gzlinux下的文本瀏覽器:w3m與links
[root@zlhpc ~]# w3m www.baidu.com [root@zlhpc ~]# links www.baidu.com檢查你的網絡與另外一臺機器是否互通:ping
[root@zlhpc ~]# ping www.baidu.com做路由圖提供我們分析哪里出現故障或者是否存在網絡擁塞情況:mtr
[root@zlhpc ~]# mtr [root@zlhpc ~]# mtr -r -c 30 www.baidu.com #每秒發送數據包的數量是30 ,mtr -r -c 30 -s 1024 www.baidu.com #ping包的大小為1024個字節 Start: Sun Feb 12 18:01:09 2017 HOST: zlhpc Loss% Snt Last Avg Best Wrst StDev1.|-- ??? 100.0 30 0.0 0.0 0.0 0.0 0.02.|-- 116.236.169.77 0.0% 30 4179. 9116. 4179. 11973 2051.23.|-- 124.74.124.165 0.0% 30 1.9 3.6 1.7 5.4 1.04.|-- 124.74.210.101 0.0% 30 4.1 4.5 2.4 6.1 1.05.|-- 59.43.77.141 0.0% 30 20.1 18.1 7.4 54.5 8.26.|-- 59.43.80.94 0.0% 30 4.3 6.0 2.7 24.3 3.67.|-- 202.97.26.2 86.7% 30 5.1 5.2 5.0 5.4 0.08.|-- 220.191.200.30 0.0% 30 5.9 5.5 5.1 7.0 0.39.|-- ??? 100.0 30 0.0 0.0 0.0 0.0 0.010.|-- 115.239.209.2 0.0% 30 6.8 7.1 6.6 8.0 0.011.|-- ??? 100.0 30 0.0 0.0 0.0 0.0 0.012.|-- 115.239.210.27 0.0% 30 6.1 6.5 5.6 11.7 1.4- 第一列:顯示的是IP地址和本機域名,這點和tracert很像。
- 第二列 Loss%:是顯示的每個對應IP的丟包率。
- 第三列 snt:snt等于10,設置每秒發送數據包的數量,默認值是10 可以通過參數 -c來指定。
- 第四列 Last:顯示的最近一次的返回時延。
- 第五列?Avg:平均值,這個應該是發送ping包的平均時延。
- 第六列?Best:最好或者說時延最短的時間。
- 第七列?Wrst:最壞或者說時延最長的時間。
- 第八列?StDev:標準偏差。
mtr參數如下:
DNS查詢,如果是參數是域名輸出關聯ip,如果參數是ip輸出關聯的域名:host
[root@zlhpc ~]# host www.baidu.com www.baidu.com is an alias for www.a.shifen.com. www.a.shifen.com has address 115.239.211.112 www.a.shifen.com has address 115.239.210.27出網絡接口配置、調優和debug的各種選項:ifconfig
[root@zlhpc ~]# ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.18.8.190 netmask 255.255.255.0 broadcast 172.18.8.255inet6 fe80::20c:29ff:feb5:d2d8 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:b5:d2:d8 txqueuelen 1000 (Ethernet)RX packets 10916 bytes 7044121 (6.7 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 7267 bytes 774719 (756.5 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 0 (Local Loopback)RX packets 318 bytes 32844 (32.0 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 318 bytes 32844 (32.0 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0關于ip的命令
[root@zlhpc ~]# ip link show #查看所有網絡接口屬性信息 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000link/ether 00:0c:29:b5:d2:d8 brd ff:ff:ff:ff:ff:ff [root@zlhpc ~]# ip -s link show #查看所有統計信息 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00RX: bytes packets errors dropped overrun mcast 32844 318 0 0 0 0 TX: bytes packets errors dropped carrier collsns 32844 318 0 0 0 0 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000link/ether 00:0c:29:b5:d2:d8 brd ff:ff:ff:ff:ff:ffRX: bytes packets errors dropped overrun mcast 7050452 10988 0 0 0 0 TX: bytes packets errors dropped carrier collsns 780097 7309 0 0 0 0 [root@zlhpc ~]# ip addr show #查看網絡信息 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:b5:d2:d8 brd ff:ff:ff:ff:ff:ffinet 172.18.8.190/24 brd 172.18.8.255 scope global dynamic eno16777736valid_lft 83120sec preferred_lft 83120secinet6 fe80::20c:29ff:feb5:d2d8/64 scope link valid_lft forever preferred_lft forever這里簡單介紹下,以后會有深入介紹。
ifdown與ifup分別是禁用與啟用摸個網絡接口
[root@zlhpc ~]# ifdown eno16777736 [root@zlhpc ~]# ifup eno16777736netstat命令查看網絡信息
netstat命令是一個監控TCP/IP網絡的非常有用的工具,它可以顯示路由表、實際的網絡連接以及每一個網絡接口設備的,netstat命令的功能是顯示網絡連接、路由表和網絡接口信息,可以讓用戶得知目前都有哪些網絡連接正在運作。
netstat [選項]
- -a 顯示所有socket,包括正在監聽的。
- -c 每隔1秒就重新顯示一遍,直到用戶中斷它。
- -i 顯示所有網絡接口的信息,格式同“ifconfig -e”。
- -n 以網絡IP地址代替名稱,顯示出網絡連接情形
- -r 顯示核心路由表,格式同“route -e”。
- -t 顯示TCP協議的連接情況。
- -u 顯示UDP協議的連接情況。
- -v 顯示正在進行的工作。
- -p?顯示建立相關鏈接的程序名
列出所有連接
[root@zlhpc ~]# netstat -a --列出所有連接 Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN只列出tcp或者udp協議的連接
[root@zlhpc ~]# netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN [root@zlhpc ~]# netstat -au Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 0.0.0.0:18604 0.0.0.0:* udp 0 0 localhost:323 0.0.0.0:* udp 0 0 0.0.0.0:bootpc 0.0.0.0:* udp6 0 0 localhost:323 [::]:* udp6 0 0 [::]:53744 [::]:*禁用反向域名解析,加快查詢速度
[root@zlhpc ~]# netstat -ant Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 52 172.18.8.190:22 172.18.8.196:51171 ESTABLISHED tcp 0 0 172.18.8.190:22 172.18.8.196:49639 ESTABLISHED只列出監聽中的連接
[root@zlhpc ~]# netstat -tnl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp6 0 0 :::111 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN獲取進程名,進程號以及用戶id
[root@zlhpc ~]# netstat -nlpt 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:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1538/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2094/master tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::22 :::* LISTEN 1538/sshd tcp6 0 0 ::1:25 :::* LISTEN 2094/master [root@zlhpc ~]# netstat -ltpe Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN root 16299 1/systemd tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN root 21179 1538/sshd tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN root 22083 2094/master tcp6 0 0 [::]:sunrpc [::]:* LISTEN root 16298 1/systemd tcp6 0 0 [::]:ssh [::]:* LISTEN root 21189 1538/sshd tcp6 0 0 localhost:smtp [::]:* LISTEN root 22084 2094/master網絡報統計情況
[root@zlhpc ~]# netstat -s Ip:7872 total packets received0 forwarded0 incoming packets discarded6932 incoming packets delivered7284 requests sent out60 dropped because of missing route Icmp:260 ICMP messages received1 input ICMP message failed.ICMP input histogram:destination unreachable: 1timeout in transit: 214echo requests: 1echo replies: 44409 ICMP messages sent0 ICMP messages failedICMP output histogram:destination unreachable: 33echo request: 12echo replies:... OUTPUT TRUNCATED ...
持續輸出 -c持續輸出tcp協議信息
[root@zlhpc ~]# netstat -ct Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 52 zlhpc:ssh localhost:51171 ESTABLISHED tcp 0 0 zlhpc:ssh localhost:49639 ESTABLISHEDiftop工具實時監控linux系統的網絡流量信息
最后上一個簡單的實時流量監控工具:iftop ,它可以用來監控實時流量,反向解析ip,顯示端口等。使用需先安裝iftop,官網地址:http://www.ex-parrot.com/~pdw/iftop/
不過還有很多類似的軟件,我們放在以后討論。?
[root@zlhpc ~]# iftop interface: eno16777736 IP address is: 172.18.8.190 MAC address is: 00:0c:29:b5:d2:d8常用參數命令:
- -i設定監測的網卡,如:# iftop -i eth1?
- -B 以bytes為單位顯示流量(默認是bits),如:# iftop -B?
- -n使host信息默認直接都顯示IP,如:# iftop -n?
- -N使端口信息默認直接都顯示端口號,如: # iftop -N?
- -F顯示特定網段的進出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0?
- -h(display this message),幫助,顯示參數信息?
- -p使用這個參數后,中間的列表顯示的本地主機信息,出現了本機以外的IP信息;?
- -b使流量圖形條默認就顯示;?
- -f這個暫時還不太會用,過濾計算包用的;?
- -P使host信息及端口信息默認就都顯示;?
- -m設置界面最上邊的刻度的最大值,刻度分五個大段顯示,例:# iftop -m 100M?
圖解:
- 界面頭部:流量刻度尺,對應下邊每行的白色橫條。
- 界面中部:左邊為服務器;中間為外網IP,左箭頭流入,右箭頭流出;右邊為2s 10s 40s 的流量情況。
- 界面下部:TX:發送流量 ,RX:接收流量 ,TOTAL:總流量 ,Cumm:運行iftop到目前時間的總流量 ,peak:流量峰值 ,rates:分別表示過去 2s 10s 40s 的平均流量
界面命令:
- 按h切換是否顯示幫助;
- 按n切換顯示本機的IP或主機名;
- 按s切換是否顯示本機的host信息;
- 按d切換是否顯示遠端目標主機的host信息;
- 按t切換顯示格式為2行/1行/只顯示發送流量/只顯示接收流量;
- 按N切換顯示端口號或端口服務名稱;
- 按S切換是否顯示本機的端口信息;
- 按D切換是否顯示遠端目標主機的端口信息;
- 按p切換是否顯示端口信息;
- 按P切換暫停/繼續顯示;
- 按b切換是否顯示平均流量圖形條;
- 按B切換計算2秒或10秒或40秒內的平均流量;
- 按T切換是否顯示每個連接的總流量;
- 按l打開屏幕過濾功能,輸入要過濾的字符,比如ip,按回車后,屏幕就只顯示這個IP相關的流量信息;
- 按L切換顯示畫面上邊的刻度;刻度不同,流量圖形條會有變化;
- 按j或按k可以向上或向下滾動屏幕顯示的連接記錄;
- 按1或2或3可以根據右側顯示的三列流量數據進行排序;
- 按<根據左邊的本機名或IP排序;
- 按>根據遠端目標主機的主機名或IP排序;
- 按o切換是否固定只顯示當前的連接;
- 按f可以編輯過濾代碼,這是翻譯過來的說法,我還沒用過這個!
- 按!可以使用shell命令,這個沒用過!沒搞明白啥命令在這好用呢!
- 按q退出監控。
Linux系統的硬盤存儲與tree工具
整個系統的存儲情況
[root@zlhpc ~]# df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/centos-root 18G 2.1G 16G 12% / devtmpfs 479M 0 479M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 6.7M 483M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 497M 124M 374M 25% /boot tmpfs 98M 0 98M 0% /run/user/0某個文件或文件夾大小
[root@zlhpc usr]# du --max-depth=1 -h 108M ./bin 46M ./sbin 390M ./lib 417M ./lib64 517M ./share 0 ./etc 0 ./games 35M ./include 78M ./libexec 51M ./local 55M ./src 1.7G .du的相關參數如下:
- -a 顯示所有文件及目錄大小,遞歸顯示
- --apparent-size 顯示文件及目錄展現大小,而非磁盤占用量。
- -B,--block-size='SIZE' 顯示塊的數量,引號中的size表示系統的塊尺寸。
- -b 以byte的方式顯示查看對象大小,相當于--apparent-size --block-size=1
- -c 計總并以total表面總數
- -D 計算不包含鏈接文件
- -H 類似于--si 以1000為計算單位計算文件及目錄的磁盤占用量
- -h 人類可讀的模式(K,M,G)
- --si 以1000取代1024換算單位
- -k 類似于--block-size=1k指定塊大小為1k,計算文件目錄大小。
- -l, --count-links 多次計算如果包含硬鏈接
- -m 類似于--block-size=1M指定塊大小為1M,計算文件目錄大小。
- -L, --dereference 和-D參數不同,忽略所有鏈接對象(文件,目錄)
- -P, --no-dereference 默認參數,不
- -0 用0字節替代換行符
- -S, --separate-dirs 不包含子目錄的大小
- -s, --summarize 僅顯示當前目錄級下每個對象的總大小
- -x, --one-file-system 跳過那些在不同文件系統上的目錄。
- -X FILE, --exclude-from=FILE 不包含匹配的對象,這里的FILE是用戶指定的文件對象
- --exclude=PATTERN
- --max-depth= 顯示目錄級的深度--max-depth=0相當于--summarize
- --time 顯示目錄中文件的或子目錄最后的改動時間
- --time=WORD 以關鍵詞 WORD顯示時間,包含:atime,access,use,ctime,status
- --time-style=STYLE 調整顯示時間格式,格式包含full-iso, long-iso, iso, +FORMAT(該格式來自于date命令)
- --help 幫助
- --version 版本信息
使用tree工具,查看樹形目錄結構,首先先安裝tree工具
[root@zlhpc usr]# tree -L 3 src #列出src層數為3以內的所有文件 src ├── debug └── kernels└── 3.10.0-514.6.1.el7.x86_64├── arch├── block├── crypto├── drivers├── firmwaretree常用參數:
-d:僅顯示目錄
-a:顯示所有
-f:顯示完整路徑
-L n :n為數字,表示要現實幾層。
進程資源的實時占用狀況,Linux中的任務管理器:top
top默認3秒刷新一次,按空格立即刷新,q:退出,M:按內存排序,P:按cpu排序,<>:翻頁 。
top - 21:32:45 up 6:31, 2 users, load average: 0.01, 0.02, 0.05 Tasks: 348 total, 2 running, 346 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1001332 total, 321616 free, 166176 used, 513540 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 596688 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3865 root 20 0 146296 2272 1452 R 0.7 0.2 0:00.62 top 1 root 20 0 126416 7184 2608 S 0.0 0.7 0:02.43 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.06 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.37 ksoftirqd/0 6 root 20 0 0 0 0 S 0.0 0.0 0:00.98 kworker/u256:0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1 11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/2 12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/3 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/4統計講解:
第一行的統計信息與命令uptime命令執行結果一致,依次為:
- 21:32:45 :當前時間
- 6:31 :系統運行時間
- 2 users:當前登錄用戶數
- load average: 0.01, 0.02, 0.05 ?:系統負載,即任務隊列的平均長度:1分鐘,5分鐘,15分鐘前到現在的平均值。一般來說,每個cpu內核當前活動進程不大于3,則系統運行表現良好。當然這里說的是每個cpu內核,也就是如果你的主機是8核的話,那么uptime輸出的最后一串字符應小于8*3=24即表示系統負載不是很嚴重。
第二、三行為進程和cpu的信息,當有多個cpu時,這些內容可能會超過2行,內容如下:
- Tasks: 348 total:進程總數
- 2 running:正在運行的進程數
- 346 sleeping:睡眠的進程數
- 0 stopped:停止的進程數
- 0 zombie :僵尸進程數?
- %Cpu(s) 0.3 us:系統用戶進程使用cpu百分比,不包括調高優先級的進程。cpu%是由每個核的cpu占用率之和計算出來的,如果是4核,核1使用率為100%,核2cpu使用率為100%,則會出現cpu高于100%的現象,最終為200%。
- 0.3 sy :內核空間占用cpu百分比
- 0.0 ni :用戶進程空間內改變過優先級的進程占用cpu百分比
- 99.3 id :空閑cpu百分比
- 0.0 wa :等待輸入輸出的cpu時間百分比
- 0.0 hi :硬件cpu中斷占用百分比
- 0.0 si :軟中斷占用百分比
- 0.0 st :虛擬機占用百分比
第四、五行為內存信息
- KiB Mem : 1001332 total :物力內存總量
- 321616 free :空閑內存總量
- 166176 used :使用物理內存總量
- 513540 buff/cache :用作內核緩存的內存量,和free -k 命令一個意思
- KiB Swap: 2097148 total :交換區總量
- 2097148 free :空閑交換區總量
- 0 used :使用交換區總量
- 596688 avail Mem :緩沖的交換區總量,內存中的內容被換出到交換區,而后又被換入到內存,但使用過的交換區尚未被覆蓋,該數值即為這些內容已存在于內存中的交換區的大小,相應的內存再次被換出時可不必再對交換區寫入。
第六列頭標題詳細
- PID :進程id
- PPID :父進程id
- RUSER :Real user name
- UID : 進程所有者的用戶id
- USER : 進程所有者的用戶名
- GROUP : 進程所有者的組名
- TTY : 啟動進程的終端名。不是從終端啟動的進程則顯示為 ?
- PR : 優先級
- NI : nice值。負值表示高優先級,正值表示低優先級
- P : 最后使用的CPU,僅在多CPU環境下有意義
- %CPU : 上次更新到現在的CPU時間占用百分比
- TIME : 進程使用的CPU時間總計,單位秒
- TIME+ : 進程使用的CPU時間總計,單位1/100秒
- %MEM : 進程使用的物理內存百分比
- VIRT : 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
- SWAP : 進程使用的虛擬內存中,被換出的大小,單位kb。
- RES: 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
- CODE: 可執行代碼占用的物理內存大小,單位kb
- DATA : 可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb
- SHR : 共享內存大小,單位kb
- nFLT: 頁面錯誤次數
- nDRT : 最后一次寫入到現在,被修改過的頁面數。
- S : 進程狀態(D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵尸進程)
- COMMAND :命令名/命令行
- WCHAN : 若該進程在睡眠,則顯示睡眠中的系統函數名
- Flags : 任務標志,參考 sched.h
?top命令參數
- d 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。
- p 通過指定監控進程ID來僅僅監控某個進程的狀態。
- q 該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶權限,那么top將以盡可能高的優先級運行。
- S 指定累計模式
- s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
- i 使top不顯示任何閑置或者僵死進程。
- c 顯示整個命令行而不只是顯示命令名
常用命令
top //每隔5秒顯式所有進程的資源占用情況 top -d 2 //每隔2秒顯式所有進程的資源占用情況 top -c //每隔5秒顯式進程的資源占用情況,并顯示進程的命令行參數(默認只有進程名) top -p 12345 -p 6789//每隔5秒顯示pid是12345和pid是6789的兩個進程的資源占用情況 top -d 2 -c -p 123456 //每隔2秒顯示pid是12345的進程的資源使用情況,并顯式該進程啟動的命令行參數Linux系統free命令查看系統內存情況
[root@zlhpc ~]# free -htotal used free shared buff/cache available Mem: 977M 138M 693M 6.6M 145M 690M Swap: 2.0G 0B 2.0G- Mem:系統物理內存
- Swap:相當于windows中的虛擬內存,這里叫做交換區,當系統的物理內存不夠用時,系統會將磁盤空間虛擬成內存使用。內存不夠的情況下,操作系統先把內存中暫時不用的數據,存到硬盤的交換空間,騰出內存來讓別的程序運行。
- Buff:buff這里我簡單說明下,與cache對比,他是在做寫操作的時候,把分散的寫操作集中進行,減少磁盤I/O,從而提高系統性能。文件是在寫操作之前先放入buff。
- Cache:在做讀操作的時候,把數據放入緩存中,等下次來訪問此數據時候,不用讀磁盤,直接讀緩存即可。
- total:去掉為硬件和操作系統保留的內存后剩余的內存總量。許多人奇怪自己的電腦安裝了一共8G的內存,但是顯示總共只有七點幾G的,現在應該沒什么疑惑了把,不管Linux還是Windows都會有部分內存是保留給硬件和操作系統的!
- used:已分配的內存
- free:未分配內存
- shared:共享內存
- available:可以使用的內存總量
Linux系統查看內存信息
[root@zlhpc /]# more /proc/meminfo #查看內存信息 MemTotal: 1001332 kB MemFree: 322740 kB MemAvailable: 597536 kB Buffers: 1004 kB Cached: 261816 kB SwapCached: 0 kB Active: 169740 kB Inactive: 167476 kB Active(anon): 74780 kB Inactive(anon): 6452 kB Active(file): 94960 kB Inactive(file): 161024 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 2097148 kB SwapFree: 2097148 kB Dirty: 0 kB Writeback: 0 kB [root@zlhpc /]# grep MemTotal /proc/meminfo #查看內存信息 MemTotal: 1001332 kBLinux系統進程相關
pstree:樹形結構顯示系統進程信息
-p顯示進程號
[root@zlhpc ~]# pstree -p systemd(1)─┬─NetworkManager(978)─┬─dhclient(1320)│ ├─{NetworkManager}(1051)│ └─{NetworkManager}(1054)├─abrt-watch-log(886)├─abrtd(885)├─agetty(906)├─atd(900)├─auditd(852)───{auditd}(871)ps:用于展示當前系統的進程狀態。可以搭配kill指令隨時中斷、刪除不必要的程序。ps命令是最基本同時也是非常強大的進程查看命令,使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等等,總之大部分信息都是可以通過執行該命令得到的。
[root@zlhpc ~]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.7 126420 7172 ? Ss 09:12 0:01 /usr/lib/systemd/system root 2 0.0 0.0 0 0 ? S 09:12 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 09:12 0:00 [ksoftirqd/0] root 6 0.0 0.0 0 0 ? S 09:12 0:00 [kworker/u256:0] root 7 0.0 0.0 0 0 ? S 09:12 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 09:12 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S 09:12 0:00 [rcuob/0]- user:運行次進程的用戶名
- pid:該進程的進程號碼
- %CPU:該進程使用掉的cpu資源百分比
- %MEM:該進程所占用的物理內存百分比
- VSZ:該進程使用掉的虛擬內存量(Kbytes)
- RSS:該進程占用的固定內存量(Kbytes)
- TTY:該進程是在哪個終端機上運作,若與終端機無關,則顯示?,另外,tty-tty6是本機上面的登入者程序,若為pts/0等等的,則表示為由網絡連接進主機的程序。
- STAT:該程序目前的狀態,Linux進程有6種基本狀態:R:正在運行或運行隊列中等待,S:可中斷的睡眠狀態,可被某些訊號(signal)喚醒。T:暫停狀態或跟蹤狀態,D:不可中斷的睡眠狀態,Z:退出狀態,進程成為僵尸進程,X:退出狀態,進程即將被銷毀。6種狀態下又有6種子狀態分別為:<:高優先級的,N:低優先級的,L:有內存分頁但是帶鎖,s:包含子進程,l:多線程,+:前臺程序(命令正在打開使用的程序,比如vim)
- START:該進程被觸發的時間
- Time:該進程實際使用cpu運作的時間
- Command:該程序的實際指令
恐怖的參數多的如下:
- -a:顯示所有終端機下執行的程序,除了階段作業領導者之外。
- a:顯示現行終端機下的所有程序,包括其他用戶的程序。
- -A:顯示所有程序。
- -c:顯示CLS和PRI欄位。
- c:列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,選項或常駐服務的標示。
- -C<指令名稱>:指定執行指令的名稱,并列出該指令的程序的狀況。
- -d:顯示所有程序,但不包括階段作業領導者的程序。
- -e:此選項的效果和指定"A"選項相同。
- e:列出程序時,顯示每個程序所使用的環境變量。
- -f:顯示UID,PPIP,C與STIME欄位。
- f:用ASCII字符顯示樹狀結構,表達程序間的相互關系。
- -g<群組名稱>:此選項的效果和指定"-G"選項相同,當亦能使用階段作業領導者的名稱來指定。
- g:顯示現行終端機下的所有程序,包括群組領導者的程序。
- -G<群組識別碼>:列出屬于該群組的程序的狀況,也可使用群組名稱來指定。
- h:不顯示標題列。
- -H:顯示樹狀結構,表示程序間的相互關系。
- -j或j:采用工作控制的格式顯示程序狀況。
- -l或l:采用詳細的格式來顯示程序狀況。
- L:列出欄位的相關信息。
- -m或m:顯示所有的執行緒。
- n:以數字來表示USER和WCHAN欄位。
- -N:顯示所有的程序,除了執行ps指令終端機下的程序之外。
- -p<程序識別碼>:指定程序識別碼,并列出該程序的狀況。
- p<程序識別碼>:此選項的效果和指定"-p"選項相同,只在列表格式方面稍有差異。
- r:只列出現行終端機正在執行中的程序。
- -s<階段作業>:指定階段作業的程序識別碼,并列出隸屬該階段作業的程序的狀況。
- s:采用程序信號的格式顯示程序狀況。
- S:列出程序時,包括已中斷的子程序資料。
- -t<終端機編號>:指定終端機編號,并列出屬于該終端機的程序的狀況。
- t<終端機編號>:此選項的效果和指定"-t"選項相同,只在列表格式方面稍有差異。
- -T:顯示現行終端機下的所有程序。
- -u<用戶識別碼>:此選項的效果和指定"-U"選項相同。
- u:以用戶為主的格式來顯示程序狀況。
- -U<用戶識別碼>:列出屬于該用戶的程序的狀況,也可使用用戶名稱來指定。
- U<用戶名稱>:列出屬于該用戶的程序的狀況。
- v:采用虛擬內存的格式顯示程序狀況。
- -V或V:顯示版本信息。 -w或w:采用寬闊的格式來顯示程序狀況。
- x:顯示所有程序,不以終端機來區分。
- X:采用舊式的Linux i386登陸格式顯示程序狀況。
- -y:配合選項"-l"使用時,不顯示F(flag)欄位,并以RSS欄位取代ADDR欄位 。
- -<程序識別碼>:此選項的效果和指定"p"選項相同。
- --cols<每列字符數>:設置每列的最大字符數。
- --columns<每列字符數>:此選項的效果和指定"--cols"選項相同。
- --cumulative:此選項的效果和指定"S"選項相同。
- --deselect:此選項的效果和指定"-N"選項相同。
- --forest:此選項的效果和指定"f"選項相同。
- --headers:重復顯示標題列。
- --help:在線幫助。
- --info:顯示排錯信息。
- --lines<顯示列數>:設置顯示畫面的列數。
- --no-headers:此選項的效果和指定"h"選項相同,只在列表格式方面稍有差異。
- --group<群組名稱>:此選項的效果和指定"-G"選項相同。
- --Group<群組識別碼>:此選項的效果和指定"-G"選項相同。
- --pid<程序識別碼>:此選項的效果和指定"-p"選項相同。
- --rows<顯示列數>:此選項的效果和指定"--lines"選項相同。
- --sid<階段作業>:此選項的效果和指定"-s"選項相同。
- --tty<終端機編號>:此選項的效果和指定"-t"選項相同。
- --user<用戶名稱>:此選項的效果和指定"-U"選項相同。
- --User<用戶識別碼>:此選項的效果和指定"-U"選項相同。
- --version:此選項的效果和指定"-V"選項相同。
- --widty<每列字符數>:此選項的效果和指定"-cols"選項相同。
?
轉載于:https://www.cnblogs.com/aibabel/p/6927596.html
總結
以上是生活随笔為你收集整理的linux命名详解及其软件安装实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Redis官方文档》Redis调试指南
- 下一篇: Linux零基础入学之1-1课程介绍了解