天天看點

Linux系統運維學習---常用指令集

一、shell和核心的關系  

1.1核心  

1)計算機由各種硬體(運算器--CPU、控制器---CPU 、存儲器、輸入輸出裝置等)組成,系統核心就是使硬體間互相獨立工作和協同工作即對硬體資源的管理、排程等。因為核心過于重要 是以不建議直接對核心操作(對于某些服務需要修改核心參數一般是通過管理工具進行)

2)Linux中具備一些圖形工具如LVM---邏輯卷管理(儲存設備)、RAID磁盤備援陣列

圖形界面的根本是調用腳本,通用性并不強

3)安裝圖形界面: yum groupinstall "X window System" Desktop;啟動:startx

1.2 shell  

1)Linux系統中輸入的大多數指令,系統核心不能直接識别,能夠解釋這些指令讓系統核心識别的工具就是shell,是以shell也叫解釋器。

2)shell包裹着核心,接通核心某些API(使用者接口),包括紅帽在内的Linux版本,預設使用bash shell 解釋器

二、bash解釋器的優勢  

1)通過上下鍵調取曾經使用的指令(指令很多,可以用history指令查詢)

2)指令或者參數,可以通過tab補全

3)可以批處理(如建立使用者)

4)具備某些實用的環境變量(預設值的某些參數,如PATH、 SHELL)

三、Linux下常用的指令集  

3.1指令格式:(指令+參數+對象)  

參數:長格式(如--help):服務、程式調試等額外參數

短格式(如-h):執行簡單的指令

對象:要處理的檔案、目錄、使用者等等資源

3.1.1檢視幫助指令  

1)help 幫助指令 (屬于Linux内部指令)

2)man 幫助指令 (屬于Linux外部指令)

3)man 用法:man+指令名:用于查詢指令的使用方式和參數

按鍵

用處

空格鍵

向下翻一頁

PaGe down

PaGe up

向上翻一頁

Home

直接前往首頁

End

直接前往尾頁

/

從上至下搜尋某個關鍵詞,如“/linux”

?

從下至上搜尋某個關鍵詞,如“?linux”

N

定位到下一個搜尋到的關鍵詞

定位到上一個搜尋到的關鍵詞

Q

退出幫助文檔

結構名稱

代表意義

NAME

指令的名稱

SYNOPSIS

參數的大緻使用方法

DESCRIPTION

介紹說明

EXAMPLES

示範(附帶簡單說明)

OVERVIEW

概述

DEFAULTS

預設的功能

OPTIONS

具體的可用選項(帶介紹)

ENVIRONMENT

環境變量

FILES

用到的檔案

SEE ALSO

相關的資料

HISTORY

維護曆史與聯系方式

3.2常用系統工作指令  

3.2.1 echo指令  

用于在終端輸出字元串或者變量提取後的值:

[root@RHEL6 ~]# echo i am a learner

i am a learner

3.2.2 date指令  

用于顯示及設定時間的指令,用+開頭的參數:

參數

作用

%t

跳格[Tab鍵]

%H

小時(00~23)

%I

小時(00~12)

%M

分鐘(00~59)

%S

秒(00~59)

%j  

%m  

%Y

今年中的第幾天

月(01~12)

[root@RHEL6 ~]# date "+%Y-%m-%d %H:%M:%S"

2018-04-04 16:20:16

[root@RHEL6 ~]# date -s "20150101 10:10:10" //設定時間

Thu Jan 1 10:10:10 CST 2015

[root@RHEL6 ~]# date

Thu Jan 1 10:10:11 CST 2015

[root@RHEL6 ~]# ntpdate server 192.168.2.1 //指定ntp時間伺服器

3.2.3 reboot 、poweroff 、shutdown  

用于裝置重新開機、關閉(必須具備超級管理者權限):

[root@RHEL6 ~]# su test

[test@RHEL6 root]$ poweroff

poweroff: Need to be root

[test@RHEL6 root]$ reboot

reboot: Need to be root

3.2.4 wget指令  

用于在終端下載下傳網絡檔案,格式:wget + url(網站位址):  

[root@RHEL6 ~]# wget http://www.mqzzl.fun/mu.jpg

--2018-05-07 00:27:27-- http://www.mqzzl.fun/mu.jpg

Resolving www.mqzzl.fun... 47.104.195.140

Connecting to www.mqzzl.fun|47.104.195.140|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 29497 (29K) [image/jpeg]

Saving to: “mu.jpg”

