標籤:

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 虛擬機的網路連接的三種形式的說明

  1. 橋連接:Linux可以和其他系統通信,但是可能造成ip地址衝突
  2. NAT(Network Address Transform4)模式:網路地址轉換,Linux可以訪問外網,不會造成ip衝突,一般安裝虛擬機的時候,使用NAT模式比較好一些。
  3. 僅主機模式。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 |