萬字長文讓你在Linux系統中游刃有餘

點擊上方“框架師”,選擇“置頂公衆號

我們一起學習進步!

正文

  • 引言
    • 本文來自個人學習筆記,希望有幫助到你,未經授權,禁止複製修改

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系統沒有盤符,一切從根目錄/開始,如下圖

根目錄下所有子目錄

image-20200525150911453

常見的目錄配置

目錄 含義
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:退出

編輯文件內容

image-20200525154146121
  • 命令模式下命令
命令 描述
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 系統重啓

文件權限

image-20200525160550045
  • 每一類用戶都有3個權限
    • r:讀取權限, 只讀
    • w: 寫入權限 , 可以編輯文件
    • x:  執行權限, 由於某些文件是可以執行的,如有有執行權限纔可以執行
  • 操作權限
    • 添加權限:chmod 用戶或組+權限  資源文件或目錄
    • 刪除權限:chmod 用戶或組-權限  資源文件或目錄
    • 修改權限:chmod 用戶或組=權限  資源文件或目錄

crontab定時任務

命令 含義
crontab -l 查看當前用戶的定時任務列表
crontab -e 進入編輯當前用戶定時任務編輯器
crontab -r 刪除當前用戶的定時任務
* * * * * 命令 每分鐘執行一次命令

服務管理—自啓動服務管理

image-20200525161016493
  • 服務管理的命令: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域名訪問服務器通信原理
image-20200528161737276
  • 本地域名映射文件位置
  • 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
image-20200529105935993
# 將軟件上傳到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 &
image-20200529110825215

部署項目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
image-20200529113324846
  • 給用戶設置密碼並切換用戶
# 設置密碼
$ passwd mobaijun
# 切換用戶
$ su mobaijun
image-20200529113602453
  • 刪除用戶
# 切換回主目錄
$ su root 
# 刪除用戶組
$ userdel -r tom
image-20200529114209310
  • 修改登錄名
# 修改登錄名稱
$ 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源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章