10 組管理和權限管理10.1 Linux組的基本介紹10.2 文件/目錄的全部者10.3 文件/目錄的所在組10.4 權限的基本介紹10.5 rwx權限詳解10.6 修改權限指令-chmod10.7 修改文件全部者-chown10.8 修改文件所在組-chgrp10.9 最佳實踐-警察和土匪遊戲11 定時任務調度11.1 crond任務調度12 linux磁盤分區、掛載12.1 分區的基本知識12.2 Linux分區12.3 掛載的經典案例12.4 查詢系統總體磁盤使用狀況12.5 查詢指定目錄的磁盤佔用狀況12.6 磁盤狀況-工做中實用指令13 linux的網絡配置13.1 linux的網絡配置的原理圖13.2 查看網絡IP和網關13.3 linux網絡環境配置13.2.1 第一種方法:自動獲取ip地址13.3.2 第二種方法:配置固定的ip地址13.4 修改主機名14 進程管理(重點)14.1 基本介紹14.1.1 顯示系統執行的進程14.1.2 ps指令詳解14.2 終止進程kill和killall14.3 查看進程樹pstree14.4 服務(service)管理14.4.1 查看服務名稱14.4.2 服務的運行級別(runlevel)14.5 chkconfig指令14.5 動態監控進程14.6 監控網絡狀態15 軟件包管理15.1 rpm包的管理15.2 卸載rpm包15.3 安裝rpm包15.4 yum包的管理16 大廠面試題16.1 百度面試題16.2 瓜子二手車面試題17 感悟分享18 資料附錄前端
在linux中的每一個用戶必須屬於一個組,不能獨立於組外。在linux中每一個文件有全部者、所在組、其它組的概念。
1) 全部者
2) 所在組
3) 其它組
4) 改變用戶所在的組
示意圖以下:node![]()
- 通常爲文件的建立者,誰建立了該文件,就天然的成爲該文件的全部者。
- 查看文件的全部者
指令:ls –ahl
應用實例:建立一個組police,再建立一個用戶tom,將tom放在police組,而後使用tom來建立一個文件ok.txt。【參考補充示例】- 修改文件的全部者
指令:chown 用戶名 文件名
應用案例:使用root用戶建立一個文件apple.txt,而後將該文件的全部者修改爲tom。
補充示例:mysql
示例:增長用戶時直接指定用戶的家目錄和用戶組
建立一個用戶,名字叫abc,主目錄是/home/abc/目錄,屬於aabb這個組。
useradd -d /home/abc/ abc -m -g aabb
-d的意思是指定用戶的主目錄
-m的意思是,若是主目錄不存在,那麼就自動建立這個目錄
-g的意思是指定該用戶屬於哪一個組
注意1:咱們須要先建立組aabb。命令:groupadd aabb
注意2:咱們新增用戶後,要及時經過root用戶設置新增用戶的密碼。這是一個好習慣!
- 當某個用戶建立了一個文件後,默認狀況下,這個文件的所在組就是該用戶所在的組。
- 查看文件/目錄所在組
指令:ls –ahl
應用實例:同上。- 修改文件所在的組
指令:chgrp 組名 文件名
應用實例:使用root用戶建立文件orange.txt,看看當前這個文件屬於哪一個組【root】,而後將這個文件所在組,修改到police組。- 其餘組
除文件的全部者和所在組的用戶外,系統的其它用戶都是文件的其它組。- 改變用戶所在組
在添加用戶時,能夠指定將該用戶添加到哪一個組中,一樣的用root的管理權限能夠改變某個用戶所在的組。【參考補充示例】
指令:
1) usermod –g 組名 用戶名
2) usermod –d 目錄名 用戶名 (功能描述:改變該用戶登錄的初始目錄)
應用實例:建立一個土匪組(bandit)將tom這個用戶從原來所在的police組,修改到bandit(土匪)組,命令usermod -g bandit tom
rwx權限詳解linux
第一種方式:+ 、-、= 變動權限程序員
- 說明:
crontab 進行定時任務的設置。- 概述: 任務調度:是指系統在某個時間執行的特定的命令或程序。 任務調度分類:
- 1) 系統工做:有些重要的工做必須周而復始地執行。如病毒掃描等。
- 2) 個別用戶工做:個別用戶可能但願執行某些程序。好比對mysql數據庫的備份。
- 基本語法:
crontab [選項]- 經常使用選項
- 快速入門:
從新啓動crond服務:service crond restart面試
設置任務調度文件:vim /etc/crontab
設置我的任務調度。執行crontab –e
命令。
接着輸入任務到調度文件,如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思說:每小時的每分鐘執行ls –l /etc/ > /tmp/to.txt
命令sql
- 參數細節說明:
5個佔位符的說明:
特殊符號的說明:
特定時間執行任務案例:- 應用實例:
案例1:每隔1分鐘,就將當前的日期信息,追加到/tmp/mydate.log 文件中
步驟:
1) 編寫一個文件/home/mytask1.sh
,文件內容是:date >> /tmp/mydate.log
2) 給文件/home/mytask1.sh
一個能夠執行的權限,命令chmod 744 /home/mytask1.sh
3) 設置我的任務調度。執行crontab –e
命令
4) 輸入任務到調度文件,任務內容:*/1 * * * * /home/mytask1.sh
5) 查看文件/tmp/mydate.log,成功!
案例2:每隔1分鐘,將當前日期和日曆信息,都追加到/tmp/mycal.log 文件中
步驟:
1) 編寫一個文件/home/mytask2.sh
,文件內容是:date >> /tmp/mycal.log
和cal >> /tmp/mycal.log
2) 給文件/home/mytask2.sh
一個能夠執行的權限,命令chmod 744 /home/mytask2.sh
3) 設置我的任務調度。執行crontab –e
命令
4) 輸入任務到調度文件,任務內容:*/1 * * * * /home/mytask2.sh
5) 查看文件/tmp/mycal.log,成功!
截圖同上!不在贅圖!
案例3:天天凌晨2:00將mysql數據庫testdb,備份到文件/tmp/mydb.bak中。
步驟:
1) 編寫一個文件/home/mytask3.sh
,文件內容是:/usr/local/mysql/bin/mysqldump -uroot -proot testdb > /tmp/mydb.bak
2) 給文件/home/mytask3.sh
一個能夠執行的權限,命令chmod 744 /home/mytask3.sh
3) 設置我的任務調度。執行crontab –e
命令
4) 輸入任務到調度文件,任務內容:0 2 * * * /home/mytask3.sh
5) 查看文件/tmp/mydb.bak,成功!
截圖同上!不在贅圖!- crond 相關指令:
1) conrtab –r:終止任務調度(刪除全部任務調度)。
2) crontab –l:列出當前有那些任務調度。
3) service crond restart [重啓任務調度]- 拓展:比較難的shell腳本的編寫
shell腳本文件內容:shell
#!/bin/bash
#備份路徑
BACKUP=/data/backup/sql/dy
#當前時間
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo "===備份開始==="
echo "備份文件存放於${BACKUP}/$DATETIME.tar.gz"
#數據庫地址
HOST=localhost
#數據庫用戶名
DB_USER=root
#數據庫密碼
DB_PW=Ces123456
#建立備份目錄
[ ! -d "${BACKUP}/$DATETIME" ] && mkdir -p "${BACKUP}/$DATETIME"
#後臺系統數據庫
DATABASE=dy_backgroundms
mysqldump -u${DB_USER} -p${DB_PW} --host=$HOST -q -R --databases $DATABASE | gzip > ${BACKUP}/$DATETIME/$DATABASE.sql.gz
#投入品監管數據庫
DATABASE=dy_firip
mysqldump -u${DB_USER} -p${DB_PW} --host=$HOST -q -R --databases $DATABASE | gzip > ${BACKUP}/$DATETIME/$DATABASE.sql.gz
#壓縮成tar.gz包
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#刪除備份目錄
rm -rf ${BACKUP}/$DATETIME
#刪除30天前備份的數據
find $BACKUP -mtime +30 -name "*.tar.gz" -exec rm -rf {} \;
echo "===備份成功==="
注:find:linux的查找命令,用戶查找指定條件的文件。
-mtime:標準語句寫法。
+10:查找10天前的文件,這裏用數字表明天數,+30表示查找30天前的文件。
"*.*":但願查找的數據類型,"*.jpg"表示查找擴展名爲jpg的全部文件,"*"表示查找全部文件,這個能夠靈活運用,觸類旁通
-exec:固定寫法。
rm -rf:強制刪除文件,包括目錄。
{} \; :固定寫法,一對大括號+空格+\;
分區的方式(知道便可):數據庫
原理介紹:vim
- 說明:
下面咱們以增長一塊新的虛擬硬盤2G爲例來熟悉下磁盤的相關指令和深刻理解磁盤分區、掛載、卸載的概念。
圖同上【Linux系統分區的原理示意圖】。- 如何增長一塊硬盤,步驟以下:
1) 虛擬機添加硬盤
2) 分區fdisk /dev/sdb
3) 格式化mkfs -t ext4 /dev/sdb1
4) 掛載mount /dev/sdb1 /home/newdisk/
卸載umount /dev/sdb1 或者 umount /home/newdisk/
5) 設置能夠自動掛載vim /etc/fstab
,添加完成後,執行mount -a
即刻生效。- 步驟一:虛擬機添加硬盤
先選中一臺虛擬機,而後右鍵該虛擬機,點擊【設置】,而後在硬件列表裏選中【硬盤(SCSI)】,點擊【添加(A)】,而後一路【下一步】,中間只有【選擇磁盤大小】的地方須要修改,直到完成。而後重啓系統(才能識別)!
從新查看全部設備(光驅/media,u盤,硬盤)掛載狀況- 步驟二:分區命令:
fdisk /dev/sdb
- 開始對/sdb分區:
- m 顯示命令列表
- p 顯示磁盤分區,同:fdisk -1
- n 新增分區
- d 刪除分區
- w 寫入並退出
- 說明:開始分區後輸入n,新增分區,而後選擇p,分區類型爲主分區。主分區編號:輸入1後回車,是否默認剩餘所有空間,回車。最後輸入w寫入分區並退出,若不保存退出輸入q。
- 步驟三:格式化磁盤
格式化命令:mkfs -t ext4 /dev/sdb1
其中ext4是格式化後的文件類型- 步驟四:掛載,先建立一個目錄/home/newdisk/,而後將一個分區與一個目錄聯繫起來,掛載命令:
mount 設備名稱 掛載目錄
注意:用命令行掛載重啓後會失效!- 步驟五:永久掛載:經過修改/etc/fstab文件實現掛載,添加完成後,執行
mount -a
即刻生效。vim /etc/fstab
- 基本語法:
df -h- 應用實例:
查詢系統總體磁盤使用狀況。
- 基本語法:
du -h /目錄- 查詢指定目錄的磁盤佔用狀況,默認爲當前目錄
-s 指定目錄佔用大小彙總
-h 帶計量單位
-a 含文件
--max-depth=1 子目錄深度
-c 列出明細的同時,增長彙總值- 應用實例:
查詢/usr/目錄
的磁盤佔用狀況,深度爲1
命令:du -ach --max-depth=1 /usr/
- 一、統計/home/文件夾下文件的個數
ls –l /home/ | grep 「^-」 | wc -l
- 二、統計/home/文件夾下目錄的個數
ls –l /home/ | grep 「^d」 | wc -l
- 三、統計/home/文件夾下文件的個數,包括子文件夾裏的
ls –lR /home/ | grep 「^-」 | wc -l
- 四、統計/home/文件夾下目錄的個數,包括子文件夾裏的
ls –lR /home/ | grep 「^d」 | wc -l
- 五、以樹狀顯示home目錄結構
tree /home/
[沒有tree指令咋辦,使用yum來安裝]
效果:
目前咱們的網絡配置採用的是NAT
查看VMware虛擬網絡編輯器
修改VMnet8的ip地址
查看虛擬機的網關
查看windows環境的中VMnet8網絡配置 (ipconfig指令方式和圖形化界面方式)
ipconfig指令方式
使用ping,測試主機之間網絡連通性
Linux ping Windows
Windows ping Linux
說明
登錄後,經過界面來設置自動獲取ip。
特色
1) 配置比較簡單。
2) 每次啓動linux後,分配的ip地址可能不同。不適合作服務器。
方式一:
經過圖像化界面進行操做,系統 -> 首選項 -> 網絡鏈接 -> 選中【System eth0】-> 編輯
方式二:
直接修改配置文件來指定IP,並能夠鏈接到外網(程序員推薦),
編輯vim /etc/sysconfig/network-scripts/ifcfg-eth0
(原裝的虛擬機)
或者vim /etc/sysconfig/network-scripts/ifcfg-Auto_eth1
(複製的原裝的虛擬機,本博主使用的)
要求:將ip地址配置爲靜態的static(或爲none也行)
,ip地址爲:192.168.xxx.xxx
- 1) 查看當前主機名
hostname- 2) 修改linux的主機映射文件
vim /etc/sysconfig/network
文件中內容以下:
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME= hadoop // 寫入新的主機名
注意:主機名稱不要有「_」下劃線,不識別。- 3) 修改
vim /etc/hosts
文件增長ip和主機的映射
192.168.25.204 hadoop
….- 4) 並重啓設備,生效。
- 5) 若是但願Windows也能夠經過
主機名
來鏈接CentOS,進入C:\Windows\System32\drivers\etc\hosts 192.168.25.104 hadoop
- 在LINUX中,每一個執行的程序(代碼)都稱爲一個
進程
。每個進程都分配一個ID號
。- 每個進程,都會對應一個父進程,而這個父進程能夠複製多個子進程。例如:www服務器。
- 每一個進程均可能以兩種方式存在的。
前臺與後臺
,所謂前臺進程就是用戶目前的屏幕上能夠進行操做的。後臺進程則是實際在操做,但因爲屏幕上沒法看到的進程,一般使用後臺方式執行,例如:[sshd,crond]。- 通常系統的服務都是之後臺進程的方式存在,並且都會常駐在系統中。直到關機才才結束。
- ps命令是用來查看目前系統中,有哪些正在執行,以及它們執行的情況。能夠不加任何參數。
用法說明:- ps -aux // 顯示全部的進程
- ps -aux | more // 分頁顯示全部的進程
- ps -aux | grep sshd // 查看sshd進程
- 介紹:
如果某個進程執行一半須要中止時,或是已消了很大的系統資源時,此時能夠考慮中止該進程。使用kill命令來完成此項任務。- 基本語法:
kill [選項] 進程號 (功能描述:經過進程號殺死進程,-9 強制終止)
killall 進程名稱 (功能描述:經過進程名稱殺死進程,也支持通配符,這在系統因負載過大而變得很慢時頗有用)- 經常使用選項:
-9 : 表示強迫進程當即中止。- 最佳實踐:
案例1:踢掉某個非法登陸用戶。
案例2:終止遠程登陸服務sshd,在適當時候再次重啓sshd服務。
案例3:終止多個gedit編輯器。經過進程名稱終止進程
killall gedit
案例4:強制殺掉一個終端。
kill 對應的bash的進程號,可是殺不掉。
kill -9 對應的bash的進程號
注意:
- 基本語法:
pstree [選項] 能夠更加直觀的來看進程信息- 經常使用選項:
-p : 顯示進程的PID
-u : 顯示進程的所屬用戶- 應用實例:
案例1:請用樹狀的形式顯示進程的pid。
pstree -p
案例2:請用樹狀的形式進程的用戶id。
pstree –u
pstree -pu
- 介紹:
服務(service)
本質就是進程,可是是運行在後臺的,一般都會監聽某個端口,等待其它程序的請求,好比(mysql,sshd,防火牆等),所以咱們又稱爲守護進程
,是Linux中很是重要的知識點。【原理圖】- service管理指令:
service 服務名 [start | stop | restart | reload | status]
注意:在CentOS7X後,再也不使用service,而是systemctl。
- 使用案例:
查看當前防火牆的情況,關閉防火牆和重啓防火牆。
service iptables status- 細節討論:
一、關閉或者啓用防火牆後,當即生效。[咱們能夠經過Windows的telnet指令來測試某個端口是否在監聽並能夠訪問
] 命令:telnet ip 端口
二、說明:
service iptables stop
service iptables start
這種方式只是臨時生效
,當重啓系統後,仍是迴歸之前對服務的設置。
若是但願設置某個服務自啓動或關閉永久生效,要使用chkconfig指令
。
- 查看服務名稱:
方式1:使用setup -> 系統服務
就能夠看到。
在Linux的命令行中輸入:setup 回車
選擇 系統服務 回車,服務前面顯示星號
表示的該服務已啓動
方式2:查看/etc/init.d/服務名稱
- 介紹:
經過chkconfig命令能夠給每一個服務的各個運行級別設置自啓動/關閉。- 基本語法:
0) 查看全部服務在各個運行級別自啓動/關閉的狀態chkconfig --list
1) 查看某個服務在各個運行級別自啓動/關閉的狀態chkconfig --list | grep xxx
2) 查看某個服務在各個運行級別自啓動/關閉的狀態chkconfig 服務名稱 --list
3) 設置某個服務,在某個運行級別,開啓或關閉chkconfig --level 5 服務名稱 on/off
例如:設置sshd服務在1運行級別時on。chkconfig --level 1 sshd off/on
4) 設置某個服務,開啓或關閉chkconfig 服務名稱 on/off
例如:使iptables完全關閉。chkconfig iptables off
[無論是哪一個級別都關閉]chkconfig iptables off
表示在全部level下關閉防火牆chkconfig iptables on
表示在全部level下開啓防火牆- 應用實例:
- 介紹:
top與ps命令很類似。它們都用來顯示正在執行的進程。top與ps最大的不一樣之處,在於top在執行一段時間能夠更新正在運行的的進程(默認每3秒變化一次)
。- 基本語法:
top [選項]- 選項說明:
- 交互操做說明:
- 應用實例:
案例1:如何監視特定用戶
top:輸入此命令,按回車鍵,查看執行的進程。
u:而後輸入「u」回車,再輸入用戶名,便可。
案例2:如何終止指定的進程。
top:輸入此命令,按回車鍵,查看執行的進程。
k:而後輸入「k」回車,再輸入要結束的進程ID號,便可。
案例3:指定系統狀態更新的時間(每隔10秒自動更新)。
top -d 10
指定系統更新進程的時間爲10秒。
- 介紹:
netstat指令 用於查看系統網絡狀況- 基本語法:
netstat [選項]- 選項說明:
-an 按必定順序排列輸出
-p 顯示哪一個進程在調用- 應用案例:
一、查看服務名稱爲sshd的服務的信息。
命令:netstat –anp | grep sshd
二、查看佔用22端口的進程。
命令:netstat –anp | grep 22
- 介紹:
一種用於互聯網下載包的打包及安裝工具,它包含在某些Linux分發版中
。它生成具備.RPM擴展名的文件
。RPM是RedHat Package Manager(RedHat軟件包管理工具)
的縮寫,相似windows的setup.exe,這一文件格式名稱雖然打上了RedHat的標誌,但理念是通用的。
Linux的分發版本都有采用(suse、redhat、centos等等),能夠算是公認的行業標準了。- rpm包的簡單查詢指令:
查詢已安裝的rpm列表rpm –qa | grep xxx
例如:rpm -qa | grep firefox
- rpm包名基本格式:
一個rpm包名:firefox-45.0.1-1.el6.centos.x86_64.rpm
名稱:firefox
版本號:45.0.1-1
適用操做系統:el6.centos.x86_64,表示centos6.x的64位系統,若是是i68六、i386表示32位系統,noarch表示通用
。- rpm包的其它查詢指令:
rpm -qa 查詢所安裝的全部rpm軟件包
rpm -qa | more 分頁查詢所安裝的全部rpm軟件包
rpm -qa | grep xxx 例如:rpm -qa | grep firefox
rpm -q 軟件包名 查詢rpm軟件包是否安裝,例如:rpm -q firefox
rpm -qi 軟件包名 查詢rpm軟件包信息。例如:rpm -qi filefox
rpm -ql 軟件包名 查詢軟件包中的文件,例如:rpm -ql firefox
rpm -qf 文件全路徑名 查詢文件所屬的軟件包,例如:rpm -qf /etc/passwd
或者rpm -qf /root/install.log
- 基本語法:
rpm -e rpm包的名稱- 應用案例:
刪除firefox軟件包rpm -e firefox
- 細節討論:
1) 若是其它軟件包依賴於您要卸載的軟件包,卸載時則會產生錯誤信息。
如:rpm -e foo
removing these packages would break dependencies:foo is needed by bar-1.0-1
2) 若是咱們就是要刪除foo這個rpm 包,能夠增長參數--nodeps
,就能夠強制刪除,可是通常不推薦這樣作,由於依賴於該軟件包的程序可能沒法運行。
如:rpm -e --nodeps foo
[當心使用]
- 基本語法:
rpm -ivh rpm包全路徑名稱- 參數說明:
-i=install 安裝
-v=verbose 提示
-h=hash 進度條
--nodeps 不檢測依賴進度- 應用實例: 演示卸載和安裝firefox瀏覽器。 提示:不少的rpm包,就在咱們的centos安裝的鏡像文件中。 安裝firefox瀏覽器步驟:
- 一、先找到firefox的安裝rpm包,能夠掛載上咱們的CentOS的ISO文件,也能夠從網絡上下載firefox的安裝rpm包。咱們演示的是掛載上咱們的CentOS的ISO文件。
- 二、而後到/media/目錄中找到irefox的安裝rpm包。
- 三、執行安裝命令。
按照下圖進行操做
此時會發現Linux桌面上出現一個光驅
具體安裝過程:
- 介紹:
yum 是一個 Shell 前端軟件包管理器
。基於RPM包管理,可以從指定的服務器自動下載rpm包而且安裝,能夠自動處理依賴性關係
,而且一次安裝全部依賴的軟件包
。- yum的基本指令:
一、查詢yum服務器是否有須要安裝的軟件(通常顯示的是最新版本的)
yum list | grep xxx 查看軟件列表
二、安裝指定的yum包
yum install xxx 下載安裝- yum應用實例:
案例:請使用yum的方式來安裝firefox指令。
yum install firefox
//會自動的下載安裝適合你係統的最新版本
問題:Linux經常使用命令,至少6個
答:netstat、top、lsblk、find、ps、chkconfig。
問題:Linux查看內存、磁盤存儲狀況、磁盤io讀寫狀況、端口占用、進程等命令。
答:
top
df -lh
netstat -tunlp
ps –aux | grep 進程名
iotop 若是沒有該命令,就先yum安裝一把
查看端口占用狀況:netstat -tunlp
iotop
唐朝有《賣炭翁》--背後有故事,之後深究之。
陳康肅公堯諮善射,當世無雙,公亦以此自矜。嘗射於家圃,有賣油翁釋擔而立,睨之,久而不去。見其發矢十中八九,但微頷之。康肅問曰:「汝亦知射乎?吾射不亦精乎?」翁曰:「
無他,但手熟爾。
」康肅忿然曰:「爾安敢輕吾射?」翁曰:「以我酌油知之。」乃取一葫蘆置於地,以錢覆其口,徐以杓酌油瀝之,自錢孔入,而錢不溼。因曰:「我亦無他,唯手熟爾。
」康肅笑而遣之。
《賣油翁》這則故事的做者是歐陽修,出自他的私家筆記《歸田錄》。
老黃牛精神