Linux常用指令
1.1 Linux 開山篇
linux的學習方向:linux運維工程師、linux嵌入式工程師、linux下開發項目。
linux雖然要求不高,但是必須得玩666
linux的應用領域: 個人桌面、伺服器、嵌入式應用領域,linux主要是用來做伺服器
學習linux的幾個階段:
第一階段:Linux環境下的基本操作命令,包括文件操作命令(rm mkdir chmod chown),編輯使用工具(vi vim ) ,linux用戶管理(useradd userdel usermod)
第二階段:linux的各種配置(環境變數配置,網路配置,服務配置)
第三階段:linux下如何搭建對應語言的開發環境(大數據、JavaEE、Python)
第四階段:編寫shell腳本,對Linux伺服器進行維護
Linux的學習方法:
1)高效而愉快的學習
2)先建立一個整體框架,然後細節
3)不需要掌握所有的Linux指令,要學會查詢手冊和百度
4)計算機是一門 「做中學」的學科,而不是學中做
5)先know how,再know why
1.2 Linux基礎篇
linux的主要發行版:Centos、Ubuntu、RedHat
目前主要的操作系統:windows、android、車載系統、Linux
1.3 Linux和Unix的關係
Ken tompson和Dennis richres在貝爾實驗室發明C語言寫了UNIX系統,一些廠商看到了商機,在此基礎上開始開發,但是都很貴,有個人提出了GNU計劃,即是自由開發軟體,就有了下面的內容:
人---應用軟體:ftp,瀏覽器----shell層----操作系統----硬體
音樂播放器----解釋層----操作系統---驅動硬體
Linux這個人在此基礎上開發了Linux的操作系統。
1.4 VM和Centos的關係
虛擬機(VM)和Centos的關係:
1.先要安裝VM軟體,如果有,需要先對其進行卸載。
2.通過VM軟體創建虛擬機空間
3.通過VM軟體在創建好的虛擬機空間上安裝Centos操作系統
4.使用Centos
1.5 虛擬機的網路連接的三種形式的說明
- 橋連接:Linux可以和其他系統通信,但是可能造成ip地址衝突
- NAT(Network Address Transform4)模式:網路地址轉換,Linux可以訪問外網,不會造成ip衝突,一般安裝虛擬機的時候,使用NAT模式比較好一些。
- 僅主機模式。Linux是一個獨立的主機,不能訪問外網
1.6 Linux的目錄結構
只有一個目錄:/ 根目錄
在Linux世界裡,一切皆文件
bin目錄:下面主要是存儲常用的指令
dev: 把硬體映射成文件對其進行管理
總結:Linux目錄中有且只有一個根目錄,linux根目錄下存放的內容是預先規劃好的,不能亂放文件。
1.7 Linux實操篇
Linux遠程登錄工具: Xshell5、xftp5是遠程下載的軟體, 在安裝Xshell5的時候,需要Linux開啟一個sshd服務,該服務會監聽22號埠,(埠開的越多,安全性越弱)
winscp,還有MobaXterm
ssh可以直接使用命令行
用戶--組--家目錄,當用戶登錄時,會自動的進入到自己的家目錄。
用組來管理用戶,
1)Linux系統是一個多用戶多任務的操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然後以這個賬號的身份進入系統。
2)Linux用戶至少屬於一個組
添加用戶:useradd [選項] zhaojing(中括弧代表可選的意思)這個指令如果沒有指定是哪個具體的組,那麼會創建一個叫做zhaojing的組,組裡有一個叫做zhaojing的用戶。
useradd -g 用戶組 用戶名
如何創建一個組:groupadd 組名
如何刪除一個組:groupdel -g 用戶組
修改用戶所在的組:usermod -g 用戶組 用戶名(usermodify)
passwd是設置密碼或者是改變密碼。
cd 表示change directory,切換目錄
刪除細節:userdel 用戶名
1)刪除用戶zhaojing,但是要保留家目錄
userdel zhaojing
2)刪除用戶zhaojing以及用戶主目錄
userdel -r zhaojing
在刪除用戶時,盡量不刪除家目錄
切換用戶:su - 用戶名字(當用戶的許可權不夠時,會給與提示)
注釋:當從一個高許可權切換到低許可權時,不需要輸入密碼,當需要返回時,直接輸入exit即可
查看當前用戶/登錄用戶:whoami
創建組:groupadd
用戶配置文件:(用戶信息)/etc/passwd
組配置文件:(組信息)/etc/group
口令配置文件:(密碼和登錄信息,是加密)/etc/shadow
linux系統的運行級別(學習這個有什麼用呢?):
命令:init[0123456]
切換到指定運行級別的指令:基本語法,init[012356]
0:關機
1:單用戶(找回丟失密碼)
2:多用戶無網路服務
3:多用戶有網路服務
4:系統保留
5:圖形界面
6:重啟
系統運行級別配置文件:/etc/inittab
如果我用linux系統的話,我可以這麼做:直接init 0表示關機
init 6 表示重啟,一般情況下我們是多用戶有網路服務
面試題 [如何找回root密碼?] 如果我們不小心,忘記了root密碼,怎麼找回??
思路:進入到單用戶模式,修改root密碼。因為進入單用戶模式,root不需要密碼就可以登錄
1.8 常用指令
cat -n /etc/profile | more (加上|和more的主要原因是可以對其進行分頁顯示)
more /etc/profile
less /etc/profile (可以打開大文件)
輸出重定向和追加指令:>輸出重定向(會把原來的內容給覆蓋掉),>>追加(不會覆蓋原先的指令)
ls -l > test.txt
ls -l >> test.txt
cat file1 > file2
echo "contents" >> files
echo 輸出內容到控制台,echo $PATH輸出環境便利個路徑
head test.txt
head -n 5 test.txt
tail -n 5 test.txt
tail -f file(實時監控文件的變化)
ln 也叫做符號鏈接,類似於windows的快捷方式,主要存放了鏈接其他文件的路徑
ln -s [原文件目錄][軟鏈接名](功能描述:給原文件創建一個軟鏈接)
時間日期類相關指令:date cal
date +%Y,date +%m ,
date "+%Y %m %d"
date "+%H:%M:%S"
如何設置日期(重點掌握):
date -s "2018-10-10 11:22:22"
日曆:
cal ,顯示2019年一整年的日曆 cal 2019
搜索查找類指令:
find 將從指定目錄向下遞歸遍歷各個子目錄,將滿足條件的文件或者目錄顯示在線終端
locate
grep 和管道符 |
案例1:按文件名:根據名稱查找home目錄下的hello.txt文件
find practice -name hello.txt
find + 搜索的範圍 + 按照什麼方式來查找(上邊的例子是按照名字來查找) + 查找的文件的名字
案例2:按擁有者,查找/opt目錄下,用戶名為nobody的文件
find practice -user jingzhao
案例3:查找整個Linux系統下大於20M的文件(+n 大於 -n 小於 n等於)
find / -size +20M
locate指令可以快速定位文件路徑。locate指令利用事先建立的系統中所有文件及名稱路徑的locate資料庫事先快速定位給定的文件。locate指令無需遍歷整個文件系統,查詢速度快。為了保證查詢結果的準確度,管理員必須定義更新locate時刻。
由於Locate指令基於資料庫進行查詢,所以每次運行前,必須使用updatedb指令創建locate資料庫。
updatedb
locate hello.txt
grep指令和管道符號 |
grep過濾查找,管道符,「|」,表示將前一個命令的處理結果輸出傳遞給後面的命令處理
grep [選項] 查找內容 源文件
選項:-n 顯示匹配行和行號 -i忽略字母大小寫
cat main.cpp | grep main
壓縮和解壓縮類
gzip/gunzip指令
gzip用於壓縮文件,gunzip用於解壓縮文件
基本語法:
gzip文件(功能描述:壓縮文件,只能將文件壓縮為*.gz文件)
gunzip文件.gz(解壓縮文件命令)
zip -r test.zip practice(遞歸壓縮)
unzip -d /opt/tmp/ test.zip
tar
tar -zcvf a.tar.gz a.txt, b.txt 表示壓縮
tar -zxvf a.tar.gz 表示解壓
tar -zxvf a.tar.gz -C /home/表示將a.tar.gz解壓到指定的目錄去
修改文件的所有者:
指令:chown 用戶名 文件名
修改文件所在的組:
chgrp 組名 文件名
許可權的基本介紹:
-rw-r--r--
第一個 - 表示文件的類型,-普通文件,d表示目錄,l表示軟鏈接,c:字元設備,b:塊文件,硬碟
修改文件或者目錄許可權:chmod
修改許可權的幾種方式:
第一種方式:u:所有者,g:組,o:其他, a:表示所有
chmod u=rwx, g=rx, o=rx test.txt
chmod u-x,g+w test.txt
chmod a+r test.txt
實操篇 crond 任務調度
crontab [選項]
定時調度我們的腳本或者代碼(crontab)===>腳本/代碼,完成某個任務,比如備份mysql資料庫
快速入門
設置任務調度文件:/etc/crontab
設置個人任務調度。執行crontab -e 命令
接著輸入任務到調度文件
1)終止任務調度: crontab -r
2)列出當前有哪些任務調度:crontab -l
3)service crond restart [重啟任務調度]
任務調度的幾個應用實例
1.每隔一分鐘,就將當前日期信息,追加到/tmp/mydate.txt文件中
1)先編寫一個shell 文件 mytask.sh
date >> /tmp/mydate.txt
2)給mytask.sh一個可執行許可權
chmod 744 mytask.sh
3)crontab -e
4) */1 星號 星號 星號 星號 mytask.sh
5)成功
Linux磁碟分區和掛載
分區基礎知識,linux裡面一切皆文件,它只有一個/目錄,下面有很多文件夾,就相當於windows的分區,linux採用了一種叫「載入」的處理方法,它的整個的文件系統包含了一整套的文件和目錄,且將一個分區和一個目錄聯繫起來,這時要載入的一個分區將使它的存儲空間在一個目錄下獲得。
掛載:mount 卸載:umount
查看分區和掛載的情況:lsblk -f (老師不離開lsblk)
如何增加一塊硬碟
1)虛擬機添加硬碟
2)分區 fdisk /dev/sdb
3)格式化 mkfs -t ext4 /dev/sdb1 其中ext4是分區類型
4)掛載 先創建一個/home/newdisk,掛載 mount /dev/sdb1 /home/newdisk
5)可以設置自動掛載(永久掛載,當你重啟系統,仍然可以掛載到 /home/newdisk)
vim /etc/fstab編寫一句話,/dev/sdb1 /home/newdisk
mount -a
卸載:umount /dev/sdb1
如果出現:device is busy,這種情況下因為自己就在裡面
查詢系統整體磁碟使用情況:
df -h
df -lh
查詢指定目錄的磁碟佔用情況
du -h 目錄
查詢指定目錄的磁碟佔用情況,默認為當前目錄
-s指定目錄佔用大小匯總
-h 帶計量單位
-a 含文件
--max-depth=1 子目錄深度
-c列出明細的同時,增加匯總值
磁碟情況-工作實用指令
1)統計/home文件夾下文件的個數 ls -l | grep "^-" | wc -l 解釋:「^-」其中的^表示定位符嗎,表示以「- 」打頭的文件
2)統計/home文件夾下目錄的個數 ls -l | grep "^d" | wc -l
3)統計/home文件夾下文件的個數,包括子文件夾里的 ls -lR | grep "^-" | wc -l
4)統計/home文件夾下目錄的個數,包括子文件夾里的 ls -lR | grep "^d" | wc -l
5)已樹狀顯示目錄結構 tree
網路配置
進程管理:(重點)
什麼是進程?
1)在linux中,每個執行的程序(代碼)都稱為一個進程。每一個進程都分配一個ID號。
2)每一個進程,都會對應一個父進程,而這個父進程可以複製多個子進程。例如www伺服器。
3)每個進程都可能以兩種方式存在的。前台與後台,所謂前台的進程就是用戶目前的屏幕上可以操作的,後台進程則是實際在操作(守護進程),但由於屏幕上無法看到的進程,通常使用後台方式執行。
4)一般系統的服務都是以後台進程的方式存在,而且常駐在系統中。直到關機才結束。
ps:
-a: 顯示當前終端的所有進程信息
-u: 以用戶的格式顯示進程信息
-x:顯示後台進程運行的參數
ps -aux | grep xxx
比如看看有沒有ssd這個服務:ps -aux | grep sshd
查看父進程:ps -ef
終止進程:kill killall
kill -9 強迫進程立即終止
pstree 以樹狀的形式顯示
服務管理
1)請顯示當前系統所有服務的運行狀態
chkconfig --list
2)請查看sshd服務的運行狀態
service/systemctl sshd status
3)將sshd設置為運行級別為5下不自行啟動
chkconfig --level 5 sshd off
4)在所有運行狀態下,關閉防火牆
chkconfig iptables off
5)在所有狀態下,開啟防火牆
chkconfig iptables on
使用細節
chkconfig 重新設置服務後,使用reboot才生效
推薦閱讀:
TAG:Linux |