尚硅谷韩顺平Linux教程学习笔记
尚硅谷韓順平Linux教程學習筆記
文章目錄
尚硅谷韓順平Linux教程學習筆記
寫在前面
虛擬機
Linux目錄結構
遠程登錄Linux系統
vi和vim編輯器
關機、重啟和用戶登錄注銷
用戶管理
實用指令
組管理和權限管理
定時任務調度
Linux磁盤分區、掛載
網絡配置
進程管理
RPM
YUM
搭建JAVAEE環境
安裝Tomcat
安裝Eclipse
安裝mysql
Shell編程
Shell編程綜合案例
Python定制篇 開發平臺Ubuntu
寫在前面
學習鏈接:尚硅谷韓順平Linux教程
虛擬機
虛擬機的網絡連接三種形式說明
橋連接:Linux可以和其他的系統通信。但是可能造成IP沖突。
NAT:網絡地址轉換方式:Linux可以訪問外網,不會造成IP沖突。
主機模式:你的Linux是一個獨立的主機,不能訪問外網。
vmtools:
共享文件夾
共享剪貼板
Linux目錄結構
Linux世界里,一切皆文件。
/bin:是Binary的縮寫,這個目錄存放著最經常使用的命令。
/sbin:s就是Super User的意思,這里存放的是系統管理員使用的系統管理程序。
/home:存放普通用戶的主目錄,在Linux中每個用戶都有一個自己的目錄,一般該目錄名是以用戶的賬號命名的。
/root:該目錄為系統管理員,也稱作超級權限者的用戶主目錄。
/lib:系統開機所需要最基本的動態連接共享庫,其作用類似于Windows里的DLL文件。幾乎所有的應用程序都需要用到這些共享庫。
/lost+found:這個目錄一般情況下是空的,當系統非法關機后,這里就存放了一些文件。
/etc:所有的系統管理所需要的配置文件和子目錄my.conf。
/usr:這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似與windows下的program files目錄。
/boot:存放的是啟動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件。
/proc:這個目錄是一個虛擬的目錄,它是系統內存的映射,訪問這個目錄來獲取系統信息。
/srv:service的縮寫,該目錄存放一些服務啟動之后需要提供的數據。
/sys:這是linux2.6內核的一個很大的變化。該目錄下安裝了2.6內核中新出現的一個文件系統sysfs。
/tmp:這個目錄是用來存放一些臨時文件的。
/dev:類似windows的設備管理器,把所有的硬件用文件的形式存儲。
/media:linux系統會自動識別一些設備,例如U盤光驅等等,當識別后,linux會把識別的設備掛載到這個目錄下。
/mnt:系統提供該目錄是為了讓用戶臨時掛載別的文件系統的,我們可以將外部的存儲掛載在/mnt/上,然后進入該目錄就可以查看里面的內容了。
/opt:這是給主機額外安裝軟件所擺放的目錄,如安裝ORACLE數據庫就可放到該目錄下。默認為空。
/usr/local:這是另一個給主機額外安裝軟件所安裝的目錄,一般是通過編譯源碼的方式安裝的程序。
/var:這個目錄中存放著在不斷擴充著的東西,習慣將經常被修改的目錄放在這個目錄下,包括各種日志文件。
/selinux:SELinux是一種安全子系統,它能控制程序只能訪問特定文件。
總結:
Linux的目錄中有且只有一個根目錄。
Linux的各個目錄存放的內容是規劃好,不用亂放文件。
Linux是以文件的形式管理我們的設備,因此linux系統,一切皆為文件。
Linux的各個文件目錄下存放什么內容,必須有一個認識。
遠程登錄Linux系統
遠程登錄:XShell5
遠程上傳下載文件:Xftp5
vi和vim編輯器
三種常見模式:
正常模式
在正常模式下,我們可以使用快捷鍵。
插入模式/編輯模式
在這個模式下,程序猿可以輸入內容。
命令行模式
在這個模式中,可以提供相關指令。
快捷鍵使用練習:
yy:拷貝當前行
5yy:拷貝當前5行
dd:刪除當前行
5dd:刪除當前行向下的5行
在文件中查找某個單詞:命令行輸入 /(查找內容),按n查找下一個
設置文件行號:set nu,取消文件行號:set nonu
編輯文件,正常模式下使用快捷鍵到達文檔最末行:G,最首行:gg
撤銷輸入:在正常模式下輸入u
編輯文件,光標移動到某行:shift+g
顯示行號:set nu
輸入行號這個數
輸入shift+g
關機、重啟和用戶登錄注銷
shutdown -h now:表示立即關機
shutdown -h 1:表示1分鐘后關機
shutdown -r now:立即重啟
halt:直接使用,關機
reboot:重啟
sync:把內存的數據同步到磁盤上,當我們關機或者重啟時,都應該先執行一下sync,防止數據丟失。
logout:注銷用戶,在圖形運行級別無效,在運行級別3有效。
用戶管理
用戶,組,家目錄。
Linux系統是一個多用戶多任務的操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然后以這個賬號的身份進入系統。
Linux的用戶需要至少要屬于一個組。
添加用戶:useradd [選項] 用戶名。
cd:表示change directory,切換目錄。
當創建用戶成功后,會自動的創建和用戶同名的家目錄。
也可以通過useradd -d 指定目錄 新的用戶名。
指定/修改密碼:passwd 用戶名
刪除用戶,保留家目錄:userdel 用戶名,一般保留家目錄,因為干過的活要留著。
刪除用戶以及家目錄:userdel -r 用戶名
查詢用戶信息:id 用戶名
切換用戶:su - 切換用戶名,從權限高切換到權限低的用戶不需要輸密碼。
返回切換前的用戶:exit
查看當前用戶/登錄用戶:who am i
用戶組:類似于角色,系統可以對有共性的多個用戶進行統一的管理。
增加組:groupadd 組名
刪除組:groupdel 組名
增加用戶時直接加上組:useradd -g 用戶組 用戶名
修改用戶組:usermod -g 用戶組 用戶名
/etc/passwd 文件
用戶(user)的配置文件,記錄用戶的各種信息。
每行的含義:用戶名:口令:用戶標識號:注釋性描述:主目錄:登錄shell
/etc/shadow 文件
口令配置文件
每行的含義:登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標志
/etc/group 文件
組(group)的配置文件,記錄Linux包含的組的信息。
每行含義:組名:口令:組標識號:組內用戶列表
實用指令
指定運行級別(7個級別)
關機
單用戶【找回丟失密碼】
多用戶狀態沒有網絡服務
多用戶狀態有網絡服務
系統未使用保留給用戶
圖形界面
系統重啟
系統的運行級別配置文件:/etc/inittab
切換到指定運行級別的指令:init [012356]
面試題:如何找回丟失的root密碼?:進入到單用戶模式,然后修改root密碼。因為進入單用戶模式,root不需要密碼就可以登錄。【開機->在引導時輸入 回車鍵->看到一個界面輸入 e->看到一個新的界面,選中第二行(編輯內核),再輸入 e->在這行最后輸入 1,再輸入 回車鍵->再輸入b,這時就會進入到單用戶模式,使用passed來修改root密碼。】
幫助指令:
man [命令或配置文件]
help
文件目錄類
pwd:Print Working Directory,顯示當前工作目錄的絕對路徑。
ls:-a:顯示當前目錄所有的文件和目錄,包括隱藏的;-l:以列表的方式顯示信息。
cd:cd ~:回到自己的家目錄;cd …:回到當前目錄的上一級目錄。
mkdir:創建目錄;-p:創建多級目錄。
rmdir:刪除空目錄。rmdir不能刪除非空的目錄。如果需要刪除非空的目錄,需要使用rm -rf。
touch:創建空文件。可以一次性創建多個文件
cp:拷貝文件到指定目錄;-r:遞歸復制整個文件夾。強制覆蓋不提示的方法:cp命令改為\cp
rm:移除文件或目錄;-r:遞歸刪除整個文件夾;-f:強制刪除不提示。
mv:移動文件與目錄或重命名,兩種功能!
cat:查看文件內容。只能瀏覽文件,而不能修改文件。-n:顯示行號。結尾加上 | more:分頁顯示,不會全部一下顯示完。
more:是一個基于VI編輯器的文本過濾器,它以全屏幕的方式按頁顯示文本文件的內容。more還內置了很多快捷鍵:
操作?? ?功能說明
空白鍵(Space)?? ?向下翻一頁
Enter?? ?向下翻一行
q?? ?立刻離開more,不再顯示該文件內容
Ctrl + F?? ?向下滾動一屏
Ctrl + B?? ?返回上一屏
=?? ?輸出當前行的行號
:f?? ?輸出文件名和當前行的行號
less:用來分屏查看文件內容,與more相似,但是更強大,支持各種顯示終端。less指令在顯示文件內容時,并不是一次將整個文件加載之后才顯示,而是根據顯示需要加載內容。對于顯示大型文件具有較高的效率。
>指令:輸出重定向。如果不存在會創建文件,否則會將原來的文件內容覆蓋。
>>指令:追加。如果不存在會創建文件,否則不會覆蓋原來的文件內容,而是追加到文件的尾部。
cat是查看,echo是寫入,echo (內容) >> 文件
cal:顯示當前月日歷。
echo:輸出內容到控制臺。
head:顯示文件的開頭部分。-n 5:看前面5行內容。
tail:輸出文件中尾部的內容。-n 5:看后面5行內容。-f:時事追蹤該文檔的所有更新
時間日期類
date:顯示當前日期和時間
date “+%Y”:顯示當前年份
date “+%d”:顯示當前月份
date “+%Y-%m-%d %H:%M:%S”:顯示年-月-日 時:分:秒
設置日期:date -s 字符串時間
cal:查看日歷指令;cal 年份:顯示某一年一整年的日歷
搜索查找類
find:從指定目錄向下遞歸的遍歷其各個子目錄,將滿足條件的文件或者目錄顯示在終端。
find (搜索范圍) -name (文件名):按照指定的文件名查找模式查找文件。
find (搜索范圍) -user (用戶名):按照指定的用戶名查找模式查找文件。
find (搜索范圍) -size (+多少/-多少/多少):按照指定的文件大小查找模式查找文件(大于多少/小于多少/等于多少)
查詢 /目錄下所有.txt的文件:find / -name *.txt
locate:locate (搜索文件)
可以快速定位文件路徑。locate指令利用事先建立的系統中所有文件名稱及路徑的locate數據庫實現快速定位給定的文件。locate指令無需遍歷整個文件系統,查詢速度較快。為了保證查詢結果的準確度,管理員必須定期更新locate時刻。
在第一次運行之前,必須使用updatedb指令創建locate數據庫。
grep:過濾查找,表示將前一個命令的處理結果輸出傳遞給后面的命令處理。經常跟管道一起使用。
grep [選項] 查找內容 源文件
-n:顯示匹配行及行號。
-i:忽略大小寫字母。
cat hello.txt | grep yes
壓縮和解壓類
gzip/gunzip:壓縮文件/解壓
gzip (文件):壓縮為.gz文件,原來文件不保留。
gunzip (文件):解壓縮,同樣也不保留源文件。
zip/unzip:壓縮文件/解壓
zip [選項] (壓縮后文件xxx.zip) (將要壓縮的文件)
unzip [選項] (要解壓的文件xxx.zip)
zip -r:遞歸壓縮,即壓縮目錄
unzip -d (目錄):指定解壓后的文件的存放目錄
tar:打包指令,最后打包后的文件是.tar.gz的文件
tar [選項] xxx.tar.gz (打包的內容)
-c:產生.tar打包文件
-v:顯示詳細信息
-f:指定壓縮后的文件名
-z:打包同時壓縮
-x:解壓.tar文件
壓縮:tar -zcvf (壓縮后文件名) (要壓縮的文件)
解壓:tar -zxvf (要解壓的文件)
解壓到指定目錄:tar -zxvf (要解壓的文件) -C (指定目錄),指定解壓到的目錄要存在。
組管理和權限管理
文件:
所有者
所在組
其他組
改變用戶所在組
文件/目錄所有者:
一般為文件的創建者,誰創建了該文件,就自然的稱為該文件的所有者。
查看文件所有者:ls -ahl
修改文件所有者:chown (用戶名) (文件名)
文件所在組不一定是文件所有者。
組的創建
groupadd (組名)
文件/目錄所在組
修改文件所在組:chgrp (組名) (文件名)
其他組
除文件的所有者和所在組的用戶外,系統的其他用戶都是文件的其他組
改變用戶所在組
在添加用戶時,可以指定將該用戶添加到哪個組中,同樣的用root的管理權限可以改變某個用戶所在的組
改變用戶所在組:usermod -g 組名 用戶名
改變用戶登錄的初始目錄:usermod -d 目錄名 用戶名
權限的基本介紹
文件類型:
-:普通類型
d:目錄
l:軟連接
c:字符設備【鍵盤、鼠標等】
b:塊文件【硬盤】
ls -l 顯示內容說明:
rw-:表示文件所有者權限(rw,讀寫)
r–:表示文件所在組的用戶的權限(r,只有讀的權限)
r–:表示文件其他組的用戶的權限(r,只有讀的權限)
1:如果是文件,表示硬連接的數;如果是目錄則表示該目錄的子目錄個數
tom:文件所有者
bandit:文件所在組
0:文件的大小,0個字節;如果是目錄,則統一為4096
July 1 13:40:文件最后的修改時間
ok.txt:文件名
rwx權限詳解
rwx作用到文件:
r:read,可讀。讀取查看。
w:write,可以修改。但不代表可以刪除該文件。刪除一個文件的前提條件是對該文件所在的目錄有寫權限,才能刪除該文件。
x:execute,可執行。可以被執行。
rwx作用到目錄:
r:可以讀取,ls查看目錄內容。
w:可以修改,目錄內創建+刪除+重命名目錄。
x:可執行,可以進入該目錄。
修改權限 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 文件目錄名
修改文件所有者 chown
chown newowner file:改變文件的所有者
chown newowner:newgroup file:改變用戶的所有者和所在組
-R:如果是目錄,則使其下所有子文件或目錄遞歸生效
修改文件所在組 chgrp
chgrp newgroup file:改變文件的所有組
-R:如果是目錄,則使其下所有子文件或目錄遞歸生效
定時任務調度
crond任務調度:crontab進行定時任務調度
crontab [選項]
-e:編輯crontab定時任務
-i:查詢crontab任務
-r:刪除當前用戶所有的crontab任務
-l:列出當前有哪些任務調度
service crond restart:重啟任務調度
當保存退出后就生效了
參數細節說明
項目?? ?含義?? ?范圍
第一個“*”?? ?一小時當中的第幾分鐘?? ?0-59
第二個“*”?? ?一天當中的第幾小時?? ?0-23
第三個“*”?? ?一個月當中的第幾天?? ?1-31
第四個“*”?? ?一年當中的第幾月?? ?1-12
第五個“*”?? ?一周當中的星期幾?? ?0-7(0和7都代表星期日)
特殊符號說明
*:代表任何時間。比如第一個*就代表一小時中每分鐘都執行一次的意思。
,:代表不連續的時間。比如“0 8,12,16 * * *命令”,就代表在每天的8點0分,12點0分,16點0分都執行一次命令。
-:代表連續的時間范圍。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5點0分執行命令。
/n:代表每隔多久執行一次。比如“*/10 * * * * 命令”,代表每隔10分鐘就執行一遍命令。
Linux磁盤分區、掛載
分區的方式
mbr分區
最多支持四個主分區
系統只能安裝在主分區
擴展分區要占一個主分區
MBR最大只支持2TB,但擁有最好的兼容性
gpt分區
支持無限多個主分區(但操作系統可能限制,比如windows下最多128個分區)
最大支持18EB的大容量(1EB=1024PB,PB=1024TB)
windows7 64位以后支持gpt
Linux分區
Linux來說無論有幾個分區,分給哪一個目錄使用,它歸根結底就只有一個根目錄,一個獨立且唯一的文件結構,Linux中每個分區都是用來組成整個文件系統的一部分。
Linux采用了一種叫做“載入”的處理方法,它的整個文件系統中包含了一整套的文件和目錄,且將一個分區和一個目錄聯系起來。這時要載入的一個分區將使它的存儲空間在一個目錄下獲得。
硬盤說明
Linux硬盤分IDE硬盤和SCSI硬盤,目前基本上是SCSI硬盤
lsblk -f:查看當前系統的分區和掛載情況。(list block)
掛載的經典案例
需求是給我們的Linux系統增加一個新的硬盤,并且掛載到/home/newdisk
虛擬機添加硬盤
分區:fdsk /dev/sdb
格式化:mkfs -t ext4 /dev/sdb1
掛載:新建目錄:mkdir /home/newdisk;掛載:mount /dev/sdb1 /home/newdisk
設置可以自動掛載(永久掛載):重啟系統后,仍然可以掛載。vim etc/fstab 增加掛載信息。mount -a:生效
取消掛載:unmount /dev/sdb1
磁盤情況查詢:df -h / df -l
查詢指定目錄的磁盤占用情況:du -h /目錄,默認為當前目錄
-s:指定目錄占用大小匯總
-h:帶計量單位
-a:含文件
–max-depth=1:子目錄深度
-c:列出明細的同時,增加匯總值
磁盤情況-工作實用指令
統計/home文件夾下文件的個數:ls -l /home | grep "^-" | wc -l
統計/home文件夾下目錄的個數:ls -l /home | grep "^d" | wc -l
統計/home文件夾下文件的個數,包括子文件夾里的:ls -lR /home | grep "^-" | wc -l
統計文件夾下目錄的個數,包括子文件夾里的:ls -lR /home | grep "^d" | wc -l
以樹狀顯示目錄結構:首先安裝tree指令:yum install tree,tree
網絡配置
指定固定IP:直接修改配置文件來指定IP,并可以連接到外網,編輯:vim /etc/sysconfig/network-scripts/ifcfg-eth0
重啟網絡服務:service network restart
進程管理
在Linux中,每個執行的**程序(代碼)**都稱為一個進程。每個進程都分配一個ID號
每一個進程,都會對應一個父進程,而這個父進程可以復制多個子進程。例如www服務器。
每個進程都可能以兩種方式存在。前臺和后臺。
前臺進程:用戶目前的屏幕上可以進行操作的。
后臺進程:實際在操作,但由于屏幕上無法看到的進程,通常使用后臺方式執行。
一般系統的服務都是以后臺進程的方式存在,而且都會常駐在系統中,直到關機才結束。
顯示系統執行的進程
ps:查看目前系統中,有哪些正在執行,以及它們執行的狀況。可以不加任何參數。PID:進程識別號;TTY:終端機號;TIME:此進程所消耗的CPU時間;CMD:正在執行的命令或進程名
ps -a:顯示當前終端的所有進程信息。
ps -u:以用戶的格式顯示進程信息。
ps -x:顯示后臺進程運行的參數。
ps -axu | grep xxx:過濾得到xxx的信息。
ps -ef:以全格式顯示當前所有的進程,查看進程的父進程。
-e:顯示所有進程。
-f:全格式。
終止進程
kill [選項] 進程號:通過進程號殺死進程
killall 進程名稱:通過進程名稱殺死進程,也支持通配符,這在系統因負載過大而變得很慢時很有用
-9:表示強迫進程立刻停止
案例1:踢掉非法用戶:kill 進程號
案例2:終止遠程登錄服務sshd,在適當時候再次重啟sshd服務
案例3:終止多個gedit編輯器:killall 進程名稱
案例4:強制殺掉一個終端:kill -9 進程號
查看進程樹:pstree [選項]
-p:顯示進程的PID
-u:顯示進程的所屬用戶
服務(service)管理
service管理指令:service 服務名 [start | stop | restart | reload | status]
在CentOS7.0之后,不再使用service,而是systemctl
查看防火墻情況:
service iptables status
systemctl status firewalld(7.0之后的版本)
測試某個端口是否在監聽:telnet
查看服務名:
方式1:使用setup->系統服務就可以看到
方式2:/etc/init.d/服務名稱
服務的運行級別(runlevel):
查看或修改默認級別:vim /etc/inittab
每個服務對應的每個運行級別都可以設置
如果不小心將默認的運行級別設置成0或者6,怎么處理?
進入單用戶模式,修改成正常的即可。
chkconfig:可以給每個服務的各個運行級別設置自啟動/關閉
查看xxx服務:chkconfig –list | grep xxx
查看服務的狀態:chkconfig 服務名 --list
給服務的運行級別設置自啟動:chkconfig –level 5 服務名 on/off
要所有運行級別關閉或開啟:chkconfig 服務名 on/off
動態監控進程
top [選項]
top和ps命令很相似。它們都用來顯示正在執行的進程。top和ps最大的不同之處在于top在執行一段時間可以更新正在運行的進程。
-d 秒數:指定top命令每隔幾秒更新。默認是3秒。
-i:使top不顯示任何閑置或者僵死進程。
-p:通過指定監控進程ID來僅僅監控某個進程的狀態。
案例1:監控特定用戶:top查看進程;u輸入用戶名。
案例2:終止指定的進程:top查看進程;k輸入要結束的進程。
案例3:指定系統狀態更新的時間(每隔10秒自動更新,默認是3秒):top -d 10
交互操作說明:
P:以CPU使用率排序,默認就是此項
M:以內存的使用率排序
N:以PID排序
q:退出top
監控網絡狀態
netstat [選項]
-an:按一定順序排列輸出
-p:顯示哪個進程在調用
RPM
RPM:RedHat Package Manager,紅帽軟件包管理工具。
RPM查詢已安裝的rpm列表:rpm -qa | grep xx
rpm包的其它查詢指令:
rpm -qa:查詢所安裝的所有rpm軟件包
rpm -qa | more
rpm -qa | grep xx
rpm -q xx:查詢xx軟件包是否安裝
rpm -qi xx:查詢軟件包信息
rpm -ql xx:查詢軟件包中的文件
rpm -qf 文件全路徑名:查詢文件所屬的軟件包
卸載rpm包:rpm -e 軟件包名稱
刪除時可能會發生依賴錯誤,忽視依賴強制刪除的方法:rpm -e --nodeps 軟件包名稱
安裝rpm包:rpm -ivh 軟件包全路徑名稱
i=install:安裝
v=verbose:提示
h=hash:進度條
YUM
YUM:是一個shell前端軟件包管理器。基于RPM包管理,能夠從指定的服務器自動下載RPM包并安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包。使用yum的前提是聯網。
yum list | grep xx:查詢yum服務器是否有需要安裝的軟件
yum install xx:安裝指定的yum包
yum -y remove xx:卸載指定的yum包
搭建JAVAEE環境
將軟件上傳到/opt下
解壓縮
配置環境變量的配置文件vim /etc/profile
JAVA_HOME=/opt/jdk1.7.0_79
PATH=/opt/jdk1.7.0_79/bin:$PATH
export JAVA_HOME PATH
保存然后source /etc/profile生效
安裝Tomcat
解壓縮到/opt:tar -zxvf apache-tomcat-7.0.70.tar.gz
進入tomcat的bin目錄,啟動tomcat ./startup.sh:./startup.sh
開放端口 vim /etc/sysconfig/iptables
firewall-cmd --zone=public --add-port=8080/tcp --permanent(Centos7)
systemctl restart firewalld.service
firewall-cmd --reload
重啟防火墻生效
測試是否安裝成功:在windows和Linux下訪問http://linuxip:8080
安裝Eclipse
解壓縮到/opt:tar -zxvf eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz
啟動eclipse,配置jre和server:./eclipse
編寫Hello world程序并測試成功
編寫jsp頁面,并測試成功
安裝mysql
查看是否有mysql:rpm -qa | grep mysql
刪除舊mysql:rpm -e –nopdeps mysql(強制刪除)
安裝環境:yum -y install make gcc-c++ cmake bison-devel ncurses-devel
解壓mysql:tar -zxvf mysql-5.6.14.tar.gz
進入mysql目錄
編譯安裝:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc
-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306
-DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENHINE=1
-DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
編譯并安裝:make && make install
配置mysql,設置權限
查看是否有mysql用戶和組:cat /etc/passwd,cat /etc/group
添加mysql組:groupadd mysql
添加mysql用戶并放在mysql組中:useradd -g mysql mysql
修改/usr/local/mysql權限:chown -R mysql:mysql /usr/local/mysql/
初始化mysql:
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
–user=mysql
如果報錯:Can't locate Data/Dumper.pm,則運行:yum install 'perl(Data::Dumper)',參考鏈接:https://www.cnblogs.com/yanghongfei/p/7118072.html
刪除之前mysql的配置文件:mv /etc/my.cnf /etc/my.cnf.bak
啟動MySQL
添加服務,拷貝服務腳本到init.d目錄,并設置開機啟動
[注意在 /usr/local/mysql 下執行]
cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
service mysql start
執行下面的命令修改root密碼
cd /usr/local/mysql/bin
./mysql -u root -p
set password = password(‘root’);(quit退出mysql)
Shell編程
Shell是一個命令行解釋器,它為用戶提供了一個向Linux內核發送請求以便裕興程序的界面系統級程序,用戶可以用Shell來啟動、掛起、停止甚至是編寫一些程序。
Shell腳本的執行方式:
腳本格式要求:
腳本以#!/bin/bash 開頭
腳本需要有可執行權限
腳本的常用執行方式:
方式1(輸入腳本的絕對路徑或相對路徑)
首先要賦予xx.sh腳本的+x權限:chmod 744 myShell.sh
執行腳本:./myShell.sh
方式2(sh+腳本):
說明:不用賦予+x權限,直接執行即可
sh ./myShell.sh
shell的變量
shell變量的介紹
Linux Shell的變量分為,系統變量和用戶自定義變量
系統變量:$HOME、$PWD、$SHELL、$USER等等
顯示當前shell中所有變量:set
shell變量的定義
基本語法
定義變量:變量=值,=兩邊不能有空格
撤銷變量:unset 變量
聲明靜態變量:readonly 變量,注意:不能unset
定義變量的規則
變量名稱可以由字母、數字和下劃線組成,但是不能以數字開頭
等號兩側不能有空格
變量名稱一般習慣為大寫
將命令的返回值賦給變量
A=ls -la這里有反引號(ESC下面),運行里面的命令,并把結果返回給變量A
A=$(ls -la)等價于上面
設置環境變量
基本語法
export 變量名=變量值:將shell變量輸出為環境變量
source 配置文件:讓修改后的配置文件信息立即生效
echo $變量名:查詢環境變量的值
多行注釋:
:<<!
需要注釋的內容
!
位置參數變量
當我們執行一個shell腳本時,如果希望獲取到命令行的參數信息就可以使用到位置參數變量。比如: ./myshell.sh 100 200,這個就是一個執行shell的命令行,可以在myshell腳本中傳參100,200。
基本語法:
$n:n為數字,$0代表命令本身,$1-$9代表第一到第九個參數,10以上的參數需要用大括號包含,如${10}
$*:這個變量代表命令行中所有的參數,$*把所有的參數看成一個整體
$@:這個變量也代表命令行中所有的參數,不過$@把每個參數區分對待
$#:這個變量代表命令行中所有參數的個數
預定義變量
shell設計者事先已經定義好的變量,可以直接在shell腳本中使用
基本語法:
$$:當前進程的進程號(PID)
$!:后臺運行的最后一個進程的進程號(PID)
$?:最后一次執行的命令的返回狀態。如果這個變量的值為0,證明上一個命令正確執行;如果這個變量的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確。
后臺運行:./myShell.sh &
運算符
在Shell中進行各種運算操作
“$((運算式))”或“$[運算時]”
expr m + n,注意expr運算符間要有空格
expr m - n
expr \* / %,乘,除,取余
條件判斷
基本語法:[ condition ],注意condition前后有空格!
非空返回true,可使用$?驗證(0為true,>1為false)
兩個整數比較
=:字符串比較
-lt:小于
-le:小于等于
-eq:等于
-gt:大于
-ge:大于等于
-ne:不等于
按照文件權限進行判斷
-r:有讀的權限
-w:有寫的權限
-x:有執行的權限
按照文件類型進行判斷
-f:文件存在并且是一個常規的文件
-e:文件存在
-d:文件存在并且是一個目錄
流程控制if語句
if判斷基本語法:
if [ 條件判斷式 ];then
程序
fi
或者:
if [ 條件判斷式 ]
??? ?then
??? ?程序
elif [ 條件判斷式 ]
??? ?then
??? ?程序
fi
流程控制case語句
case語句基本語法:
case $變量名 in
“值1”)
如果變量的值等于值1,則執行程序1
;;
“值2”)
如果變量的值等于值2,則執行程序2
;;
…省略其他分支…
*)
如果變量的值都不是以上的值,則執行此程序
;;
esac
流程控制for循環
for循環基本語法1:
for 變量 in 值1 值2 值3…
??? ?do
??? ?程序
??? ?done
for循環基本語法2
for ((初始值;循環控制條件;變量變化))
??? ?do
??? ?程序
??? ?done
流程控制while循環
while循環基本語法1:
while [ 條件判斷式 ]
??? ?do
??? ?程序
??? ?done
read讀取控制臺的輸入
read [選項] (參數)
-p:指定讀取值時的提示符
-t:指定讀取值時等待的時間(秒),如果沒有在指定的時間內輸入,就不再等待了。
參數:變量:指定讀取值的變量名
函數
系統函數
basename:返回完整路徑最后/的部分,常用于獲取文件名
basename [pathname] [suffix]
basename [string] [suffix]
basename命令會刪掉所有的前綴包括最后一個/
選項:suffix為后綴,如果suffix被指定了,basename會將pathname或string中的suffix去掉
dirname:返回完整路徑最后/的前面的部分,常用于返回路徑部分
dirname 文件絕對路徑:從給定的包含絕對路徑的文件名中出去文件名(非目錄部分),然后返回剩下的路徑(目錄部分)
反正兩個系統函數都不要最后一個/
自定義函數
基本語法:
function funname()
{
??? ?Action;
??? ?[return int;]
}
調用直接寫函數名:funname(不用寫括號),然后在后面寫參數
Shell編程綜合案例
需求分析
每天凌晨2:10備份數據庫atguiguDB到/data/backup/db
備份開始和備份結束能夠給出相應的提示信息
備份后的文件要求以備份時間為文件名,并打包成.tar.gz的形式,比如:2018-03-12_230201.tar.gz
在備份的同時,檢查是否有10天前備份的數據庫文件,如果有就將其刪除。
如果報錯:mysqldump: command not found
解決方案:
先找到mysqldump的位置:find / -name mysqldump -print
然后建立一個鏈接:ln -fs /usr/local/mysql/bin/mysql /usr/bin
crontab -e
10 2 * * * /usr/sbin/mysql_backup_db.sh
Python定制篇 開發平臺Ubuntu
設置Ubuntu支持中文
su root顯示認證失敗:是因為我們還沒有對root用戶設置密碼
給root用戶設密碼:sudo passwd
如果ubuntu沒有vim:apt install vim
apt軟件管理和遠程登錄
apt:Advanced Packaging Tool,是一款安裝包管理工具。在Ubuntu下,我們可以使用apt命令進行軟件包的安裝、刪除、清理等。
常用命令:
sudo apt-get update
更新源
sudo apt-get install package 安裝包
sudo apt-get remove package 刪除包
sudo apt-cache search package 搜索軟件包
sudo apt-cache show package
獲取包的相關信息,如說明、大小、版本等
sudo apt-get install package --reinstall
重新安裝包
sudo apt-get -f install
修復安裝
sudo apt-get remove package --purge 刪除包,包括配置文件等
sudo apt-get build-dep package 安裝相關的編譯環境
sudo apt-get upgrade 更新已安裝的包
sudo apt-get dist-upgrade 升級系統
sudo apt-cache depends package 了解使用該包依賴那些包
sudo apt-cache rdepends package 查看該包被哪些包依賴
sudo apt-get source package
下載該包的源代碼
更新Ubuntu軟件下載地址
查看Ubuntu版本:cat /proc/version
需要修改的文件位置:/etc/apt/source.list
Windows使用SSH遠程登錄Ubuntu
安裝SSH:sudo apt-get install openssh-server
啟用SSH:service sshd start
Linux使用SSH遠程登錄Ubuntu
同上
基本語法:ssh 用戶名@IP
例如:ssh atguigu@192.168.188.130
使用shh訪問,如訪問出現錯誤。可查看是否有該文件 ~/.ssh/known_ssh,嘗試刪除該文件解決。
登出:exit或者logout
版權聲明:本文為CSDN博主「李英俊小朋友」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_21579045/article/details/95605401
總結
以上是生活随笔為你收集整理的尚硅谷韩顺平Linux教程学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android--APK 捆绑器的实现
- 下一篇: Tomcat服务读取静态图片/静态资源