100%[================================================>] 29,497 --.-K/s in 0.02s

2018-05-07 00:27:27 (1.57 MB/s) - “mu.jpg” saved [29497/29497]

-b

背景下載下傳模式

-P

下載下傳到指定目錄

-t

最大嘗試次數

-c

斷點續傳

-p

下載下傳頁面内所有資源,包括圖檔、視訊等

-r

遞歸下載下傳(目前站點所有的目錄和目錄内的内容)

[root@RHEL6 ~]# wget -r -p http://www.mqzzl.fun/  

3.2.5 ps指令  

用于檢視系統中程序狀态,主要還是抓取PID(端口号):

-a

顯示所有程序(包括其他使用者的程序)

-u

使用者以及其他詳細資訊

-x

顯示沒有控制終端的程序

[root@RHEL6 ~]# ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 19360 1536 ? Ss May06 0:02 /sbin/init

root 2 0.0 0.0 0 0 ? S May06 0:00 [kthreadd]

注意:參數使用上,長指令不允許聯合使用;短格式和長格式也不能聯和使用;短格式和短格式可以

3.2.6 top指令  

用于動态的監控程序活動和系統負載資訊,類似windows任務管理器:

[root@RHEL6 ~]# top

top - 00:52:12 up 2:16, 1 user, load average: 0.00, 0.00, 0.00

Tasks: 142 total, 1 running, 141 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st

Mem: 1906556k total, 1100336k used, 806220k free, 52916k buffers

Swap: 4194296k total, 0k used, 4194296k free, 812312k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

2553 root 20 0 45096 884 584 S 0.3 0.0 0:01.12 udisks-daemon

3003 root 20 0 15036 1256 948 R 0.3 0.1 0:00.10 top

3.2.7 pidof指令  

用于查詢某個進行服務的PID值(每個服務程序PID都是唯一的):

[root@RHEL6 ~]# pidof sshd

2764 1402

3.2.8 kill指令  

用于終止指定的PID服務:

[root@RHEL6 ~]# pidof httpd

3086 3085 3084 3083 3082 3081 3080 3079 3077

[root@RHEL6 ~]# kill 3086 3085

3084 3083 3082 3081 3080 3079 3077 //隻能殺死指定的PID

3.2.9 killall指令  

用于終止一類服務(通過服務名稱):

[root@RHEL6 ~]# killall httpd

[root@RHEL6 ~]# netstat -lnt | grep 80

[root@RHEL6 ~]# //PID被全部殺死

3.3常用系統狀态檢測指令  

3.3.1 ifconfig指令  

用于檢視本機目前的網絡配置和網絡狀态資訊:

[root@RHEL6 ~]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:0C:29:BF:DE:31

inet addr:192.168.2.200 Bcast:192.168.2.255 Mask:255.255.255.0

inet6 addr: fd7b:a22e:43e6:0:20c:29ff:febf:de31/64 Scope:Global

inet6 addr: fe80::20c:29ff:febf:de31/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:8003 errors:0 dropped:0 overruns:0 frame:0

TX packets:7430 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:1405291 (1.3 MiB) TX bytes:1303049 (1.2 MiB)

還可以臨時修改IP位址重新開機網卡失效

[root@RHEL6 ~]# ifconfig eth0 add 192.168.2.201

3.3.2 uname指令  

用于檢視目前系統相關資訊(核心版本号、硬體架構、主機名稱和作業系統類型等)

-a:完整檢視系統核心、主機名、核心發行版本、節點名、發行時間、硬體名、硬體

台、處理器類型、作業系統名稱等等:

[root@RHEL6 ~]# uname –a

Linux RHEL6 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64

x86_64 x86_64 GNU/Linux

-r:隻檢視系統核心:

[root@RHEL6 ~]# uname -r

2.6.32-431.el6.x86_64

-n:隻顯示主機名:

[root@RHEL6 ~]# uname -n

RHEL6

檢視系統版本:

[root@RHEL6 ~]# cat /etc/redhat-release

Red Hat Enterprise Linux Server release 6.5 (Santiago)

3.3.3 uptime指令  

用于檢視系統負載資訊:

[root@RHEL6 ~]# uptime

02:53:12 up 34 min, 2 users, load average: 0.00, 0.00, 0.00

3.3.4 free指令  

用于顯示目前系統中記憶體使用資訊:

[root@RHEL6 ~]# free

total used free shared buffers cached

Mem: 1906556 219524 1687032 0 14432 73100

