點擊上方“框架師”,選擇“置頂公衆號”
我們一起學習進步!
-
引言 -
本文來自個人學習筆記,希望有幫助到你,未經授權,禁止複製修改
Linux介紹
-
Windows的不足 -
Windows是收費的 -
系統長時間運行,安裝多了,系統越來越慢,越來越不穩定。 -
病毒和流氓軟件很多 -
Linux的優勢 -
Linux系統是免費,很多還是開源的。 -
長時間運行,很穩定的 -
幾乎沒有病毒和流氓軟件
學習Linux的好處
學會對Linux的基本操作是後端JavaEE程序員的必修課。做爲一個後端JavaEE程序員,通常在Windows中開發完程序後,需要部署到一個相對比較安全,穩定的服務器中運行,這臺服務器上安裝的往往不是Windows操作系統,而是Linux操作系統。
windows默認安裝完成軟件就可以連外網,linux默認安裝完軟件是不可以連外網,必須防火牆放過纔可以
linux的概述
Linux(linux is not unix)是基於Unix的開源、免費、多用戶、多任務的操作系統,由於系統的穩定性和安全性。幾乎成爲程序代碼運行的最佳系統環境。
linux的分類
-
按照市場的需求不同
-
圖形界面 -
字符界面(推薦),特點:性能最優 -
按照原生程度不同
-
是第三方個人或組織在內核基礎上進行二次開發(包裝) -
特點:功能應用更多,偏向應用,大多數發行版都是免費的 -
特點:免費
功能:主要解決操作系統底層,操作內存,cpu,硬盤,網卡。。。
-
內核版,linux之父(託瓦茲)團隊開發
-
發行版(推薦使用)
Linux安裝
兩種安裝方式
-
在PC電腦上進行安裝 -
使用虛擬機安裝
常見虛擬機軟件
-
VMWare 軟件,威睿公司,收費的(推薦使用,可以試用) -
VirtualBox軟件,免費的, 最開始是sun公司,由於被oracle收購了,所以目前屬於oracle
windows主機連接linux虛擬機與虛擬機網卡介紹
命令 | 含義 |
---|---|
ifconfig | linux系統用於查看ip地址信息 |
ip addr | linux系統用於查看ip地址信息 |
在windows主機上使用dos命令ping進行拼通linux系統
ping www.mobaijun.com
使用客戶端工具連接linux系統
常見的客戶端軟件
SecureCRT(操作客戶端命令),SecureFx(用於傳輸文件)
XShell(操作客戶端命令),XFtp(用於傳輸文件)
目錄操作1—目錄結構
linux系統沒有盤符,一切從根目錄/開始,如下圖
根目錄下所有子目錄
常見的目錄配置
目錄 | 含義 |
---|---|
bin目錄 | 存放着所有linux系統的命令 |
root目錄 | 超級管理員root用戶的主目錄 |
home目錄 | 存放所有普通用戶主目錄的位置 |
usr目錄 | (unix shared resources)資源共享目錄,所有用戶都可以操作的目錄,以後我們安裝軟件就安裝到這裏usr/local,這樣所有用戶都可以使用軟件 |
etc目錄 | 存儲配置文件的目錄,以後網卡配置文件,權限配置文件都在這裏 |
目錄操作—切換—創建—查看
作用 | 改變目錄/CD和目錄名直接需要空格 |
---|---|
/ | 切換到根目錄 |
. | 當前目錄 |
.. | 上一級目錄 |
~ | 返回當前用戶主目錄 |
- | 返回上一次目錄 |
創建目錄
mkdir 目錄名稱 | 創建一個目錄 |
---|---|
mkdir -p | 創建多級目錄 |
mkdir -p /父目錄名稱/子目錄名稱
-p,如果父目錄不存在會先創建父目錄再創建子目錄
查看目錄內容
ls參數 | 顯示當前目錄下的文件和目錄 |
---|---|
-l | 以詳細的方式顯示當前目錄下的文件和目錄 |
-a | 顯示當前目錄下的所有文件和目錄,包含隱藏目錄,.XXX開頭的文件和目錄是隱藏的 |
目錄操作搜索—重命名—複製—刪除—幫助
find | [目錄名稱] [-name'查詢字符串'] |
---|---|
無參數 | 搜索當前目錄和它的子目錄所有文件和目錄 |
目錄名稱 | 搜索指定目錄下和他的子目錄所有的文件和目錄 |
-name '查詢字符串' | 指定具體查詢字符串 |
*匹配多個字符串 | |
?匹配一個字符 |
重命名與移動
-
重命名
move=mv | |
---|---|
mv 舊名稱 新名稱 | |
mv既可以改文件也可以改目錄 |
-
移動
mv 源目錄 目標目錄 | |
---|---|
mv將源目錄移動到目標目錄下 |
-
複製
cp [參數] 源文件或目錄 目標目錄 將源文件或整個目錄複製到目標目錄下 | |
---|---|
-r recursion連同子目錄下所有文件全部複製 |
-
刪除
rm | 參數 文件或目錄1 文件或目錄2可以同時指定多個文件或目錄 |
---|---|
-r | recursion 連同子目錄一起刪除,只用來刪除目錄 |
-f | 強制刪除,刪除之前會確認,需要回答yes/no |
注意:千萬不要rm -rf /* 會導致刪除所有的文件或目錄,導致系統崩潰
-
查看幫助文檔 -
命令 --help 查看英文文檔手冊,使用q退出 -
man 命令 查看中文文檔手冊【推薦方式】,使用q退出
創建文件與查看文件內容
touch 文件1 文件2 | 創建一個或多個文件0字節大小 |
---|---|
cat 文件名 | 查看文件所有內容 |
more 文件名 | 查看文件所有的內容,可以分屏顯示 |
head 文件名 | 查看文件前10行 |
had -n 行數 文件名 | 查看前面指定的行數 |
tail 文件名 | 查看文件後10行 |
tail -n 行數 文件名 | 查看文件後指定的行數 |
less 文件名 | 查看文件所有內容 -n 顯示行號 PageUp 向前翻頁 PageDown 向後翻頁 q:退出 |
編輯文件內容
-
命令模式下命令
命令 | 描述 |
---|---|
i | 在當前光標的前面插入字符 |
a | 在當前光標的後面插入字符 |
o | 在當前光標的下一行插入字符 |
命令或底行模式下常用的編輯命令 | |
yy | 複製當前行 |
p | 如果前面已經複製了,在當前下面複製 |
dd | 刪除當前行 |
u | 撤銷 |
/字符串 | 搜索文本內容 n:向後搜索 N:向前搜索 |
wp | 保存並退出 |
q! | 不保存強制退出 |
wp! | 強制保存退出(只讀文件使用) |
壓縮與解壓
拓展名稱 | 分類 |
---|---|
.zip/.rar | Windows系統壓縮包 |
.tar | 在Linux下的打包文件 |
.gz | 在Linux下的壓縮文件 |
.tar.gz | 在Linux下的打包壓縮文件 |
-
壓縮文件
tar | 參數 壓縮包名 一個或多個文件{對一個或多個文件進行打包並壓縮} |
---|---|
-c | 創建一個打包的文件 |
-v | 顯示打包的詳細過程 |
-z | 壓縮文件 |
-f<壓縮文件名稱> | 只當壓縮包的文件名稱,f後面跟着壓縮的文件名,一般放在參數最後面 |
-
解壓文件
tar 參數 壓縮文件名稱 | 解壓文件到當前目錄 |
---|---|
-x | 解壓指定的文件 |
-v | 顯示解壓的詳細過程 |
-f<壓縮文件> | 指定要解壓的文件 |
-C | 解壓到指定的目錄下 |
查看工作目錄位置—查看進程—內存耗用—殺死進程
-
查看進程
pwd | 查看當前工作目錄 |
---|---|
ps | 顯示當前用戶通過終端啓動的進程 |
-a | 顯示所有用戶通過終端啓動的進程 |
-u | 顯示所有用戶通過終端啓動的進程詳細信息 |
-x | 顯示所有用戶的所有進程 |
-
殺死進程
kill 參數 進程號 | 通過ps可以查看到進程號 |
---|---|
-9 | 強制終止進程 |
-
查看系統內存整體耗用
top |
---|
查看系統內存整體耗用 |
搜索文件內容
grep是一種強大的文本搜索工具,它能使用字符串搜索文本,並把匹配的行和行號打印出來。
-
搜索
grep 參數 字符串 文件名 | 搜索指定文件中字符串內容 |
---|---|
-n | 搜索結果中顯示行號 |
-v | 顯示不匹配的行 |
-i | 忽略大小寫搜索 |
管道
管道就是“|”
-
命令
語法 | 命令1 | 命令2 |
---|---|
解釋 | 管道命令|,必須要有兩條以上的命令參與運算 |
關機與重啓
-
Linux/Windows
Linux | 釋義 |
---|---|
shutdown now | 關閉服務器 |
-h +參數 | 指定**時間後關機 |
shutdown -n 16:05 | 指定時間關機 |
shutdown -c | 清除定時命令 |
reboot | 重啓Linux |
Windows命令 | 釋義 |
shutdown -s | 立刻關機 |
shutdown -s -t 秒 | 指定多少秒後關機 |
shutdown -a | 清除定時計劃 |
shutdown -r | 系統重啓 |
文件權限
-
每一類用戶都有3個權限 -
r:讀取權限, 只讀 -
w: 寫入權限 , 可以編輯文件 -
x: 執行權限, 由於某些文件是可以執行的,如有有執行權限纔可以執行 -
操作權限 -
添加權限:chmod 用戶或組+權限 資源文件或目錄 -
刪除權限:chmod 用戶或組-權限 資源文件或目錄 -
修改權限:chmod 用戶或組=權限 資源文件或目錄
crontab定時任務
命令 | 含義 |
---|---|
crontab -l | 查看當前用戶的定時任務列表 |
crontab -e | 進入編輯當前用戶定時任務編輯器 |
crontab -r | 刪除當前用戶的定時任務 |
* * * * * 命令 | 每分鐘執行一次命令 |
服務管理—自啓動服務管理
-
服務管理的命令:systemctl start/stop/restart/status 服務名 操作服務啓動/停止/重啓/查看狀態
-
設置服務開機啓動:systemctl enable 服務名.service
-
設置服務開機不啓動:systemctl disable 服務名.service
網絡管理1-主機名管理
-
主機名稱命令
# 查看主機名
$ hostname
# 修改主機名稱 永久修改計算機名字,需要重啓或使用bash刷新
$ hostnamectl set-hostname [args]
# 刷新
$ bash
網絡管理2-網絡服務管理
# 啓動網絡
$ systemctl start network
# 停止
$ systemctl stop network
# 重啓
$ systemctl restart network
# 查看狀態
$ systemctl status network
如果linux系統不能上網(內網和外網),需要檢查網絡服務
網絡管理3-網卡激活管理
-
關閉網卡激活實現步驟
# 找到網卡配置文件ens32
$ cd /etc/sysconfig/network-scripts/ # 網卡配置文件目錄
# 查看目錄文件
$ ls
# 修改配置文件
$ vim ifcfg-ens32
# 修改配置,關閉網卡
ONBOOT=no
# 重啓網絡服務
$ systemctl restart network
# 測試是否可以聯網
$ ping www.mobaijun.com
# 修改配置/激活網卡 修片配置文件ifcfg-ens33,開啓網卡
$ ONBOOT=yes
# 重啓網絡服務
$ systemctl restart network
網絡管理4-配置靜態ip
-
IP配置類型 -
dhcp:動態IP -
static:靜態IP -
配置靜態IP步驟 -
域名服務器,根據域名獲取對應的服務器ip地址,這樣纔可以訪問外網 -
用於區別不同的網絡,網關可以解決不同的網絡通信,需要硬件支持路由器 -
用於標識ip地址的網絡號是多少位 -
IP地址由網絡號和主機號組成 -
給linux系統設置ip必須確定ip的地址、子網掩碼、網關 -
IP地址(互聯網協議地址): -
子網掩碼 -
網關 -
DNS -
修改網卡配置
# 找到網卡配置文件ens32
$ cd /etc/sysconfig/network-scripts/ # 網卡配置文件目錄
# 查看目錄文件
$ ls
# 修改配置文件
$ vim ifcfg-ens32
# 修改配置,切換成靜態模式
BOOTPROTO=static
# 最下方添加相關內容
IPADDR=192.168.56.135
GATEWAY=192.168.123.83
NETMASK=255.255.255.0
DNS1=114.114.114.114
# 重啓網絡服務
$ systemctl restart network
# 測試是否可以聯網
$ ping www.mobaijun.com
網絡管理5-克隆虛擬電腦
-
克隆步驟 -
關閉當前虛擬機linux系統 -
選擇當前虛擬機/管理/克隆/ -
修改克隆出來的靜態ip -
修改計算機的名字
網絡管理6-域名映射
-
url域名訪問服務器通信原理
-
本地域名映射文件位置 -
Windows系統本地域名映射位置: -
c:\windows\System32\drivers\etc\hosts
-
Linux系統本地域名映射位置: -
/etc/hosts
-
修改本地域名映射實現步驟
# 編輯本地etc/hosts域名映射文件
$ vim /etc/hosts
# 添加域名映射IP的配置
192.168.123.83 www.mobaijun.com
# 保存退出
$ wq
# 測試效果
$ ping www.mobaijun.com
網絡管理7-查詢網絡進程使用端口號
常用命令
netstat [args] | null | 顯示網絡狀態 |
---|---|---|
-n | number | 顯示程序的IP地址和端口號 |
-t | TCP | 只顯示TCP協議鏈接的程序 |
-l | listener | 顯示監聽中的Socket |
-p | Programs | 顯示程序的名稱 |
-u | UDP | 查詢udp協議通信的程序 |
# 查看端口、udp、tcp、正在監聽、顯示程序名的所有程序
$ netstat -nutlp
防火牆管理
防火牆作用 是防止外界訪問系統內部的程序,防火牆允許哪個軟件訪問外網,這個軟件纔可以進行網絡通信
命令 | 簡介 |
---|---|
systemctl status firewalld | 查看狀態 |
systemctl start firewalld | 啓動防火牆 |
systemctl stop firewalld | 關閉防火牆 |
systemctl enable firewalld | 開機自啓 |
systemctl disable firewalld | 讓防火牆開機不自啓 |
SSH有密登錄和免密登錄
-
SSH實現免密登錄步驟
# 在本地生成一對公鑰和私鑰
$ ssh-keygen
# 將公鑰發送給遠程服務器,必須給出遠程服務器的密碼本地才接收公鑰
$ ssh-copy-id address
# 查看公鑰
$ cat authorized_keys
# 發送登錄請求,實現免密登錄
$ ssh address
部署項目1-本地軟件安裝命令rpm
RedHat Package Manager(RPM), 擅長安裝本地的軟件
rpm的作用
查詢已安裝的軟件 安裝軟件 卸載軟件
-
常用命令
rpm [args] [包名] | 類似軟件管家{添加,卸載,查詢} |
---|---|
-v | 顯示安裝的詳細過程 |
-q | 查詢某個軟件是否安裝 |
-a | 查詢所有軟件 |
-h | 列出軟件安裝時的標記 |
-i | install 安裝指定的軟件 |
--nodeps | 不驗證軟件相關關聯性,常於-e一起使用,表示強制卸載 |
-
測試
# 查詢所有已安裝軟件
$ rpm -qa
# 安裝指定的軟件包
$ rpm -ivh <包名>
# 強制卸載指定軟件包
$ rpm -e --nodeps <包名>
RPM_jdk安裝
# 查詢本地是否有JDK
$ rpm -qa | grep java
# 查詢是否安裝JDK
$ rpm -qR jdk
# 新建soft包存放未解壓的安裝包
$ mkdir soft
# 將jdk軟件上傳到linux系統/soft目錄下並解壓到指定目錄
$ tar -xvf jdk-8u251-linux-x64.tar.gz -C /usr/local
# 配置linux的jdk環境變量,操作一個/etc/profile環境變量配置文件
$ vim /etc/profile
# 配置環境變量
#set java environment
JAVA_HOME=/usr/local/jdk1.8.0_251
CLASSPATH=.:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
# 重載環境變量配置文件
$ source /etc/profile
# 查看jdk環境變量是否配置成功
$ java -version
更換YUM源
# 安裝wget
$ yum install -y wget
# 下載CentOS 7的repo文件
$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清除緩存
$ yum clean all
# 生成緩存
$ yum makecache
# 備份CentOS 7系統自帶yum源配置文件
$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 打開CentOS-Base.repo文件,將文件中的所有http開頭的地址更改爲https
$ vim /etc/yum.repos.d/CentOS-Base.repo
# 更新YUM
$ yum update
部署項目3-mysql安裝-啓動-遠程授權
-
MySQL安裝
# 查看CentOS是否自帶的MySQL,如果已經安裝需要卸載。如果沒有找到,則表示沒有安裝
$ rpm -qa | grep mysql
# 在線獲取CentOS7的mysql的rpm安裝文件,直接執行如下命令:
$ wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
# 執行安裝命令
$ rpm -ivh mysql80-community-release-el7-1.noarch.rpm
# 得到兩個配置文件,進入/etc/yum.repos.d目錄下查詢
$ cd /etc/yum.repos.d
# 編輯mysql-community.repo文件,配置資源庫下載版本選擇
$ vim mysql-community.repo
# 編輯需要下載的MySQL版本將`enable=0`改爲`enable=1`
{
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
}
# 下載安裝客戶端、服務器端、工具包
$ yum -y install mysql-community-client mysql-community-server mysql-community-devel
-
啓動
# 啓動MySQL
$ systemctl start mysqld
# 將mysql加到系統服務中並設置開機啓動
$ systemctl enable mysqld
# 登錄mysql,root用戶默認沒有密碼
$ mysql -uroot
# 在mysql中修改自己的密碼
$ set password = password('root');
# 退出
$ exit
# 重新登錄
$ mysql -uroot -proot
-
設置遠程連接權限、開放端口號
開啓mysql的遠程登錄權限,默認情況下mysql爲安全起見,不支持遠程登錄mysql,所以需要設置開啓,並且刷新權限緩存。遠程登錄mysql的權限登錄mysql後輸入如下命令
# 開啓mysql的遠程登錄權限
$ grant all privileges on *.* to 'root'@'%' identified by 'root';
# 刷新權限緩存
$ flush privileges; -
開放Linux的對外訪問的端口3306
# 開放的端口永久保存到防火牆
$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重啓防火牆
$ systemctl restart firewalld
-
Navicat測試
部署項目4-tomcat安裝-啓動
-
下載Tomcat
# 將軟件上傳到linux系統/soft目錄下並解壓
$ tar -xvf apache-tomcat-8.5.55-src.tar.gz -C /usr/local/
# 改名
$ mv apache-tomcat-8.5.55-src tomcat8
# 進入bin目錄
$ cd /usr/local/apache-tomcat-8.5.55-src/bin
# 啓動tomcat服務器
$ ./startup.sh
# 提示權限不夠解決方案
$ chmod u+x *.sh
# 重啓應用服務
$ ./startup.sh
# 開放linux系統防火牆8080端口
$ firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 檢查是否生效
$ firewall-cmd --zone=public --query-port=8080/tcp
# 重啓防火牆
$ systemctl restart firewalld
# windows客戶端使用瀏覽器訪問linux的8080端口tomcat
$ 192.168.123.83:8080
# tomcat無法找到JAVA_HOME解決方案
# 查看環境變量是否有問題
$ echo $JAVA_HOME
$ echo $JRE_HOME
# 定位到tomcat/bin/setclasspath.sh目錄下,文件開頭添加環境變量
JAVA_HOME=/usr/local/jdk1.8.0_251
JRE_HOME=/usr/local/jdk1.8.0_251/jre
# 刪除tomcat和日誌文件
$ rm -rf /usr/local/tomcat
$ rm -rf /usr/local/logs/*.txt &
$ rm -rf /usr/local/logs/*.log &
部署項目5-項目發佈
-
鏈接Linux數據庫(導入數據庫) -
在IDEA中導出war包 -
將war包部署到linux裏面的tomcat裏面的webapps裏面 -
瀏覽器訪問
解決mysql底層亂碼問題
-
修改 druid.properties
配置文件,設置mysql使用utf-8解碼,添加?characterEncoding=utf8
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/linux?characterEncoding=utf8
username=root
password=root
initialSize=5
maxActive=50
maxWait=30000
minIdle=3
-
將當前項目需要重新打包,再部署到linux上tomcat的webapps裏面 -
關閉tomcat,執行shutdown.sh -
啓動tomcat,執行startup.sh
用戶管理1-用戶的管理
-
添加用戶
# 添加用戶,進入/home文件夾/創建用戶和主目錄
$ cd /home
# 查看
$ ll
# 創建組名
$ useradd -m mobaijun
# 查看
$ ll
# 創建用戶名
$ useradd -mg mobaijun tom
# 查看
[root@mobai home]# ll
總用量 0
drwx------. 2 mobaijun mobaijun 62 5月 29 11:25 mobaijun
drwx------. 2 tom mobaijun 62 5月 29 11:25 tom
# 查看/etc/passwd用戶內容
$ cat /etc/passwd
# passwd文件用戶內容
mobaijun:x:1000:1000::/home/mobaijun:/bin/bash
tom:x:1001:1000::/home/tom:/bin/bash
-
給用戶設置密碼並切換用戶
# 設置密碼
$ passwd mobaijun
# 切換用戶
$ su mobaijun
-
刪除用戶
# 切換回主目錄
$ su root
# 刪除用戶組
$ userdel -r tom
-
修改登錄名
# 修改登錄名稱
$ usermod -1 Rose mobaijun
總結
-
useradd:添加用戶 -
passwd:給用戶設置密碼 -
su:切換用戶 -
userdel:刪除用戶 -
usermod:修改用戶登錄名
用戶管理2-組與用戶的管理
-
添加組
# 添加組
$ groupadd [組名]
# 查看組
$ cat /etc/group
-
用戶添加指定組
# 進入主目錄
$ cd /home
# 修改用戶組名稱
$ usermod -g [新組名] [組名]
-
用戶從指定組中刪除
# 用戶從指定組中刪除
$ gpasswd -d 用戶 組名
# 查看
$ ll
# 查看配置文件
$ cat /etc/group
-
修改組名
# 修改組名
$ groupmod -n 新組名 組名
-
刪除組
# 刪除組
$ groupdel 組名
# 查看
$ cat /etc/group
總結
-
groupadd:添加組 -
gpaddwd:將用戶從組中刪除 -
groupmod:修改組名 -
groupdel:刪除組
用戶管理3-給普通用戶設置 sudo超級管理權限
# 編輯配置文件
$ vim /etc/sudoers
# 切換用戶
$ su mobaijun
# 設置權限
$ sudo useradd -m 用戶名
# 查看
$ cd /home
—END—
好了各位小夥伴們,以上就是本文的全部內容了。如果覺得不過癮,還想看到更多,我再給大家推薦幾篇。
日常操作來了!如果覺得這篇文章有點用的話,求在看、求轉發,明人不說暗話,我喜歡這種被大傢伙寵愛的感覺。
one more thing!如果大家想要第一時間看到墨白更新的文章,可以掃描下方的二維碼,關注我的公衆號。我們下篇文章見!
本文分享自微信公衆號 - 框架師(mohu121)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。