鞏固基礎,砥礪前行 。
只有不斷重復,才能做到超越自己。
能堅持把簡單的事情做到極致,也是不容易的。
linux的目錄結構
linux的文件系統采用樹狀的目錄結構,在此結構的最上層是根目錄“/”,
然后在此目錄下再創建其他的目錄。
目錄的具體介紹:
bin:usr/bin usr/local 是Binary縮寫。存放最常用的命令 *
sbin:存放管理員使用的系統管理程序
home:存放普通用戶的主目錄,在linux種每個用戶都有一個自己的目錄,
一般該目錄名是以用戶的帳號命名的 *
root:系統管理員目錄 *
boot:存放的是啟動linux時使用的一些核心文件,包括一些鏈接文件以及鏡像文件 *
proc:這是一個虛擬目錄,它是系統內存的映射,訪問這個目錄來獲取系統信息
srv:service縮寫,該目錄存放的是一些服務啟動后需要讀取的數據
sys:這是lunux2.6 內核的一個很大的變化,該目錄下安裝了2.6內核種出現的一個文件系統
tem:存放臨時文件
dev:類似于windows的設備管理,把所有的硬件用文件的形式存儲
media:linux系統會自動識別一些設備,如:U盤等,如果識別之后,linux就會把識別到的目錄掛載到這個目錄下
mnt:系統提供了該目錄是為了讓用戶臨時掛載別的文件系統,我們可以將外部的存儲掛載在
/mnt/上,然后進入該目錄就可以查看這里的內容了。
opt:給主機額外安裝軟件所擺放的目錄,如安裝oracle數據庫就可以放在該目錄下
usr/local:這是另一個給 主機額外安裝軟件的目錄,一般是通過編譯源碼方式暗轉的程序
var:這個目錄種存放著不斷擴充的東西,習慣將經常被修改的目錄放在這個目錄下,包括各種日志文件
selinux: 這是一個安全子系統,他能控制程序只能訪問特定文件
linux分區
原理介紹
1)linux來說無論有幾個分區,分給那個目錄使用,他歸根結底就只有一個根目錄,一個獨立且唯一的文件結構,linux中每隔分區都是用來組成文件系統的一部分2)linux采用一種叫 載入 的處理方法,它的整個文件系統中包含了一整套的文件和目錄,且將一個分區和一個目錄練習起來,這時,要載入的一個分區將使它的存儲空間在一個目錄下獲得硬盤說明1)Linux硬盤分ide硬盤和scsi硬盤,目前基本上都是scsi硬盤2)對ide硬盤,驅動器標識符為“hdx~”,其中hd表明分區所在設備的類型,這里時指ide硬盤了。"x"為盤號,(a為基本盤,b為基本從屬盤,c為輔助主盤,d為輔助從屬盤),"~"代表分區,前四個分區使用數字1-4表示,他們術主分區或者擴張分區,從5開始就是邏輯分區,case:hda3第一個ide硬盤上的第三個主分區或者擴展分區,hdb2表示第二個ide硬盤上的第二個主分區或者擴張分區3)對于scsi硬盤則表示為sdx~,scsi硬盤時使用sd來表示分區所在的設備類型的。其余則和ide硬盤的表示方法一樣使用lsblk指令來查看系統的分區情況lsblklsblk -f 查看系統的分區和掛載情況
如何新增一塊硬盤
1)虛擬機添加硬盤2)分區 fdisk /dev/sdb1分區命令 fdisk /dev/sdb開始對/sdb分區m:顯示命令列表p:顯示磁盤分區 n:新增分區d:刪除分區w:寫入并退出說明:開始分區后,輸入n,新增分區,然后選擇p,分區類型為主分區,兩次回車默認剩余全空間。最后輸入w寫入并退出,若不保存則退出輸入q。3) 格式化 mkfs - ext4 /dev/sdb1ext4 時分區類型4)掛載 創建掛載點 /home/newdisk ,掛載 mount /dev/sdb1 /home/newdiskmount 設備名稱 掛載目錄unmount 設備名稱 掛載目錄5)設置永久掛載vim /etc/fstab/dev/sdb1 /home/newdisk ext4 defaule 0 0添加完成后,執行mount -a 即刻生效
硬盤情況查詢
1)查詢系統整體磁盤使用情況基本語法df -hdf -lh目錄結構文件系統 磁盤大小 使用了多少 空閑多少 使用率 掛載點2)查詢指定目錄的磁盤占用情況du -h 目錄查詢指定目錄磁盤占用情況,默認為當前目錄-s 指定目錄占用大小匯總-h 帶計量單位-a 含文件--max-depth=1 子目錄深度-c 列出明細的同時增加匯總值case1:查詢/opt目錄下的磁盤占用情況du -ach --max-depth=1 /optcase2:統計/home文件夾下文件的個數ls -l /home |grep "^-" | wc -lcase3:統計/home文件夾下目錄的個數ls -l /home |grep "^d" | wc -lcase4:統計/home文件夾下目錄的個數(包括子文件夾)ls -lR /home |grep "^d" | wc -lcase5:統計/home文件夾下文件的個數(包括子文件夾)ls -lR /home |grep "^-d" | wc -lcase6:以樹狀顯示目錄結構tree如果沒有則,安裝 yum install tree
base
vi 和vim 編輯器
所有的linux系統都會內建 vi文本編輯器
vim具有程序編輯的能力,可以看作是vi的增強版本,可以主動的以字體顏色辨別語法的正確性。
方便程序設計,代碼補充,編譯以及錯誤跳轉等方便編程的功能特別豐富
shutdown
showdown -h now
shutdown -h 1
shutdown -r now
halt
直接關機
reboot
syn
把內存中的數據同步到硬盤
su - 用戶名
logout
常用指令
用戶管理
usradd xm
usradd -d /home/xm xm
passwd xm
usrdel xm
刪除用戶,但是保留家目錄
usrdel -r xm
刪除用戶以及用戶主目錄
id root
查詢uid gid 組 信息
su - 用戶名
組管理
groupadd police
groupdel police
usradd -g police xm
id xm
usrmod -g 組名 用戶名
修改用戶組
etc/passwd 文件
用戶user配置文件,記錄用戶的各種信息
每行的含義:用戶名:口令:用戶標識號:組號:解釋性描述:主目錄:登錄shell
etc/shadow 文件
存放口令的配置文件
每行的含義:登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:失效時間:標志
etc/group 文件
存放組信息
每行含義:組名:口令:組標志:組內用戶列表
man ls
help cd
pwd
ls
ls -l
ls -la (顯示文件以及隱藏文件)
cd
mkdir
mkdir XX
mkdir -p /usr/local/a/b/c
rmdir
刪除文件夾命令(文件要是一個空目錄)
rmdir /usr/local/a (a是一個空目錄)
rmdir -rf /usr/local/a (強制刪除)
touch
創建空文件
touch aa.txt
rm -f aa.txt
cp
cp source dest
cp /usr/local/a.txt /usr/local/p/a.txt
cp -r /usr/local/aa /usr/local/p/bb 復制文件夾
rm
rm -f /usr/local/aa.txt
rm -rf /user/local/dicdemo
mv
移動文件或者重命名
mv /usr/local/aa.txt /usr/local/bb.txt 重命名
mv /usr/local/aa.txt /usr/local/cc 系統文件
cat
cat /usr/local/aa.txt
cat -n /usr/local/aa.txt 顯示行號
more
less
會覆蓋之前的文件
追加
ls -al >aa.txt
ls -al >>aa.txt
echo
輸出內容到控制臺
echo $PATH
head
用于顯示文件的開頭部分,默認情況下head指令顯示文件前10行內容
head /usr/local/aa.txt
head -n 5 /usr/local/aa.txt
tail
顯示尾部文件(10行)
tail 文件
tail -n 5 文件
tail -f 文件
In
軟連接
In -s /root linlToRoot
ls
進入root目錄
rm -f linlToRoot
history
日期
date
date 顯示當前日期
date +%Y 顯示年份
date +%m
date +%d
date +%Y-%m-%d %H:%M:%s
date -s "" 設定時間
cal
查看日歷
cal 2020
find
find /home - name aa.txt 按照名稱查詢
find /opt - user xm 按照用戶查詢
find /home - size -20M
locate
基于數據庫指令快速定位文件,第一次運行前需要使用updatedb指令
grep |
cat /usr/local/aa.txt | grep -n 哈哈
-n 顯示行號
-i 忽略大小寫
壓縮
gzip、gunzip
gzip aa.txt (不會保留原來的文件,壓縮成為.gz文件)
gunzip aa.txt.gz
zip 、 unzip (zip)
zip -r 壓縮后的文件名 路徑
zip 壓縮后的文件 文件名
unzip -d 解壓后放在哪里 壓縮文件名
tar (.tar.gz)
tar -zcvf 壓縮后的文件名 文件1 文件2……
tar -zxvf 壓縮后的文件名 解壓目錄
組管理和權限管理
所有者、所在組、其他組、改變用戶所在組
ls -ahl 查看文件的所有者
groupadd police
usradd -g police xm
passwd 123456
su xm
touch aa.txt
ls -ahl
修改文件所有者:
修改文件所有者:
chown 用戶名 文件名 修改文件所有者chown root aa.txtls -ahlid xmchown newowner:newgroup 文件名 改變用戶的所在組和所有者- R 如果是目錄 則是其下的所有子文件或者目錄遞歸生效case:1)將home/abc.txt 文件的所有者調整為tomchown tom /home/abc.txt2)將home下kk目錄的所有文件或者目錄的所有者都調整為tomchown -R tom /home/kk
chgrp 組名 文件名groupadd hahachgrp haha aa.txt
case:1)將home/abc.txt 文件的所在組修改為policchgrp police /home/abc.txt2)將home下kk目錄的所有文件或者目錄的所在組都調整為policechgrp -R police /home/kk
修改用戶的所在組:
usermod -g 組名 用戶名 改變用戶所在組
usermod -d 目錄名 用戶名 改變用戶登錄的初始目錄
權限的基本介紹
ls -l 命令
-rwxrw-r-- 1 root root 1212 時間0到9位 -rwxrw-r-- 說明
第0位確定文件的類型:- 普通文件 d 文件夾 l 軟連接
第1-3位:文件所有者所擁有的權限
第4-6位:文件所在組所擁有的權限
第7-9位:其他組所擁有的權限
rwx權限詳解
rwx 作用到目錄rwx 作用到文件夾
修改權限
chmod 命令,可以修改文件或者目錄的權限
第一種方式
第一種方式:+ - =
u:所有者 g:所在組 o:其他人 a:所有人
1)chmod u=rwx,g=rx,o=x 文件目錄名稱
2)chmod o+w 文件目錄名
3)chmod a-x 文件目錄名
case:
1.給abc文件的所有者 讀寫執行 ,所在組 執行 ,其他 讀執行
chmod u=rwx,g=x,o=r abc
chmod u+rwx g+x o+r abc2.給abc文件所有者除去 執行權限,新增 組寫權限
chmod u-x g+w abc
第二種方式 通過數組變更權限
規則r=4 w=2 x=1rwx=4+2+1=7chmod u=rwx,g=rx,o=x aa.txtchmod 751 aa.txt
linux運行級別說明
標題linux運行級別說明:
0:關機
1:單用戶
2:多用戶狀態沒有網絡服務
3:多用戶狀態有網絡服務
4:系統未使用保留給用戶
5:圖像界面
6:系統重啟
常用運行級別是3和5
要修改默認的運行級別可修改文件:/etc/inittab 的id:5 :initdefaule:num
case:
忘記root的密碼,怎么找回 ?
crond 任務調度
crond 任務調度
定時的調度腳本或者代碼 通過crontab來執行
基本語法:
crontab [選項]-e 編輯crontab定時任務-l 查詢crontab任務-r 刪除當前用戶的所有crontab任務
快速入門:
任務的要求:
設置任務調度文件:/etc/crontab
設置個人任務調度,執行 crontab -e 命令輸入任務到調度文件中case:*/1 * * * * ls -l /etc/ > /tmp/aa.txt每分鐘執行 ls -l /etc/>/tmp/aa.txt
參數說明:
占位符說明:
第1個* 第幾分鐘
第2個* 一天中的第幾小時
第3個* 一個月中的第幾天
第4個* 一年當中的第幾個月
第5個* 一年當中的第幾星期特殊符號說明:* 代表任何時間, 代表不連續的時間 0 8 12 * * * * 執行- 代表連續的時間*/n 代表每隔多久執行一次
case:
45 22 * * * 在22點45分中執行命令
0 17 * * 1 每周1的0點和 17點執行命令
0 5 1,15 ** 1號和15號的 5點執行命令
40 4 * * 1-5 每周1到周五的4點40執行命令
*/10 4 * * * 每天4點每隔10分鐘執行一次命令
0 0 1,1/15 * 1 1號和15號,每周1的0點0分都會執行命令,注意 周幾和幾號最薄不要同時出現
練習:
1)每隔1分鐘,就將當前日期信息追加到/tmp/mydate文件中a. 先編寫一個testcron.sh文件date >> /tmp/mydateb. 授權chmod 744 /home/testcron.sh c. crontab - e*/1 * * * * /home/testcron.sh 備份數據庫
/usr/local/mysql/bin/mysqldump -uroot -proot testdb > /tmp/mydb.bak
linux 安裝redis
1. 拷貝redis安裝包到對應的目錄下。解壓
2.make
### 3. make install
4.到 /usr/local/bin
5. 修改redis 為后臺啟動
6.啟動redis ,使用 redis-cli 進入,測試
7.關閉 redis
redis-cli shutdown
redis-cli -p 6379 shutdowm
linux 安裝nginx
安裝nginx 需要的包
pcre
openssl
zlib
nginx
yum install wget
1.首先安裝 pcre
(1)wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
(2)進入到 pcre-8.37 目錄
./configure
(3) make
(4)make install
2. 安裝 openssl zlib
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
3.安裝nginx
解壓nginx
進入到安裝目錄
./configure
make這里有報錯
make: *** No rule to make target `build', needed by `default'. Stop.
解決辦法
方法一:
網絡上說 : 更新yum
我更新yum之后,然后重新解壓,進入目錄,./configure ;make && make install 依舊有問題;
方法二:
出現此種情況,是linux系統沒有安裝先決條件
1、GCC——GNU編譯器集合(GCC可以使用默認包管理器的倉庫(repositories)來安裝,包管理器的選擇依賴于你使用的Linux發布版本,包管理器有不同的實現:yum是基于Red
Hat的發布版本;apt用于Debian和Ubuntu;yast用于SuSE Linux等等。)RedHat中安裝GCC:yum install gccUbuntu中安裝GCC:apt-get install gcc2、PCRE庫(Nginx編譯需要PCRE(Perl Compatible Regular
Expression),因為Nginx的Rewrite模塊和HTTP核心模塊會使用到PCRE正則表達式語法。這里需要安裝兩個安裝包pcre和pcre-devel。第一個安裝包提供編譯版本的庫,而第二個提供開發階段的頭文件和編譯項目的源代碼,這正是我們需要的理由。)RedHat中安裝PCRE:yum install pcre pcre-develUbuntu中安裝PCRE:apt-get install libpcre3 libpcre3-dev3、zlib庫(zlib庫提供了開發人員的壓縮算法,在Nginx的各種模塊中需要使用gzip壓縮。如同安裝PCRE一樣,同樣需要安裝庫和它的源代碼:zlib和zlib-devel。)RedHat中安裝zlib:yum install zlib zlib-develUbuntu中安裝zlib:apt-get install zlib1g zlib1g-dev4、OpenSSL庫(在Nginx中,如果服務器提供安全網頁時則會用到OpenSSL庫,我們需要安裝庫文件和它的開發安裝包(openssl和openssl-devel)。)RedHat中安裝OpenSSL:yum install openssl openssl-develUbuntu中安裝OpenSSL:(注:Ubuntu14.04的倉庫中沒有發現openssl-dev):apt-get install openssl openssl-dev
這種方法解決掉了 我上面的問題
環境問題有很多情況。
4. 查看nginx 安裝在那個目錄下
whereis nginx
默認端口 是 80
Linux 安裝 jdk
1. 下載安裝包
tar -zxvf XXX
2. 重命名文件,刪除jar
3. 找到etc/profile 配置以下內容
export JAVA_HOME=/opt/jdk/jdk8 #jdk安裝目錄export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATHexport JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/binexport PATH=$PATH:${JAVA_PATH}
4. 環境變量生效命令
source /etc/profile