-/+ buffers/cache: 131992 1774564

Swap: 4194296 0 4194296

注:buffers:磁盤緩存;cached:記憶體緩存

3.3.5 who指令  

用于檢視目前登入主機使用者終端資訊:

[root@RHEL6 ~]# who

root tty1 2018-05-07 02:19

root pts/0 2018-05-07 02:37 (192.168.100.1)

3.3.6 last指令  

用于檢視所有系統登入記錄:

[root@RHEL6 ~]# last

root pts/0 192.168.100.1 Mon May 7 02:37 still logged in

root pts/0 192.168.100.1 Mon May 7 02:20 - 02:37 (00:17)

root tty1 Mon May 7 02:19 still logged in

reboot system boot 2.6.32-431.el6.x Mon May 7 02:18 - 03:03 (00:44)

3.3.7 history指令  

1)用于檢視使用過的指令,可以用!+數字執行曆史指令:

[root@RHEL6 ~]# history

1 history

2 ifconfig

3 history

4 uname -r

5 ping

6 history

[root@RHEL6 ~]# !4

uname –r

2)預設存儲最近的1000條,可以通過修改/etc/profile中的HISTSIZE變量進行變更

3)清空history指令:

-c:全部清空

[root@RHEL6 ~]# history -c

-d+數字:清空指定指令

1 uname -r

2 history

[root@RHEL6 ~]# history -d 1

2 history -d 1

/etc/profile内增加一個參數 HISTCONTROL=ignorespace,可以靈活選擇儲存指令(指令前+空格)

[root@RHEL6 ~]# vi /etc/profile

[root@RHEL6 ~]# source /etc/profile

[root@RHEL6 ~]# history //可以看到沒有儲存uname-n

3.4工作目錄切換指令  

3.4.1 pwd指令  

用于檢視目前的路徑:

[root@RHEL6 ~]# pwd

/root

3.4.2 cd指令  

用于目錄切換

cd ~

傳回目前使用者家目錄下

cd -

傳回上次所在位置

cd .

進入目前目錄

cd ..

進入父目錄(上級目錄)

cd +路徑

最好從根開始

[root@RHEL6 ~]# cd /etc/sysconfig

[root@RHEL6 sysconfig]#

[root@RHEL6 sysconfig]# cd /var/

[root@RHEL6 var]# cd -

/etc/sysconfig

[root@RHEL6 sysconfig]# cd ~

[root@RHEL6 ~]#

[root@RHEL6 var]# cd /var/

[root@RHEL6 var]# cd ../root

3.4.3 ls 指令  

用于顯示目前指令的檔案資訊

顯示所有(包括隐藏檔案)

-l

以列顯示檔案屬性、時間、大小等

-d

顯示目錄屬性等

-h

以G/M/K為機關顯示

[root@RHEL6 ~]# ls

anaconda-ks.cfg Documents install.log Music Public Videos

Desktop Downloads install.log.syslog Pictures Templates www.mqzzl.fun

[root@RHEL6 ~]# ls -l Downloads/ //不加參數d顯示檔案夾内的内容

total 0

[root@RHEL6 ~]# ls -ld Downloads/

drwxr-xr-x. 2 root root 4096 Apr 4 15:09 Downloads/ //加參數d顯示檔案夾的屬性

3.5文本編輯指令---增删改查  

3.5.1 檢視指令  

1)cat:用于檢視純文字檔案,适用于内容較少的檔案:

[root@RHEL6 ~]# cat install.log

Installing libgcc-4.4.7-4.el6.x86_64

Installing setup-2.8.14-20.el6_4.1.noarch

Installing tzdata-2013g-1.el6.noarch

-n 顯示行号

[root@RHEL6 ~]# cat -n install.log

1 Installing libgcc-4.4.7-4.el6.x86_64

2 Installing setup-2.8.14-20.el6_4.1.noarch

3 Installing tzdata-2013g-1.el6.noarch

2)more:适用于檢視長文本,顯示百分比,隻能向下翻頁,不能回翻

[root@RHEL6 ~]# more install.log

Installing filesystem-2.4.30-3.el6.x86_64

--More--(4%)

3)less:适用于檢視長文本,可以上下翻頁

4)head:用于檢視檔案頭部,預設頭10行

–n指定顯示多少:

[root@RHEL6 ~]# head -n 4 install.log

5)tail:用于檢視檔案尾部,預設尾10行

-n 指定顯示多少:

