一、 基礎介紹
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 就可以打開一個文件進行編輯