linux命名詳解及其軟件安裝實例

始於cd,ls命令

好啦,步入正題,我使用的linux鏈接工具爲xshell,mRemoteNG,對兩款工具不作介紹啦,你能夠百度一下,實在不會入左上方羣。css

進入以後,即是上面的界面黑乎乎一片,對於初學者也多是一片懵逼,猶如狗拿刺蝟,那麼不要急,咱們先來看下人生中的第一個linux命令:ls 與 cd 。html

首先你先使用下面的cd命令:node

[root@localhost ~]#   這個是當前用戶的用戶文件夾主目錄
[root@localhost  /]#   這個是整個系統的根目錄linux

緊接着輸入ls命令展現出一下結果。nginx

那麼這些文件都裝載啦什麼東東,爲何要放在根目錄下,接下來咱們對此作個詳解。c++

ls,cd命令的語法與參數使用方法:http://man.linuxde.net  ,不能偷懶哦,要敲敲, 你才能學好,多敲才能記住的。web

Linux的文件種類,擴展名

在linux中,任何設備都是文件,就連數據通訊接口也有專門的文件負責。因此咱們要搞清楚linux下的文件有哪些?哪些做用?redis

首先咱們這樣輸入命令,以下:算法

亂七八糟的都是什麼呢?我拿dev這個文件夾作爲示例分解下:shell

一、文件類型

普通文件:就是咱們通常的文件,他在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系統中的快捷鍵。

 二、文件權限r-xr-xr-x

  • 縮寫字母的意義:x:可執行,r:可讀,w:可寫,-佔位。
  • 123:擁有者權限,456:用戶組用戶權限,789:其餘用戶權限。
  • 特徵順序爲rwx。

三、鏈接數:表示有多少文件名鏈接到此節點。

四、文件名

  • 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實例演練

基本步驟:

一、下載源文件至/usr/local/src目錄下解壓縮。

二、取得步驟流程:進入新建的目錄下面,去查閱install與readme等相關文件內容。

三、相關屬性軟件安裝:根據install與readme的內容查看並安裝好一些相關的軟件

四、創建makefile:以自動檢測程序(configure或config)檢測操做環境,並創建makefile這個文件

五、編譯:以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大步驟。

一、先安裝erlang環境,二、安裝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.bz
 9 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 CST

note1: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:    Core
複製代碼

Linux系統查看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位數
64
複製代碼

Linux系統用戶與用戶組

用戶與組分類,根據賬號或組的位置均可以分爲:本地賬號|組,遠程(域)賬號|組 ,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

  1. root:用戶名
  2. x:密碼佔位符
  3. UID
  4. GID
  5. 用戶描述
  6. 用戶主文件夾
  7. 登陸後使用的shell./sbin/nologin此shell會讓該用戶沒法登陸。

查看系統中支持那些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:::

  1. root:用戶名
  2. $6$zVDR2oO1Yg7alTbs$.70PPMYxg70k9BvLtjHdm94CDA1YWDRDI5NFzSfcmZF5WMESgIbLUdnqRjuVycg481Ny9rl//YzAFnXhurQi//:root用戶用sha512加密過的用戶密碼
  3. 最近更改密碼的日期,從19700101開始計算至修改密碼那天的累積天數。
  4. 0:密碼不能更改的天數,最近更改事後幾年以後才能被再次更改,0表示能夠隨意隨時修改。
  5. 99999:密碼的過時時間,密碼在多少天后必須被修改。
  6. 7:系統須要在密碼過時的的前7天發出密碼即將過時的警告。
  7. 寬限天數,密碼過啦幾天後還能修改密碼。
  8. 賬號過時時間
  9. 保留字段,目前沒有用到。

查看關於組的配置文件,以下:

[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:用戶組名稱
  2. x:用戶組密碼的佔位符
  3. 0:用戶組的GID
  4. 此用戶組支持的賬號名稱。

接下來咱們來看下賬號管理,關於賬號的增刪改查操做

一、添加用戶

[root@zlhpc home]# useradd zhanglonghao
[root@zlhpc home]# useradd zhanglonghao1

useradd (選項)(參數)

  • -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 -rf

userdel,參數以下:若是不加下面的參數進行直接刪除,則用戶刪除,用戶的目錄與文件依舊保留。

  • -f:強制刪除用戶,即便用戶當前已登陸;
  • -r:刪除用戶的同時,刪除與用戶相關的全部文件。

把某個用戶添加到哪一個組中:示例把用戶zhanglonghao添加到zhanglonghao1的組中,且也在原有的組中不被刪除,這是必須加 -a意思是附加的意思,以下:

[root@zlhpc home]# usermod zhanglonghao -a -G zhanglonghao1
[root@zlhpc home]# groups zhanglonghao
zhanglonghao : zhanglonghao zhanglonghao1

id查看用戶的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]# w
 16: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這個命令作個解釋

  1. user:用戶名
  2. tty:用戶的機器名或tty號
  3. from:遠程主機的地址
  4. login@:用戶登陸系統的時間
  5. idle:空閒時間
  6. jcpu:附加到tty(終端)的進程所用的時間(JCPU時間)
  7. pcpu:當前進程所用時間(PCPU時間)
  8. what:用戶當前正在使用的命令