[root@RHEL6 ~]# tail -n 5 install.log

Installing rootfiles-8.1-6.1.el6.noarch

Installing man-pages-3.22-20.el6.noarch

Installing words-3.0-17.el6.noarch

Installing redhat-indexhtml-6-6.el6.noarch

*** FINISHED INSTALLING PACKAGES ***

-f 用于動态檢視

3.5.2 tr指令  

用于臨時替換:

[root@RHEL6 Downloads]# cat test.txt

hello

[root@RHEL6 Downloads]# cat test.txt | tr [a-z] [A-Z]

HELLO

3.5.3 diff指令  

用于比較多個文本的差別:

[root@RHEL6 Downloads]# diff test.txt test1.txt

1c1,2

< hello

---

> HELLo

> good

注意:以<開始的行屬于檔案1,以>開始的行屬于檔案2。

3.6檔案目錄管理指令  

3.6.1 touch指令  

用于建立空白檔案:

[root@RHEL6 Downloads]# touch test

[root@RHEL6 Downloads]# ls -l

-rw-r--r--. 1 root root 0 May 7 08:30 test

3.6.2 mkdir指令  

用于建立目錄:

[root@RHEL6 Downloads]# mkdir temp

[root@RHEL6 Downloads]# ll

total 4

drwxr-xr-x. 2 root root 4096 May 7 08:34 temp

-p:遞歸建立目錄:

[root@RHEL6 Downloads]# mkdir -p ./a/b/c

[root@RHEL6 Downloads]# ls -d ./a/b/c

./a/b/c

3.6.3 cp指令  

用于複制:cp 源檔案 目的檔案:

[root@RHEL6 Downloads]# ls

a temp test

[root@RHEL6 Downloads]# cp test tsep

a temp test tsep

3.6.4 mv指令  

用于移動(重命名):mv 源檔案 目的檔案:

[root@RHEL6 Downloads]# mv a b

b temp test tsep

3.6.5 rm指令  

用于删除

-r:删除目錄

b temp

[root@RHEL6 Downloads]# rm -r b

rm: descend into directory `b'? y

rm: descend into directory `b/b'? y

rm: remove directory `b/b/c'? y

rm: remove directory `b/b'? y

rm: remove directory `b'? y

Temp

-f:強制删除:

temp

[root@RHEL6 Downloads]# rm -rf temp/

[root@RHEL6 Downloads]#

注意:慎用rm -rf /*

四、組合使用指令集  

4.1管道符  

把前一個指令原本要輸出到螢幕上的内容,當作後一個指令執行的條件

格式:指令A | 指令B | 指令C | …

如:輸出ps aux指令的行數:

[root@RHEL6 Downloads]# ps aux | wc –l

135

如:修改root密碼:

[root@RHEL6 Downloads]# echo zaq1xsw2 | passwd --stdin root

Changing password for user root.

passwd: all authentication tokens updated successfully.

4.2指令行的通配符  

*

比對零個或者多個字元

比對單個字元

[0-9]

比對任何數字

[a-z]

比對小寫字母

[A-Z]

比對大寫字母

[135]

比對1、3、5中任何一個數字

[root@RHEL6 ~]# ll /dev/[a-z]da

brw-rw----. 1 root disk 8, 0 May 7 02:18 /dev/sda

[root@RHEL6 ~]# ps aux | grep -E ?shd

root 1719 0.0 0.0 66604 1184 ? Ss 02:18 0:00 /usr/sbin/sshd

root 2051 0.0 0.2 100352 4048 ? Ss 02:37 0:02 sshd: root@pts/0

root 6711 0.0 0.0 103252 836 pts/0 S+ 09:14 0:00 grep -E ?shd

4.3轉義字元  

4.3.1反斜杠(\)  

用于使反斜杠後面的一個變量變成單純字元串:

[root@RHEL6 ~]# echo $SHELL

/bin/bash

[root@RHEL6 ~]# echo \$SHELL

$SHELL

4.3.2單引号(' ')  

用于轉義其中所用變量作為單純字元串:

[root@RHEL6 ~]# echo '$SHELL'

4.3.3雙引号(“ ”)  

用于保留其中的變量屬性,不進行轉義:

[root@RHEL6 ~]# echo "$SHELL"

4.3.3反引号(` `)  

用于把引号裡面的指令執行後傳回結果:

[root@RHEL6 ~]# echo uname -r

uname -r

[root@RHEL6 ~]# echo `uname -r`

繼續閱讀