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 | 定位到下一個搜索到的關鍵詞 |
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
[root@RHEL6 ~]# pidof httpd
3084 3083 3082 3081 3080 3079 3077 //只能殺死指定的PID
3.2.9 killall命令
用於終止一類服務(通過服務名稱):
[root@RHEL6 ~]# killall httpd
[root@RHEL6 ~]# pidof 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.6.32-431.el6.x86_64
2)默認存儲最近的1000條,可以通過修改/etc/profile中的HISTSIZE變量進行變更
3)清空history命令:
-c:全部清空
[root@RHEL6 ~]# history -c
[root@RHEL6 ~]# history
1 history
-d+數字:清空指定命令
[root@RHEL6 ~]# history
1 uname -r
2 history
[root@RHEL6 ~]# history -d 1
[root@RHEL6 ~]# history
1 history
2 history -d 1
3 history
/etc/profile內增加一個參數 HISTCONTROL=ignorespace,可以靈活選擇保存命令(命令前+空格)
[root@RHEL6 ~]# vi /etc/profile
[root@RHEL6 ~]# source /etc/profile
[root@RHEL6 ~]# uname -r
2.6.32-431.el6.x86_64
[root@RHEL6 ~]# uname -n
RHEL6
[root@RHEL6 ~]# history //可以看到沒有保存uname-n
1 uname -r
2 history
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
[root@RHEL6 ~]#
3.4.3 ls 命令
用於顯示當前命令的文件信息
參數 | 作用 |
-a | 顯示所有(包括隱藏文件) |
-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 libgcc-4.4.7-4.el6.x86_64
Installing setup-2.8.14-20.el6_4.1.noarch
Installing tzdata-2013g-1.el6.noarch
Installing filesystem-2.4.30-3.el6.x86_64
--More--(4%)
3)less:適用於查看長文本,可以上下翻頁
4)head:用於查看文件頭部,默認頭10行
–n指定顯示多少:
[root@RHEL6 ~]# head -n 4 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
Installing filesystem-2.4.30-3.el6.x86_64
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
total 0
-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
-rw-r--r--. 1 root root 0 May 7 08:30 test
-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
[root@RHEL6 Downloads]# ls
a temp test tsep
3.6.4 mv命令
用於移動(重命名):mv 源文件 目的文件:
[root@RHEL6 Downloads]# ls
a temp test tsep
[root@RHEL6 Downloads]# mv a b
[root@RHEL6 Downloads]# ls
b temp test tsep
3.6.5 rm命令
用於刪除
-r:刪除目錄
[root@RHEL6 Downloads]# ls
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
[root@RHEL6 Downloads]# ls
Temp
-f:強制刪除:
[root@RHEL6 Downloads]# ls
temp
[root@RHEL6 Downloads]# rm -rf temp/
[root@RHEL6 Downloads]# ls
[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
/bin/bash
[root@RHEL6 ~]# echo '$SHELL'
$SHELL
4.3.3雙引號(“ ”)
用於保留其中的變量屬性,不進行轉義:
[root@RHEL6 ~]# echo $SHELL
/bin/bash
[root@RHEL6 ~]# echo "$SHELL"
/bin/bash
4.3.3反引號(` `)
用於把引號裏面的命令執行後返回結果:
[root@RHEL6 ~]# echo uname -r
uname -r
[root@RHEL6 ~]# echo `uname -r`
2.6.32-431.el6.x86_64
Linux系統運維學習---常用命令集