一、 基礎介紹
Linux 是一套免費使用和自由傳播的類 Unix 作業系統,是一個基於 POSIX 和 UNIX 的多使用者、多工、支援多執行緒和多 CPU 的作業系統。
1、發行的 linux 版本
Linux 的發行版說簡單點就是將 Linux 核心與應用軟體做一個打包。
市面上較知名的發行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS
2、linux 系統目錄結構
-
系統啟動必須:
- /boot:存放的啟動 Linux 時使用的核心檔案,包括連線檔案以及映象檔案。
- /etc:存放所有的系統需要的配置檔案和子目錄列表,更改目錄下的檔案可能會導致系統不能啟動。
- /lib:存放基本程式碼庫(比如 c++庫),其作用類似於 Windows 裡的 DLL 檔案。幾乎所有的應用程式都需要用到這些共享
- /sys: 這是 linux2.6 核心的一個很大的變化。該目錄下安裝了 2.6 核心中新出現的一個檔案系統 sysfs 。sysfs 檔案系統整合了下面 3 種檔案系統的資訊:針對程式資訊的 proc 檔案系統、針對裝置的 devfs 檔案系統以及針對偽終端的 devpts 檔案系統。該檔案系統是核心裝置樹的一個直觀反映。當一個核心物件被建立的時候,對應的檔案和目錄也在核心物件子系統中
-
指令集合:
- /bin:存放著最常用的程式和指令
- /sbin:只有系統管理員能使用的程式和指令。
-
外部檔案管理:
- /dev :Device(裝置)的縮寫, 存放的是 Linux 的外部裝置。注意:在 Linux 中訪問裝置和訪問檔案的方式是相同的。
- /media:類 windows 的其他裝置,例如 U 盤、光碟機等等,識別後 linux 會把裝置放到這個目錄下。
- /mnt:臨時掛載別的檔案系統的,我們可以將光碟機掛載在/mnt/上,然後進入該目錄就可以檢視光碟機裡的內容了。
-
臨時檔案:
- /run:是一個臨時檔案系統,儲存系統啟動以來的資訊。當系統重啟時,這個目錄下的檔案應該被刪掉或清除。如果你的系統上有 /var/run 目錄,應該讓它指向 run。
- /lost+found:一般情況下為空的,系統非法關機後,這裡就存放一些檔案。
- /tmp:這個目錄是用來存放一些臨時檔案的。
-
賬戶:
- /root:系統管理員的使用者主目錄。
- /home:使用者的主目錄,以使用者的賬號命名的。
- /usr:使用者的很多應用程式和檔案都放在這個目錄下,類似於 windows 下的 program files 目錄。
- /usr/bin:系統使用者使用的應用程式與指令。
- /usr/sbin:超級使用者使用的比較高階的管理程式和系統守護程式。
- /usr/src:核心原始碼預設的放置目錄。
-
執行過程中要用:
- /var:存放經常修改的資料,比如程式執行的日誌檔案(/var/log 目錄下)。
- /proc:管理記憶體空間!虛擬的目錄,是系統記憶體的對映,我們可以直接訪問這個目錄來,獲取系統資訊。這個目錄的內容不在硬碟上而是在記憶體裡,我們也可以直接修改裡面的某些檔案來做修改。
-
擴充套件用的:
- /opt:預設是空的,我們安裝額外軟體可以放在這個裡面。
- /srv:存放服務啟動後需要提取的資料(不用伺服器就是空)
3、linux 基礎命令
1) shutdown:計劃一個時間關機。
- 它可以被用於停止、關機、重啟機器。
- shutdown 會給系統計劃一個時間關機。
- 它可以被用於停止、關機、重啟機器。
shutdown -P now 關閉機器
shutdown -H now 停止機器
shutdown -r09:35 在 09:35am 重啟機器
shutdown -c 取消即將進行的關機
2)halt 通知硬體來停止所有的 CPU 功能,但是仍然保持通電。
你可以用它使系統處於低層維護狀態。
注意:在有些情況會它會完全關閉系統。
halt 停止機器
halt -p 關閉機器
halt --reboot 重啟機器
3) poweroff 會傳送一個 ACPI 訊號來通知系統關機。
poweroff 關閉機器
poweroff --halt 停止機器
poweroff --reboot 重啟機器
4) reboot 命令 reboot 通知系統重啟。
reboot 重啟機器
reboot --halt 停止機器
reboot -p 關閉機器
二、 Linux 使用者/使用者組
Linux 系統是一個多使用者多工的分時作業系統。
任何一個要使用系統資源的使用者,都必須首先向系統管理員申請一個賬號,然後以這個賬號的身份進入系統。
使用者賬號的管理工作主要涉及到使用者賬號的新增、修改和刪除。
1、增加一個使用者組
groupadd 選項 使用者組
可以使用的選項有:
-g GID 指定新使用者組的組標識號(GID)。
-o 一般與-g 選項同時使用,表示新使用者組的 GID 可以與系統已有使用者組的 GID 相同。
命令 | 解釋 |
---|---|
groupadd group1 | 此命令向系統中增加了一個新組 group1 |
groupadd -g 1003 group2 | 此命令向系統中增加了一個新組 group2,同時指定新組的組標識號是 1003 |
2、刪除一個使用者組
groupdel 使用者組
命令 | 解釋 |
---|---|
groupdel group1 | 此命令從系統中刪除組 group1。 |
3、修改使用者組的屬性
groupmod 選項 使用者組
常用的選項有:
-g GID 為使用者組指定新的組標識號。
-o 與-g 選項同時使用,使用者組的新 GID 可以與系統已有使用者組的 GID 相同。
-n 新使用者組 將使用者組的名字改為新名字
命令 | 解釋 |
---|---|
groupmod –g 10000 -n group3 group2 | 此命令將組 group2 的標識號改為 10000,組名修改為 group3。 |
4、新增使用者賬號
useradd 選項 使用者名稱
常用的選項有:
-c comment 指定一段註釋性描述。
-d 目錄 指定使用者主目錄,如果此目錄不存在,則同時使用-m 選項,可以建立主目錄。
-g 使用者組 指定使用者所屬的使用者組。
-G 使用者組,使用者組 指定使用者所屬的附加組。
-s Shell 檔案 指定使用者的登入 Shell。
-u 使用者號 指定使用者的使用者號,如果同時有-o 選項,則可以重複使用其他使用者的標識號。
使用者名稱: 指定新賬號的登入名。
命令 | 解釋 |
---|---|
useradd –d /usr/peter -m peter | 建立使用者 peter,其中-d 和-m 選項用來為登入名 peter 產生一個主目錄/usr/peter。 |
useradd -s /bin/sh -g group1 –G group2,root peter2 | 新建使用者 peter2,登入 Shell 是 /bin/sh,屬於 group1,又屬於 group2 和 root。 |
這裡可能新建組:#groupadd group1 及 groupadd group2 增加使用者賬號就是在/etc/passwd 檔案中為新使用者增加一條記錄,同時更新其他系統檔案如/etc/shadow, /etc/group 等。
5、刪除帳號
userdel 選項 使用者名稱
常用的選項:
-r,它的作用是把使用者的主目錄一起刪除。
命令 | 解釋 |
---|---|
userdel -r peter2 | 刪除使用者 peter2(主要是/etc/passwd, /etc/shadow, /etc/group 等)的記錄,同時刪除使用者的主目錄。 |
6、修改帳號
usermod 選項 使用者名稱
常用的選項包括:
-c, -d, -m, -g, -G, -s, -u 以及-o 等,這些選項的意義與 useradd 命令中的選項一樣,可以為使用者指定新的資源值。
命令 | 解釋 |
---|---|
usermod -s /bin/sh -d /home/p –g group2 peter | 將使用者 peter 的登入 Shell 修改為 sh,主目錄改為/home/p,使用者組改為 group2。 |
7、使用者口令的管理
使用者賬號剛建立時沒有口令,但是被系統鎖定,無法使用,必須為其指定口令後才可以使用,即使是指定空口令。
passwd 選項 使用者名稱
可使用的選項:
-l 鎖定口令,即禁用賬號。
-u 口令解鎖。
-d 使賬號無口令。
-f 強迫使用者下次登入時修改口令。
如果預設使用者名稱,則修改當前使用者的口令。例如,假設當前使用者是 peter,則下面的命令修改該使用者自己的口令:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是超級使用者,可以用下列形式指定任何使用者的口令
passwd peter
New password:*******
Re-enter new password:*******
為使用者指定空口令時,執行下列形式的命令:
passwd -d peter
passwd 命令還可以用-l(lock)選項鎖定某一使用者,使其不能登入,例如:
passwd -l peter
8、切換使用者組
$ newgrp root
這條命令將當前使用者切換到 root 使用者組,前提條件是 root 使用者組確實是該使用者的主組或附加組。
類似於使用者賬號的管理,使用者組的管理也可以通過整合的系統管理工具來完成
9、與使用者賬號有關的系統檔案
與使用者和使用者組相關的資訊都存放在一些系統檔案中。
這些檔案包括:/etc/passwd, /etc/shadow, /etc/group 等
9.1、/etc/passwd 檔案
Linux 系統中的每個使用者都在/etc/passwd 檔案中有一個對應的記錄行,它記錄了這個使用者的一些基本屬性。
例子:
# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
每一行記錄對應著一個使用者(其中 bin/sys/adm/uucp/lp/nobody 是偽使用者),每行記錄又被冒號(:)分隔為 7 個欄位,其格式和具體含義如下:
使用者名稱:口令:使用者標識號:組標識號:註釋性描述:主目錄:登入 Shell
9.2、/etc/group 檔案
使用者組的所有資訊都存放在/etc/group 檔案中。
root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam
此檔案的格式類似於/etc/passwd 檔案,由冒號(:)隔開若干個欄位,這些欄位有:
組名:口令:組標識號:組內使用者列表
三、 檔案與目錄
1、檔案基本屬性
1.1、檔案的屬性概貌。
第一個字元:代表這個檔案的型別,是目錄、檔案,還是一個連結等等
[ d ] 目錄
[ - ] 檔案
[ l ] 連結文件(link file)
[ b ] 可供儲存的介面裝置(可隨機存取裝置)
[ c ] 串列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置)
接下來的字元:以三個一組分成三組,用 r、w、x 三個引數的組合表示,位置不會改變
[ r ] 代表可讀(read)
[ w ] 代表可寫(write)
[ x ] 代表可執行(execute)
[ - ] 沒有許可權
1.2、檔案的屬主與屬組
每一個檔案,它都有一個特定的所有者,也就是對該檔案具有所有權的使用者。
同時,在 Linux 系統中,使用者是按組分類的,一個使用者屬於一個或多個組。
檔案所有者以外的使用者又可以分為檔案所有者的同組使用者和其他使用者。
Linux 系統按檔案所有者、檔案所有者同組使用者和其他使用者來規定了不同的檔案訪問許可權。
1.2.1、chgrp:更改檔案屬組
chgrp [-R] 屬組名 檔名
引數選項:
-R:遞迴更改檔案屬組,就是在更改某個目錄檔案的屬組時,如果加上-R 的引數,那麼該目錄下的所有檔案的屬組都會更改。
1.2.2、chown:更改檔案屬主,也可以同時更改檔案屬組
語法:
chown [–R] 屬主名 檔名
chown [-R] 屬主名:屬組名 檔名
進入 /root 目錄(~)將 install.log 的擁有者改為 bin 這個賬號:
命令 | 解釋 |
---|---|
chown root:root aa | 更改 aa 的屬主與屬組 |
1.2.3、chmod:更改檔案 9 個屬性
先複習一下剛剛上面提到的資料:檔案的許可權字元為:『-rwxrwxrwx』, 這九個許可權是三個三個一組的!其中,我們可以使用數字來代表各個許可權,各許可權的分數對
照表如下:
r:4 w:2 x:1
每種身份(owner/group/others)各自的三個許可權(r/w/x)分數是需要累加的,例如當許可權為: [-rwxrwx---] 分數則是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
所以等一下我們設定許可權的變更時,該檔案的許可權數字就是 770 啦!
變更許可權的指令 chmod 的語法是這樣的:
chmod [-R] xyz 檔案或目錄
選項與引數:
xyz : 就是剛剛提到的數字型別的許可權屬性,為 rwx 屬性數值的相加。
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都會變更
如果要將.bashrc 這個檔案所有的許可權都設定啟用,那麼命令如下:
chmod +x aa ##更改 aa 的屬性,加 x 許可權
chmod 777 aa ##更改 aa 的屬性,三組許可權都設定成 7
2、檔案與目錄管理命令
使用 man [命令] 來檢視各個命令的使用文件,如 :man cp
ls: 列出目錄 ---ll
cd:切換目錄pwd:顯示目前的目錄
mkdir:建立一個新的目錄
rmdir:刪除一個空的目錄
cp: 複製檔案或目錄 -----scp 網路複製
rm: 移除檔案或目錄
mv: 移動檔案與目錄,或修改檔案與目錄的名稱
3、硬連結與軟連結
3.1 硬連線
硬連線指通過索引節點來進行連線。
在 Linux 的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配一個編號,稱為索引節點號(I
node Index)。
在 Linux 中,多個檔名指向同一索引節點是存在的。比如:A 是 B 的硬連結(A 和 B 都是檔名),則 A 的目錄項中的 in
ode 節點號與 B 的目錄項中的 inode 節點號相同,即一個 inode 節點對應兩個不同的檔名,兩個檔名指向同一個檔案,A 和 B 對檔案系統來說是完全平等的。
刪除其中任何一個都不會影響另外一個的訪問。
硬連線的作用是允許一個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止“誤刪”的功能。其原因如上所述,因為對應該目錄的索引節點有一個以上的連線。
只刪除一個連線並不影響索引節點本身和其它的連線,只有當最後一個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。
也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。
3.2 軟連線
另外一種連線稱之為符號連線(Symbolic Link),也叫軟連線。軟連結檔案有類似於 Windows 的快捷方式。它實際上是一個特殊的檔案。
在符號連線中,檔案實際上是一個文字檔案,其中包含的有另一檔案的位置資訊。比如:A 是 B 的軟連結(A 和 B 都是檔名),A 的目錄項中的inode 節點號與 B 的目錄項中的 inode 節點號不相同,A 和 B 指向的是兩個不同的 inode,繼而指向兩塊不同的資料塊。
但是 A 的資料塊中存放的只是 B 的路徑名(可以根據這個找到 B 的目錄項)。A 和 B 之間是“主從”關係,如果 B 被刪除了,A 仍然存在(因為兩個是不同的檔案),但指向的是一個無效的連結。
$touch a #建立一個測試檔案 a
$ ln a b #建立 a 的一個硬連線檔案 b --echo 123 > a ##a,b 的內容同時變為 123
$ ln -s a c #建立 a 的一個符號連線檔案 c
$ ls -li # -i 引數顯示檔案的 inode 節點資訊
四、安裝程式 rpm/yum
1. rpm 方式
需要去下載相應的 rpm 格式的安裝包 xxxx.rpm
rpm [引數] rpm包
-i 安裝
-U 更新(很少用)
-e 解除安裝
-v 顯示安裝資訊
-h 顯示安裝進度
命令 | 解釋 |
---|---|
rpm -ivh jdk-8u172-linux-x64.rpm | 安裝 jdk8 並顯示安裝進度和安裝資訊 |
rpm -qa jdk | 檢視 jdk 的安裝包 |
rpm -e jdk1.8-1.8.0_221-fcs.x86_64 | 解除安裝 jdk8 ,只適用於 rpm 包安裝的軟體 |
2. yum 方式
yum( Yellow dog Updater, Modified)是一個在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端軟體包管理器。
基於 RPM 包管理,能夠從指定的伺服器自動下載 RPM 包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體
包,無須繁瑣地一次次下載、安裝。
yum 提供了查詢、安裝、刪除某一個、一組甚至全部軟體包的命令,而且命令簡潔而又好記。
2.1、yum 語法
yum [options] [command] [package ...]
options:可選,選項包括-h(幫助),-y(當安裝過程提示選擇全部為"yes"),-q(不顯示安裝的過程)等等。
command:要進行的操作。
package:操作的物件。
命令 | 解釋 |
---|---|
yum search jdk | 搜尋 jdk 安裝包 |
yum install -y java-1.8.0-openjdk.x86_64 | 安裝 openjdk,-y 表示安裝過程中的詢問自動選 y |
yum list installed jdk | 列出安裝的 jdk 軟體包 |
yum remove java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-headless.x86_64 | 解除安裝 jdk |
2.2、yum 常用命令
- 列出所有可更新的軟體清單命令:yum check-update
- 更新所有軟體命令:yum update3.僅安裝指定的軟體命令:yum install
<package_name>
- 僅更新指定的軟體命令:yum update
<package_name>
- 列出所有可安裝的軟體清單命令:yum list
- 刪除軟體包命令:yum remove
<package_name>
- 查詢軟體包 命令:yum search
<keyword>
- 清除快取命令:
- yum clean packages: 清除快取目錄下的軟體包
- yum clean headers: 清除快取目錄下的 headers
- yum clean oldheaders: 清除快取目錄下舊的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除快取目錄下的軟體包及舊的 headers
2.3、yum 源
官方的 yum 源在國內訪問效果不佳。
需要改為國內比較好的阿里雲或者網易的 yum 源。
在/etc/yum..repos.d/下進行如下操作(請做好相應備份):
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo CentOS-Base.repo
重建快取:
yum clean all
yum makecache
3、 配置環境變數
在 Linux 系統下,安裝應用程式後,在安裝目錄之外,可能仍然會出現 “command not found ”。
要解決所有地方都能使用應用程式,就涉及到環境變數 path 的設定問題
3.1、配置環境變數
系統環境變數檔案在/etc 下的 profile 檔案,我們可以用 vi profile 命令來編輯該檔案,將變數新增進去
一般需要將安裝檔案的 bin 目錄加入 path 中,可在 profile 中加入下面一行程式碼,如
vim /etc/profile
# 末尾追加以下內容
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
3.2、環境變數生效
source /etc/profile
五、 Shell 指令碼
shell 語言是一門 linux 系統下的工具語言,主要用於寫一些 linux 系統下的操作命令,實際上 Shell 是一個命令直譯器,
它解釋由使用者輸入的命令並且把它們送到核心。
或者直接理解為 shell 命令是可以執行多個 linux 命令的指令碼。
Shell 種類眾多,有以下種類(一般使用的 Bash,就是 Bourne Again Shell,它是大多數 Linux 系統預設的 Shell):
- Bourne Shell(/usr/bin/sh 或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
shell 並不複雜,有程式設計基礎的話,簡單入門兩三個小時就可以入門,主要是把一些重複操作的 linux 命令寫成 shell 腳
本來執行一下。以下列出 shell 常規的一些要素:
1、直譯器與執行 shell
直譯器
#!/bin/sh Bourne shell 版本
#!/bin/bash Bourne Again Shell 版本
執行 shell
chomd +x ./test.sh #使指令碼具有執行許可權
./test.sh #執行指令碼 “./”表示當前目錄下
2、演示
#!/bin/bash ##宣告 bash 指令碼
##demo ##註釋
echo $PATH ##列印 PATH 環境變數
name="Peter" ##定義變數 name
echo $name ##列印 name 值
echo "I am ${name}'s friend" ##字串拼接
echo ""
name2="I am ${name}'s good friend" ##字串拼接echo $name2
echo ""
names=("Peter" "james" "deer") ##定義陣列
echo ${names[@]} ##遍歷陣列
echo "I am ${names[1]}'s friend" ##第二個元素
echo "I have ${#names[@]} friends" ##陣列長度
echo ""
for var in ${names[@]}; ##迴圈陣列
do
if test $var = 'Peter' ##字串相等
then
echo "I am Peter"
else
echo "I am ${var}'s friend"
fi
done
echo ""
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; ##查詢是否有 ssh 服務
then echo "ssh service open";
fi
echo ""
echo "sh arg: $0 $1" ##sh 的傳參
重定向:
1、test 'aa' -eq "bb" > out ##命令輸出到 out 檔案,報錯資訊並不會進入 out
2、test 'aa' -eq "bb" > out 2>&1 ##將 stderr 合併到 stdout,則報錯資訊進入了 out
六、 常用命令
1. 最最常用的是 cd 命令
cd 進入使用者主目錄;
cd ~ 進入使用者主目錄;
cd - 返回進入此目錄之前所在的目錄;
cd .. 返回上級目錄(若當前目錄為“/“,則執行完後還在“/";".."為上級目錄的意思);
cd ../.. 返回上兩級目錄;
ls,ll, wget, curl, history
2. 新建資料夾和檔案:mkdir touch
mkdir 建立資料夾
mkdir dirname 直接跟資料夾名,可在當前目錄下建立資料夾
mkdir /opt/lamp/dirname 可跟路徑
mkdir -p /opt/lam/dirname 假如 lam 不存在,需要用-p 才可以建立該資料夾
touch 新建檔案
touch dilename 可直接跟檔名在當前目錄下建立新的檔案
3. cat/less/more/tail 等檔案檢視命令
-n 或-number:有 1 開始對所有輸出的行數編號;
-b 或--number-nonblank:和-n 相似,只不過對於空白行不編號;
-s 或--squeeze-blank:當遇到有連續兩行以上的空白行,就代換為一行的空白行;
-A:顯示不可列印字元,行尾顯示“$”;
-e:等價於"-vE"選項;
-t:等價於"-vT"選項;
-e:檔案內容顯示完畢後,自動退出;
-f:強制顯示檔案;
-g:不加亮顯示搜尋到的所有關鍵詞,僅顯示當前顯示的關鍵字,以提高顯示速度;
-l:搜尋時忽略大小寫的差異;
-N:每一行行首顯示行號;
-s:將連續多個空行壓縮成一行顯示;
-S:在單行顯示較長的內容,而不換行顯示;
-x<數字>:將 TAB 字元顯示為指定個數的空格字元。
-<數字>:指定每屏顯示的行數;
-d:顯示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;
-c:不進行滾屏操作。每次重新整理這個螢幕;
-s:將多個空行壓縮成一行顯示;
-u:禁止下劃線; +<數字>:從指定數字的行開始顯示。
按 Space 鍵:顯示文字的下一屏內容。
按 Enier 鍵:只顯示文字的下一行內容。
按斜線符|:接著輸入一個模式,可以在文字中尋找下一個相匹配的模式。
按 H 鍵:顯示幫助屏,該屏上有相關的幫助資訊。按 B 鍵:顯示上一屏內容。
按 Q 鍵:退出 rnore 命令。
--retry:即是在tail命令啟動時,檔案不可訪問或者檔案稍後變得不可訪問,都始終嘗試開啟檔案。使用此選項時需要與選項“——follow=name” 連用;
-c 或——bytes=:輸出檔案尾部的 N(N 為整數)個位元組內容;
-f 或;--follow:顯示檔案最新追加的內容。“name”表示以檔名的方式監視檔案的變化。“-f”與“-fdescriptor”等效;
-F:與選項“-follow=name”和“--retry"連用時功能相同;
-n 或——line=:輸出檔案的尾部 N(N 位數字)行內容。
--pid=<程式號>:與“-f”選項連用,當指定的程式號的程式終止後,自動退出 tail 命令;
-q 或——quiet 或——silent:當有多個檔案引數時,不輸出各個檔名;
-s<秒數>或——sleep-interal=<秒數>:與“-f”選項連用,指定監視檔案變化時間隔的秒數;
-v 或——verbose:當有多個檔案引數時,總是輸出各個檔名;
一般 tail 命令最常用的-n 和-f,例:
tail filename 讀取 filename 最後 10 行內容
tail -f filename 實時動態讀取 filename 最後 10 行內容
tail -20f filename 實時動態讀取 filename 最後 20 行內容
cat 和 less 及 more 指令相似,cat 是一次性讀取所有內容,檔案內容較多時速度較慢。less 與 more 的區別在於:less 可以
前後翻頁檢視,more 只能向前翻頁檢視。
tail 則用於實時獲取 log 資訊,從後向前讀取內容
上述四種命令均可跟 grep 搭配使用 cat/less/tail |grep mysql
4. 檢視檔案大小的命令 du/df
du -sh * 顯示當前目錄下所有檔案的大小
du -sh filename 顯示該檔案大小
du -sh 顯示當前目錄所佔空間大小
-s 或 僅顯示總計,只列出最後加總的值。
-h 或 以 K,M,G 為單位,提高資訊的可讀性。
df 顯示磁碟佔用資訊
直接 df 預設一 k 為單位
df -lh 顯示本地系統的佔用資訊,以 K,M,G 為單位
5. 大重點--文字編輯器 vi
vi 命令是 UNIX 作業系統和類 UNIX 作業系統中最通用的全螢幕純文字編輯器。
Linux 中的 vi 編輯器叫 vim,它是 vi 的增強版(vi Improved),與 vi 編輯器完全相容,而且實現了很多增強功能。
vi 編輯器支援編輯模式和命令模式,編輯模式下可以完成文字的編輯功能,命令模式下可以完成對檔案的操作命令,要正確使用 vi 編輯器就必須
熟練掌握著兩種模式的切換。
預設情況下,開啟 vi 編輯器後自動進入命令模式。從編輯模式切換到命令模式使用“esc”鍵,從命令模式切換到編輯模式使用“A”、“a”、
“O”、“o”、“I”、“i”鍵。
vi 編輯器提供了豐富的內建命令,有些內建命令使用鍵盤組合鍵即可完成,有些內建命令則需要以冒號“:”開頭輸入。常用內建命令如下:
1 Ctrl+u:向檔案首翻半屏;
2 Ctrl+d:向檔案尾翻半屏;
3 Ctrl+f:向檔案尾翻一屏;
4 Ctrl+b:向檔案首翻一屏;
5 Esc:從編輯模式切換到命令模式;
6 ZZ:命令模式下儲存當前檔案所做的修改後退出 vi;
7 :行號:游標跳轉到指定行的行首;
8 :$:游標跳轉到最後一行的行首;
9 x 或 X:刪除一個字元,x 刪除游標後的,而 X 刪除游標前的;
10 D:刪除從當前游標到游標所在行尾的全部字元;
11 dd:刪除游標行正行內容;
12 ndd:刪除當前行及其後 n-1 行;
13 nyy:將當前行及其下 n 行的內容儲存到暫存器?中,其中?為一個字母,n 為一個數字;
14 p:貼上文字操作,用於將快取區的內容貼上到當前游標所在位置的下方;
15 P:貼上文字操作,用於將快取區的內容貼上到當前游標所在位置的上方;
16 /字串:文字查詢操作,用於從當前游標所在位置開始向檔案尾部查詢指定字串的內容,查詢的字串會被加亮顯示;
17 ?name:文字查詢操作,用於從當前游標所在位置開始向檔案頭部查詢指定字串的內容,查詢的字串會被加亮顯示;
18 a,bs/F/T:替換文字操作,用於在第 a 行到第 b 行之間,將 F 字串換成 T 字串。其中,“s/”表示進行替換操作;
19 a:在當前字元後新增文字;
20 A:在行末新增文字;
21 i:在當前字元前插入文字;
22 I:在行首插入文字;
23 o:在當前行後面插入一空行;
24 O:在當前行前面插入一空行;
25 :wq:在命令模式下,執行存檔退出操作;
26 :w:在命令模式下,執行存檔操作;
27 :w!:在命令模式下,執行強制存檔操作;
28 :q:在命令模式下,執行退出 vi 操作;
29 :q!:在命令模式下,執行強制退出 vi 操作;
30 :e 檔名:在命令模式下,開啟並編輯指定名稱的檔案;
31 :n:在命令模式下,如果同時開啟多個檔案,則繼續編輯下一個檔案;
32 :f:在命令模式下,用於顯示當前的檔名、游標所在行的行號以及顯示比例;
33 :set nu:在命令模式下,用於在最左端顯示行號;
34 :set nonu:在命令模式下,用於在最左端不顯示行號;
35 :1,3y 複製第一行到第三行
36 :1,3d 刪除第一行到第三行
37 :1,3s/str/str_new/g 替換第一行到第三行中的字串
38 :1,3s/str/str_new 替換第一行到第三行中的字串第一個字元
39 :1,3 g/str /d 刪除第一行到第三行中含有這個字串的行
6. 重定向 >
輸出重定向
who > bbb.txt 將 aaa 的內容寫入 bbb 中,覆蓋寫入
cat bbb.txt >> ccc.txt 講 aaa 的內容追加寫入 bbb 中,不覆蓋原來內容
> bbb.txt 將 bbb 清空
輸入重定向
大多數 UNIX 系統命令從你的終端接受輸入並將所產生的輸出傳送回 到您的終端。
一個命令通常從一個叫標準輸入的地方讀取輸入,預設情況下,這恰好是你的終端。
同樣,一個命令通常將其輸出寫入到標準輸出,預設情況下,這也是你的終端。
grep 05:37:43.730 < web.2019-07-22.0.log
7. 檢視服務
netstat -nlpt|grep 80 檢視該埠號是否被佔用
free -m //檢視 LINUX 記憶體剩餘容量
ps 可以檢視具體的程式資訊,一般與管道符連線其他命令使用,如:grep
ps 常用引數-ef/-aux,一般最常用還是-ef,例:ps -ef|grep mysql 查詢 mysql 程式
top 也可檢視程式資訊,而且是動態顯示
whoami 檢視當前登陸使用者
who 檢視多少使用者在使用系統
date 檢視系統時間,可跟時間格式使用
cal 檢視日曆,可跟年份,檢視指定的年份
chkconfig --list #檢視系統服務啟動
chkconfig iptables on #開機啟動該服務
chkconfig iptables off #開機不啟動該服務
service iptables start #啟動該服務
service iptables restart #重啟啟該服務
ps -ef|grep mysql|grep -v grep|awk '{print $2}'ps -ef|grep mysql 是查詢 mysql 服務的程式
|後的 grep -v grep 是匹配不包含 grep 的行awk 是取查詢結果的第幾列,awk '{print $2}'則是取第二列的值
grep 無引數則顯示匹配的行
-c 顯示匹配的行數
-v 顯示不匹配的行
8. 殺掉程式 kill 命令
kill 最常用的引數是-9,用法:kill -9 程式號 即可強制殺掉該程式
統計命令 wc
常用的引數是 -l 用法:wc -l
ps -ef|grep mysql|wc -l 統計查詢出的 mysql 程式的行數
查詢命令 find/locate/whereis/which
find -name 後跟檔名,可檢視檔案所在目錄,可跟 user,檢視屬於 user 的檔案
find -name filename 查詢 filename 所在目錄
find -name name* 查詢開頭為 name 的檔案所在目錄
find -name *name 查詢結尾為 name 的檔案所在目錄
find -name *name* 查詢包含 name 字串的檔案所在目錄
find -user faith
locate 用法與 find 基本相似,只是 locate 搜尋速度較快些,locate 一般系統不會自帶,需要安裝,可用 yum 安裝
whereis 只能搜尋程式名
which 則是隻查詢 path 中的環境變數
9. 壓縮和解壓命令 gzip/guzip zip/unzip tar
gzip 和 gunzip 一般可用引數是-r,例:
gzip test.txt 壓縮檔案
gzip -r test 壓縮所有 test 下的子檔案
gunzip test.gz 解壓檔案
zip 和 unzip 可用引數較多,例:
zip test 不跟引數直接使用
zip -r test 遞迴壓縮 test 下所有檔案
unzip test 不跟引數直接使用
unzip -n 解壓時不覆蓋已存在的檔案
unzip -o 解壓時覆蓋已存在的檔案
unzip -d 將檔案解壓到目錄中去
tar 使用的較為多些,用法也多,最常用的是 zxcvf 幾個引數,例:
-c 建立新文件,就是代表壓縮的意思
-x 解壓文件
-f 使用歸檔檔案
-z 使用 gzip 解壓
-v 詳細輸出模式
最為常用的使用方法:
tar -zcvf test.tar test 將 test 壓縮為 test.tar 並輸出詳細資訊
tar -zxvf test.tar 將 test.tar 解壓縮,並輸出詳細資訊
10. 定時任務 crontab
crontab 檔案的格式為“M H D m d cmd”,M 為分鐘 1-59,H 為小時 1-24,D 為天 1-31,m 為月 1-12,d 為周 0-6(0
為週日)。
cmd 代表要執行的程式,*代表每分鐘都執行
crontab [-u user] 檔案
crontab [-u user] {-r -e -l}
不加-u 的話預設當前使用者
-e:執行文字編輯器來設定時程表,內定的文字編輯器是 vi。
-r:刪除目前的時程表。
-l:列出目前的時程表。
crontab -e 就可以開啟一個檔案進行編輯