所有的 Linux 系統都會內建 vi 文本編輯器。
Vim 具有程序編輯的能力,可以看做是 Vi 的增強版本,可以主動的以字體顏色辨別語法的正確性,方便程序設計。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式設計師中被廣泛使用。
正常模式
在正常模式下,我們可以使用快捷鍵。
以 vim 打開一個檔案就直接進入一般模式了(這是默認的模式)。在這個模式中, 你可以使用『上下左右』按鍵來移動光標,你可以使用『刪除字符』或『刪除整行』來處理檔案內容, 也可以使用
『複製、貼上』來處理你的文件數據。
插入模式/編輯模式
在模式下,程式設計師可以輸入內容。
按下 i, I, o, O, a, A, r, R 等任何一個字母之後才會進入編輯模式, 一般來說按 i 即可
命令行模式
在這個模式當中, 可以提供你相關指令,完成讀取、存檔、替換、離開 vim 、顯示行號等的動作則是在此模式中達成的!
三種模式的轉換。
說明:進去vim之後是一般模式,輸入i進入編輯模式,輸入":"或者「/」進入命令模式。
拷貝當前行:yy
拷貝當前行向下的5行,5yy,粘貼§
刪除當前行dd,刪除5行5dd
查找某個單詞:【命令行模式下】/關鍵字,回車查找,輸入n查找下一個
設置文件行號顯示/隱藏,:set nu或者: set nonu
定位到末行:【G】,定位到首行【gg】
撤銷動作:【正常模式下】,u撤銷
光標移動到第22行:【:set nu】【輸入20】【shift + g】
向下插入一行:【正常模式下】,o插入
向上插入一行:【正常模式下】,O插入
定位到行首:【正常模式下】,I
定位到行尾:【正常模式下】,A
2、開關機、用戶登錄與註銷2.1、常用的開關機命令shutdown -h now : 表示立即關機
shutdown -h 1 : 表示 1 分鐘後關機
shutdown -r now: 立即重啟
halt
就是直接使用,效果等價於關機
reboot
就是重啟系統。
sync :
把內存的數據同步到磁碟
當我們關機或者重啟時,都應該先執行以下 sync 指令,把內存的數據寫入磁碟,防止數據丟失。
2.2、用戶登錄與註銷儘量少用root登錄,可以避免權限的失誤。登錄之後可用"su - 用戶名"來切換系統管理員。
logout可註銷用戶。
logout 註銷指令在圖形運行級別無效,在 運行級別 3 下有效.
3、用戶管理3.1、linux系統用戶說明
說明
Linux 系統是一個多用戶多任務的作業系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個帳號,然後以這個帳號的身份進入系統。
Linux 的用戶需要至少要屬於一個組。(管理權限)
3.2、用戶操作相關指令useradd user1,常見user1,家目錄在/home/user1
useradd -d /home/rq user2,指定家目錄的位置
指定用戶密碼:passwd 用戶名
刪除用戶:userdel 【選項】用戶名
userdel user1,刪除user1,保留家目錄位置
userdel -r user2,刪除user2,同時刪除家目錄。
查詢用戶信息:id 用戶名。
切換用戶:su - 用戶名。
su - root 切換到root,切換到高權限需要輸入密碼。
exit,返回到原來的用戶。
useradd -g group1 user1
usermod -g group1 user1
3.3、用戶相關文件參數介紹第一個503指用戶id
第二個503指組id
/home/mycentos:家目錄
/bin/bash:shell。
組(group)的配置文件,記錄 Linux 包含的組的信息每行含義:組名:口令:組標識號:組內用戶列表
4、運行級別0 :關機
1 :單用戶【找回丟失密碼】
2:多用戶狀態沒有網絡服務
3:多用戶狀態有網絡服務
4:系統未使用保留給用戶
5:圖形界面
6:系統重啟
常用運行級別是 3 和 5 ,要修改默認的運行級別可改文件**/etc/inittab 的 id:5:initdefault:這一行中的數字**
思路:進入到 單用戶模式,然後修改 root 密碼。因為進入單用戶模式,root 不需要密碼就可以登錄。
開機->在引導時輸入 回車鍵-> 看到一個界面輸入 e -> 看到一個新的界面,選中第二行(編輯內核)在輸入 e-> 在這行最後輸入 1 ,再輸入 回車鍵->再次輸入 b ,這時就會進入到單用戶模式。
這時,我們就進入到單用戶模式,使用 passwd 指令來修改 root 密碼。
開機出現下面界面時,3s內按下回車鍵。
在下面的界面,選擇自己的centos的版本。按下字母e。
選擇第二項,按下字母e編輯
在結尾處輸入空格+single/1,回車。
按下字母b,進入單用戶模式
在命令行重置密碼,重啟即可。
man [命令或配置文件](功能描述:獲得幫助信息)
man ls
helphelp 命令 (功能描述:獲得 shell 內置命令的幫助信息)
6、文件目錄相關命令6.1、pwdpwd (功能描述:顯示當前工作目錄的絕對路徑)
6.2、lsls [ 選 項] [目錄或是文件]
-a :顯示當前目錄所有的文件和目錄,包括隱藏的。
-l :以列表的方式顯示信息
cd [參數] (功能描述:切換到指定目錄)
cd ~:回到家目錄
cd …:回到上一級目錄
cd -:返回上一步的位置。
cd -P /path:返回path的上一級。
絕對路徑: cd /home,從根目錄開始定位
相對路徑:cd …/home,從當前目錄開始定位
mkdir 指令用於創建目錄(make directory)
-p :創建多級目錄
rmdir [選項] 要刪除的空目錄
rmdir -rf:刪除非空目錄
touch 文件名稱:創建空文件
6.7、cpcp 指令拷貝文件到指定目錄
cp [選項] source dest
-r :遞歸複製整個文件夾。重複文件會提示。
\cp -r path1/ path2/:重複文件不會提示。
rm [選項] 要刪除的文件或目錄
-r :遞歸刪除整個文件夾
-f :強制刪除不提示
mv 移動文件與目錄或重命名
mv oldNameFile newNameFile (功能描述:重命名)
mv /temp/movefile /targetFolder (功能描述:移動文件)
cat 查看文件內容,是以只讀的方式打開。
cat [選項] 要查看的文件
-n :顯示行號
more 指令是一個基於 VI 編輯器的文本過濾器,它以全屏幕的方式按頁顯示文本文件的內容。more 指令中內置了若干快捷鍵
more 要查看的文件
**快捷鍵見下圖。
**
less 指令用來分屏查看文件內容,它的功能與 more 指令類似,但是比 more 指令更加強大,支持各種顯示終端。**less 指令在顯示文件內容時,並不是一次將整個文件加載之後才顯示,而是根據顯示需要加載內容,**對於顯示大型文件具有較高的效率。
less 要查看的文件
快捷鍵
"> "輸出重定向 : 會將原來的文件的內容覆蓋
">>"追加:不會覆蓋原來文件的內容,而是追加到文件的尾部。
echo [選項] [輸出內容]:輸出內容到控制臺
head 用於顯示文件的開頭部分內容,默認情況下 head 指令顯示文件的前 10 行內容
head 文件 (功能描述:查看文件頭 10 行內容)
head -n 5 文件 (功能描述:查看文件頭 5 行內容,5 可以是任意行數)
tail 用於輸出文件中尾部的內容,默認情況下 tail 指令顯示文件的後 10 行內容。
tail 文件:功能描述:查看文件後 10 行內容
tail -n 5 文件:功能描述:查看文件後 5 行內容,5 可以是任意行數
tail -f 文件:功能描述:實時追蹤該文檔的所有更新,工作經常使用
軟連結也叫符號連結,類似於 windows 裡的快捷方式,主要存放了連結其他文件的路徑
ln -s [原文件或目錄] [軟連結名] (功能描述:給原文件創建一個軟連結)
6.12、history查看已經執行過歷史命令,也可以執行歷史指令
history :查看李四指令
history 20:查看最近使用的20個指令
執行552號指令
date (功能描述:顯示當前時間)
date 「+%Y - %m - %d - %H:%M:%S" :顯示年月日時分秒
date -s 字符串時間:設置時間
設置時間。
cal [選項] (功能描述:不加選項,顯示本月日曆)
find 指令將從指定目錄向下遞歸地遍歷其各個子目錄,將滿足條件的文件或者目錄顯示在終端。
find [搜索範圍] [選項]
查找所有以txt結尾的文件。
+n:大於,-n:小於,n:等於
locaate 指令可以快速定位文件路徑。locate 指令利用事先建立的系統中所有文件名稱及路徑的locate 資料庫實現快速定位給定的文件。Locate 指令無需遍歷整個文件系統,查詢速度較快。為了保證查詢結果的準確度,管理員必須定期更新 locate 時刻
locate 搜索文件。
由於 locate 指令基於資料庫進行查詢,所以第一次運行前,必須使用 updatedb 指令創建 locate 資料庫。
grep 過濾查找 , 管道符,「|」,表示將前一個命令的處理結果輸出傳遞給後面的命令處理。
grep [選項] 查找內容 源文件
gzip 文件 (功能描述:壓縮文件,只能將文件壓縮為*.gz 文件)
gunzip 文 件.gz (功能描述:解壓縮文件命令)
說明:當我們使用 gzip 對文件進行壓縮後,不會保留原來的文件
zip 用於壓縮文件, unzip 用於解壓的,這個在項目打包發布中很有用的
zip [選項] XXX.zip 將要壓縮的內容(功能描述:壓縮文件和目錄的命令)
unzip [選項] XXX.zip (功能描述:解壓縮文件)
-r:遞歸壓縮,即壓縮目錄
-d<目錄> :指定解壓後文件的存放目錄
tar 指令 是打包指令,最後打包後的文件是 .tar.gz 的文件。
tar [選項] XXX.tar.gz 打包的內容 (功能描述:打包目錄,壓縮後的文件格式.tar.gz)
在 linux 中的每個用戶必須屬於一個組,不能獨立於組外。在 linux 中每個文件有所有者、所在組、其它組的概念
所有者:默認是文件的創建者,可以修改
所在組:默認是創建者所在的組,可以修改
其他組:除了所有者和所在組的用戶外,系統的其他用戶所在的組就是文件的其他組。
當某個用戶創建了一個文件後,默認這個文件的所在組就是該用戶所在的組。
10.2、修改文件的所有者和所在組chown 用戶名 文件名
chown newowner:newgroup file 改變用戶的所有者和所有組
chown -R tom kkk/:將kkk/目錄下的所有文件(目錄/子目錄)的所有者都遞歸更改為tom。
修改文件的所有者為tom:
chgrp 組名 文件名
chgrp -R 組名 kkk/:將kkk/目錄下的所有目錄下的文件的所在組遞歸更改為 組名。
修改 文件所在組為police。
usermod -g 組名 用戶名
10.3、文件權限ls -ahl查看的內容:
0-9 位說明
1)第 0 位確定文件類型(d, - , l , c , b)【l:軟連結,c:字符設備,鍵盤、滑鼠等,b:塊文件,磁碟,d:目錄,-:普通文件】
2)第 1-3 位確定所有者(該文件的所有者)擁有該文件的權限。—User
3)第 4-6 位確定所屬組(同用戶組的)擁有該文件的權限,—Group
4)第 7-9 位確定其他用戶擁有該文件的權限 —Other
5)上述的」1「,如果是文件,表示硬連結的數目,如果是目錄表示該目錄中子目錄的 個數。
6)」0「表示文件/目錄大小
[ r ]代表可讀(read): 可以讀取,查看
[ w ]代表可寫(write): 可以修改,但是不代表可以刪除該文件,刪除一個文件的前提條件是對該文件所在的目錄有寫權限,才能刪除該文件.
[ x ]代表可執行(execute):可以被執行
通過 chmod 指令,可以修改文件或者目錄的權限
①通過±=變更權限
u:所有者 g:所有組 o:其他人 a:所有人(u、g、o 的總和)
chmod u=rwx,g=rx,o=x 文件目錄名
chmod o+w 文件目錄名
chmod a-x 文件目錄名
②通過數字變更權限
規則:r=4 w=2 x=1
rwx=4+2+1=7 chmod u=rwx,g=rx,o=x
文件目錄名相當於 chmod 751 文件目錄名
要求:將 /home/abc.txt 文件的權限修改成 rwxr-xr-x, 使用給數字的方式實現:
rwx = 4+2+1 = 7
r-x = 4+1=5
r-x = 4+1 =5
指令:chmod 755 /home/abc.txt
任務調度:是指系統在某個時間執行的特定的命令或程序。
任務調度分類:
1.系統工作:有些重要的工作必須周而復始地執行。如病毒掃描等
2.個別用戶工作:個別用戶可能希望執行某些程序,比如對 mysql 資料庫的備份。
crontab [選項]
conrtab –r:終止任務調度。
crontab –l:列出當前有那些任務調度
service crond restart [重啟任務調度]
示意圖
1.先編寫腳本文件。
touch /usr/task1.sh
date >> /usr/mydate
2.設置腳本的可執行權限:
chmod 744 /usr/task.sh
3.編寫定時任務:
crontab -e
鍵入內容:*/1 * * * * /usr/task1.sh
先編寫一個文件 /home/mytask3.sh
/usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak
給 mytask3.sh 一個可以執行權限
chmod 744 /home/mytask3.sh
crontab -e
0 2 * * * /home/mytask3.sh
成功
11.1、參數說明1) mbr 分區:
1.最多支持四個主分區
2.系統只能安裝在主分區
3.擴展分區要佔一個主分區
4.MBR 最大隻支持 2TB(一個分區最多支持2TB),但擁有最好的兼容性
2)gtp 分區:更優越
1.支持無限多個主分區(但作業系統可能限制,比如 windows 下最多 128 個分區)
2.最大支持 18EB 的大容量(1EB=1024 PB,1PB=1024 TB )
3.windows7 64 位以後支持 gtp
Linux 來說無論有幾個分區,分給哪一目錄使用,它歸根結底就只有一個根目錄,一個獨立且唯一的文件結構 , Linux 中每個分區都是用來組成整個文件系統的一部分。
Linux 採用了一種叫「載入」的處理方法,它的整個文件系統中包含了一整套的文件和目錄, 且將一個分區和一個目錄聯繫起來。這時要載入的一個分區將使它的存儲空間在一個目錄下獲得。
1)Linux 硬碟分 IDE 硬碟和 SCSI 硬碟,目前基本上是 SCSI 硬碟
2)對於 IDE 硬碟,驅動器標識符為「hdx~」,其中「hd」表明分區所在設備的類型,這裡是指 IDE 硬碟了。「x」為盤號(a 為基本盤,b 為基本從屬盤,c 為輔助主盤,d 為輔助從屬盤),「~」代表分區,前四個分區用數字 1 到 4 表示,它們是主分區或擴展分區,從 5 開始就是邏輯分區。例,hda3 表示為第一個 IDE 硬碟上的第三個主分區或擴展分區,hdb2 表示為第二個 IDE 硬碟上的第二個主分區或擴展分區。
3)對於 SCSI 硬碟則標識為「sdx~」,SCSI 硬碟是用「sd」來表示分區所在設備的類型的,其餘則和 IDE 硬碟的表示方法一樣。
lsblk -f:查看系統的分區情況。
df -lh:查看系統的整體磁碟使用情況
du -h /目錄:查看指定目錄的磁碟使用情況
-s 指定目錄佔用大小匯總
-h 帶計量單位
-a 含文件
–max-depth=1 子目錄深度
-c 列出明細的同時,增加匯總值
1)統計指定目錄下的文件個數
2)統計指定目錄下的目錄的個數
3)統計指定目錄下的文件個數【包括子文件夾中的】
4)統計指定目錄下的目錄個數【包括子文件夾裡的】
5)以樹狀展示目錄結構
tree
如果沒有安裝tree命令,【yum install tree】
12、網絡相關ping ip或者域名:判斷當前主機和目標伺服器的連通情況。
修改後,一定要 重啟服務
service network restart
reboot 重啟系統
13、進程管理13.1、進程介紹1)在 LINUX 中,每個執行的程序(代碼)都稱為一個進程。每一個進程都分配一個 ID 號。
2)每一個進程,都會對應一個父進程,而這個父進程可以複製多個子進程。例如 www 伺服器。
3)每個進程都可能以兩種方式存在的。前臺與後臺,所謂前臺進程就是用戶目前的屏幕上可以進行操作的。後臺進程則是實際在操作,但由於屏幕上無法看到的進程,通常使用後臺方式執行。
4)一般系統的服務都是以後臺進程的方式存在,而且都會常駐在系統中。直到關機才才結束。
ps -aux
-e 顯示所有進程。
-f 全格式
• UID:用戶 ID
• PID:進程 ID
• PPID:父進程 ID
• C:CPU 用於計算執行優先級的因子。數值越大,表明進程是 CPU 密集型運算,執行優先級會降低;數值越小,表明進程是 I/O 密集型運算,執行優先級會提高
• STIME:進程啟動的時間
• TTY:完整的終端名稱
• TIME:CPU 時間
• CMD:啟動進程所用的命令和參數
查sshd服務的父進程
若某個進程執行一半需要停止時,或是已消了很大的系統資源時,此時可以考慮停止該進程。使用 kill 命令來完成此項任務。
kill [選項] 進程號(功能描述:通過進程號殺死進程)
killall 進程名稱(功能描述:通過進程名稱殺死進程,也支持通配符,這在系統因負載過大而變得很慢時很有用)
-9 :表示強迫進程立即停止
剔除非法用戶
終止多個gedit編輯器。
強制殺死一個終端
pstree [選項] ,可以更加直觀的來看進程信息
-p :顯示進程的 PID
-u :顯示進程的所屬用戶
服務(service) 本質就是進程,但是是運行在後臺的,通常都會監聽某個埠,等待其它程序的請求,比如(mysql , sshd 防火牆等),因此我們又稱為守護進程
在 CentOS7.0 後 不再使用 service ,而是 systemctl
示意圖:
service 服務名 [start | stop | restart | reload | status]
• 運行級別 0:系統停機狀態,系統默認運行級別不能設為 0,否則不能正常啟動
• 運行級別 1:單用戶工作狀態,root 權限,用於系統維護,禁止遠程登陸
• 運行級別 2:多用戶狀態(沒有 NFS),不支持網絡
• 運行級別 3:完全的多用戶狀態(有 NFS),登陸後進入控制臺命令行模式
• 運行級別 4:系統未使用,保留
• 運行級別 5:X11 控制臺,登陸後進入圖形 GUI 模式
• 運行級別 6:系統正常關閉並重啟,默認運行級別不能設為 6,否則不能正常啟動
通過 chkconfig 命令可以給每個服務的各個運行級別設置自啟動/關閉
chkconfig --list | grep xxx:查看某個服務在各個運行級別下的開啟狀況
3) chkconfig --level 5 服務名 on/off:開關某個服務在某個運行級別下的狀態
1)顯示當前系統所有服務的各個運行級別的運行狀態
chkconfig --list
2)查看 sshd 服務的運行狀態
service sshd status
3)將 sshd 服務在運行級別 5 下設置為不自動啟動,看看有什麼效果?
chkconfig --level 5 iptables off
4)在所有運行級別下,關閉防火牆
chkconfig iptables off
5)將mysqld服務設置為開機自啟動
chkconfig --add mysqld
top 與 ps 命令很相似。它們都用來顯示正在執行的進程。Top 與 ps 最大的不同之處,在於 top 在執行一段時間可以更新正在運行的的進程。
top [選項]
top:輸入此命令,按回車鍵,查看執行的進程。
u:然後輸入「u」回車,再輸入用戶名,即可
netstat [選項]
netstat -anp
-an 按一定順序排列輸出
-p 顯示哪個進程在調用
查看系統的網絡服務
總結:
ps是查看進程, 主要是針對本機的, 進程活動, 更多的是關注性能, 關注對機器 資源的使用清況
netstat是查看網絡狀態, 主要是針對網絡的.是查看網絡上, 對內網 外網的活動情況, 更多的是關注安全
通過ps可以查看當前運行的程序, 包括服務, 通過chkconfig, 或dnf stop servicename.service來禁用開機啟動
一種用於網際網路下載包的打包及安裝工具,它包含在某些 Linux 分發版中。它生成具有.RPM 擴展名的文件。RPM 是 RedHat Package Manager(RedHat 軟體包管理工具)的縮寫,類似 windows 的 setup.exe,這一文件格式名稱雖然打上了 RedHat 的標誌,但理念是通用的。
rpm –qa|grep xx:查看已安裝的rpm列表
rpm -qa :查詢所安裝的所有 rpm 軟體包
rpm -qa | more [分頁顯示]
rpm -qa | grep X [rpm -qa | grep firefox
rpm -qi 軟體包名 :查詢軟體包信息
rpm -ql 軟體包名 :查詢軟體包中的文件
rpm -qf 文件全路徑名 查詢文件所屬的軟體包
rpm -qe rpm軟體包名**【強制刪除:–nodeps】**
安裝rpm包:rpm -ivh RPM 包全路徑名稱
i=install 安 裝
v=verbose 提 示
h=hash 進度條
是否安裝了火狐
其中,
firefox:rpm包名稱
78.3.0:版本號
el6.centos:適用的作業系統
x86_64:表示64位作業系統
查看安裝的火狐的具體信息
查看軟體包中的文件
rpm -ql firefox-78.3.0-1.el6.centos.x86_64 | more
查看文件所屬rpm包
卸載forefox
安裝rpm包軟體
Yum 是一個 Shell 前端軟體包管理器。基於 RPM 包管理,能夠從指定的伺服器自動下載 RPM 包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包。使用 yum 的前提是可以聯網。
yum list|grep xx 軟體列表:安裝需要的軟體
yum install firefox:安裝指定的軟體
查看是否安裝了firefox
安裝火狐【默認安裝的是最新版】
yum install firefox
15、特殊指令15.1、stdinfor name in xp wrg lct
do
useradd $name
echo red | passwd --stdin $name
done
解釋:passwd --stdin n a m e 是 更 改 name是更改name是更改name變量的密碼,$name變量指代上面for循環的三個用戶xp ,wrg, lct
加上–stdin是接受echo後面的字符串(red)做為密碼,密碼是red
意思就是,創建三個用戶:xp ,wrg, lct
密碼都是:red