尚硅谷韓順平Linux教程學習筆記
寫在前面
學習鏈接:尚硅谷韓順平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
- find:從指定目錄向下遞歸的遍歷其各個子目錄,將滿足條件的文件或者目錄顯示在終端。
-
壓縮和解壓類
- 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 (指定目錄),指定解壓到的目錄要存在。
- gzip/gunzip:壓縮文件/解壓
組管理和權限管理
-
文件:
- 所有者
- 所在組
- 其他組
- 改變用戶所在組
-
文件/目錄所有者:
- 一般為文件的創建者,誰創建了該文件,就自然的稱為該文件的所有者。
- 查看文件所有者: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:可執行,可以進入該目錄。
- rwx作用到文件:
-
修改權限 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
- mbr分區
-
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
- 統計/home文件夾下文件的個數:
網絡配置
- 指定固定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
- 方式1(輸入腳本的絕對路徑或相對路徑)
- 腳本格式要求:
-
shell的變量
-
shell變量的介紹
- Linux Shell的變量分為,系統變量和用戶自定義變量
- 系統變量:
$HOME
、$PWD
、$SHELL
、$USER
等等 - 顯示當前shell中所有變量:set
-
shell變量的定義
-
基本語法
定義變量:變量=值,=兩邊不能有空格
撤銷變量:unset 變量
聲明靜態變量:readonly 變量,注意:不能unset
-
-
定義變量的規則
- 變量名稱可以由字母、數字和下划線組成,但是不能以數字開頭
- 等號兩側不能有空格
- 變量名稱一般習慣為大寫
-
將命令的返回值賦給變量
- A=
ls -la
這里有反引號(ESC下面),運行里面的命令,並把結果返回給變量A - A=$(ls -la)等價於上面
- A=
-
-
設置環境變量
-
基本語法
-
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 文件絕對路徑:從給定的包含絕對路徑的文件名中出去文件名(非目錄部分),然后返回剩下的路徑(目錄部分)
- 反正兩個系統函數都不要最后一個/
- basename:返回完整路徑最后/的部分,常用於獲取文件名
-
自定義函數
-
基本語法:
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:https://blog.csdn.net/qq_21579045
我的博客園:https://www.cnblogs.com/lyjun/
我的Github:https://github.com/TinyHandsome
紙上得來終覺淺,絕知此事要躬行~
歡迎大家過來OB~
by 李英俊小朋友