參數爲 -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&amp;tpl=mn&amp;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>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必讀</a>&nbsp; <a href=http://jianyi.baidu.com/ class="cp-feedback">意見反饋</a>&nbsp;京ICP證030173號&nbsp; <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.gz

linux下的文本瀏覽器: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 StDev
  1.|-- ???                       100.0    30    0.0   0.0   0.0   0.0   0.0
  2.|-- 116.236.169.77             0.0%    30  4179. 9116. 4179. 11973 2051.2
  3.|-- 124.74.124.165             0.0%    30    1.9   3.6   1.7   5.4   1.0
  4.|-- 124.74.210.101             0.0%    30    4.1   4.5   2.4   6.1   1.0
  5.|-- 59.43.77.141               0.0%    30   20.1  18.1   7.4  54.5   8.2
  6.|-- 59.43.80.94                0.0%    30    4.3   6.0   2.7  24.3   3.6
  7.|-- 202.97.26.2               86.7%    30    5.1   5.2   5.0   5.4   0.0
  8.|-- 220.191.200.30             0.0%    30    5.9   5.5   5.1   7.0   0.3
  9.|-- ???                       100.0    30    0.0   0.0   0.0   0.0   0.0
 10.|-- 115.239.209.2              0.0%    30    6.8   7.1   6.6   8.0   0.0
 11.|-- ???                       100.0    30    0.0   0.0   0.0   0.0   0.0
 12.|-- 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參數以下:

  1. -h 提供幫助命令
  2. -v 顯示mtr的版本信息
  3. -r 已報告模式顯示
  4. -c 設置每秒發送數據包的數量
  5.  -s 用來指定ping數據包的大小
  6. -n no-dns不對IP地址作域名解析
  7. -a 來設置發送數據包的IP地址 這個對一個主機由多個IP地址是有用的
  8. -i 使用這個參數來設置ICMP返回之間的要求默認是1秒
  9. -4 IPv4
  10. -6 IPv6

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 1500
        inet 172.18.8.190  netmask 255.255.255.0  broadcast 172.18.8.255
        inet6 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 0
        TX packets 7267  bytes 774719 (756.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::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 0
        TX 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 1000
    link/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:00
    RX: 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 1000
    link/ether 00:0c:29:b5:d2:d8 brd ff:ff:ff:ff:ff:ff
    RX: 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:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::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 1000
    link/ether 00:0c:29:b5:d2:d8 brd ff:ff:ff:ff:ff:ff
    inet 172.18.8.190/24 brd 172.18.8.255 scope global dynamic eno16777736
       valid_lft 83120sec preferred_lft 83120sec
    inet6 fe80::20c:29ff:feb5:d2d8/64 scope link 
       valid_lft forever preferred_lft forever
複製代碼

這裏簡單介紹下,之後會有深刻介紹。

ifdown與ifup分別是禁用與啓用摸個網絡接口

[root@zlhpc ~]# ifdown eno16777736
[root@zlhpc ~]# ifup eno16777736

netstat命令查看網絡信息

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 received
    0 forwarded
    0 incoming packets discarded
    6932 incoming packets delivered
    7284 requests sent out
    60 dropped because of missing route
Icmp:
    260 ICMP messages received
    1 input ICMP message failed.
    ICMP input histogram:
        destination unreachable: 1
        timeout in transit: 214
        echo requests: 1
        echo replies: 44
    409 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 33
        echo request: 12
        echo 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         ESTABLISHED

iftop工具實時監控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
        ├── firmware
複製代碼

tree經常使用參數:

-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即表示系統負載不是很嚴重。

第2、三行爲進程和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 :虛擬機佔用百分比

第4、五行爲內存信息

  • 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 -h
              total        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 kB
複製代碼

Linux系統進程相關

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"選項相同。
[root@zlhpc ~]# ps -ef    --標準格式顯示進程
[root@zlhpc ~]# ps -aux --BSD格式顯示進程
相關文章
相關標籤/搜索