1. 程式人生 > 其它 >學習Linux須知1.2之Linux命令的實戰

學習Linux須知1.2之Linux命令的實戰


(一)學習Linux 的準備工作

1、線上學習linux

2、連線遠端伺服器學習【下文的案例就是使用xshell連線遠端伺服器(省事方便最推薦)】

自己購買一臺雲伺服器,通過xshell 連線遠端伺服器,然後動手使用linux命令,例如使用linux部署一個專案。

購買雲伺服器、配置、安裝xshell、搭建環境的文章:https://www.cnblogs.com/shan333/p/16185323.html

  • 文章下文的掌握使用Linux命令部署專案,使用的就是方式2連線遠端伺服器學習

3、本地安裝虛擬機器,然後通過虛擬機器安裝Linux的發行版軟體(centos或ubuntu)




(二) Linux 學習建議

1、 建議:命令多動手敲,不熟悉命令不建議複製貼上的懶惰行為。

2、 動手敲一遍使用linux命令部署一個專案,到這裡,就具備了linux的基本命令的掌握,足夠學習docker等其他板塊啦,遇到不會的動手百度或翻看手冊。

3、linux手冊:
https://www.linuxcool.com/




(三) 使用Linux命令部署專案(方式2:使用xshell連線遠端伺服器)

● ssh 命令,連線遠端的伺服器

ssh ip地址

  • ip地址,是你購買的遠端伺服器的公網ip地址,舉例:ssh 121.5.151.236,若是使用虛擬機器執行centos,則ssh命令不用執行,這個ssh命令跳過。

● pwd 命令,檢視所在目錄的位置

pwd

● ifconfig 命令,檢視網路裝置資訊

ifconfig

◇ 看到有網絡卡在工作中即可up、running

[root@mysql ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.111  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::8c18:4c0c:35b:f89c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:bf:7a:4b  txqueuelen 1000  (Ethernet)
        RX packets 396  bytes 43132 (42.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 189  bytes 25028 (24.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        ......
        
# eth0:網絡卡名稱
# UP:表示網絡卡是開啟狀態
# BROADCAST:表示網絡卡支援廣播
# RUNNING:表示網絡卡的網線已經被接上,在工作中
# MULTICAST:表示網絡卡支援組播
# Link encap:網絡卡的介面型別,這裡是乙太網
# HWaddr:網絡卡的硬體地址,俗稱的MAC地址
# inet addr:IPv4地址,如果是IPv6會寫成inet6 addr
# Bcast:廣播地址
# Mask:子網掩碼
# MTU:網路最大傳輸單元
# Metric:到達閘道器的度量值,參考:http://m.chinabyte.com/network/191/12287691_gfh.shtml
# RX packets:網路從啟動到現在為止接收的資料包大小,單位是位元組,error 發生錯誤的資料包,dropped 被丟棄的資料包
# TX packets:網路從啟動到現在為止傳送的資料包大小,單位是位元組,error 發生錯誤的資料包,dropped 被丟棄的資料包
# collisions:發生碰撞的資料包,如果發生太多次,表明網路狀況不太好
# txqueuelen:傳輸資料的緩衝區的儲存長度
# RX bytes:總接收位元組總量
# TX bytes:總髮送位元組總量
# Memory:網絡卡硬體的記憶體地址      

● free 命令,檢查伺服器的記憶體(是否足夠)

free -h

引數詳解
-h  以合適的單位顯示記憶體使用情況,最大為三位數,自動計算對應的單位值

# total: 記憶體總數
# used: 已經使用記憶體數
# free: 完全空閒記憶體
# shared: 多個程序共享的記憶體
# buffers: 用於塊裝置資料緩衝,記錄檔案系統metadata(目錄,許可權,屬性等)
# cached: 用於檔案內容的緩衝
# available:真正剩餘的可被程式應用的記憶體數

● df 命令,檢視磁碟空間(是否足夠)

df -lh

# 引數詳解
# Used:已經使用的空間
# Avail:可以使用的空間
# Mounted on:掛載的目錄

● mkdir 命令,新建目錄

mkdir code

● cd 命令,切換目錄

cd code/

● git 命令,拉取專案程式碼

git clone https://gitee.com/yushanstar/code-shan-mp-server.git

問題:-bash: git: command not found

  • 解決:給遠端Linux系統(遠端伺服器)安裝上git,命令:yum install -y git
  • 然後繼續執行拉取專案程式碼的命令,拉取完成之後,使用ls命令檢視
  • cd code-shan-mp-server/cd code-shan-mp-server 進入專案目錄 【cd 目錄的/,可以加或不加】

● ls 命令,檢視所有檔案

ls

● du 命令,檢視目錄佔用空間

du -sh *

● cat 命令,檢視文字檔案

cat README.md

# 看到時一個java的springboot框架的專案---需要安裝jdk

● 檢視系統版本

cat /etc/os-release
# 是rehat發行版的命令                  # 看到時centos版本,那直接使用系統自帶的軟體管理器 yum
cat /etc/redhat-release
# 是debain發行版的命令 
cat /etc/debian_version

● yum 命令,系統自帶的軟體管理器 yum

yum install java-1.8.0-openjdk* -y 使用yum 安裝jdk

● java -version 命令,檢視java環境(jdk 版本)

java -version

● which 命令,檢視檔案位置

which java

# Linux which命令用於查詢檔案。
# which指令會在環境變數$PATH設定的目錄裡查詢符合條件的檔案。

● wget 命令,下載安裝包

wget https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz 下載maven

問題:ERROR: cannot verify dlcdn.apache.org's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’:
Issued certificate has expired.
To connect to dlcdn.apache.org insecurely, use `--no-check-certificate'.

  • 解決:報錯證書問題,則安裝證書: yum install -y ca-certificates
  • 然後執行執行wget命令下載maven的安裝包
  • ls 檢視所有檔案

● tar 命令,解壓

tar -zxvf apache-maven-3.8.5-bin.tar.gz

./apache-maven-3.8.5/bin/mvn 解壓後得到maven的二進位制可執行檔案

● help 命令,幫助手冊,檢視相關的命令

./apache-maven-3.8.5/bin/mvn --help

./apache-maven-3.8.5/bin/mvn install 構建maven專案

問題:[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

  • 解決:

  • 更改maven映象為阿里雲映象:

    cd apache-maven-3.8.5/conf/
    vim settings.xml
    
    # 更改maven映象為阿里雲映象,找到<mirrors>,將原來的映象<mirror> 註釋掉,然後新增阿里雲映象
    
            <mirror>
                <id>nexus-aliyun</id>
                <mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
                <name>Nexus aliyun</name>
                <url>http://maven.aliyun.com/nexus/content/groups/public</url>
            </mirror>
            <mirror>
                <id>alimaven</id>
                <mirrorOf>central</mirrorOf>
                <name>aliyun maven</name>
                <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
            </mirror>
    
  • 然後退出回到目錄code-shan-mp-server下【命令是 cd ../../】,重新執行一下maven的構建命令

● find 命令,用來在指定目錄下查詢檔案

find -name '*.jar*' 查詢jar包位置

# find 將開始在當前目錄(用"."表示)中查詢任何副檔名為"java"的檔案:
find . -name  "*.java"

● cp 命令,複製

cp ./target/code-shan-mp-server-1.0.0.jar ./ 將jar包複製到外面

● mv 命令,修改檔名稱

mv code-shan-mp-server-1.0.0.jar code-shan.jar

ls 檢視改名後情況

mv(英文全拼:move file)命令用來為檔案或目錄改名、或將檔案或目錄移入其它位置。

(1) 只是重新命名:目標目錄與原目錄一致,目標檔案的名稱發生改變

  • 都在當前目錄下(目錄相同),例如上面的 mv code-shan-mp-server-1.0.0.jar code-shan.jar
  • 目錄相同:例如:mv /home/dir1/a.txt /home/dir1/b.txt

(2)只是移動:目標目錄與原目錄不一致,沒有指定新檔名

  • 例如 redis-5.0.7.tar.gz 在 /home/shan 目錄下: mv redis-5.0.7.tar.gz /opt

(3)重名+移動:目標目錄與原目錄不一致,目標檔案的名稱發生改變

  • 例如:mv /home/dir1/dir2/a.txt /home/dir1/b.txt

● java -jar 命令,執行jar包

java -jar code-shan.jar 啟動java的maven專案

# 瀏覽器檢視專案執行情況
地址:伺服器的ip:8080/hello
# 看到 hello,shan,則部署執行專案成功啦

不過此時咱的介面卡住了----使用後臺啟動專案

● nohup 命令,後臺啟動程式

nohup java -jar code-shan.jar &

問題:命令:nohup java -jar code-nav.jar & 沒能讓專案跑起來【nohup java -jar 命令啟動jar包,專案仍然會莫名其妙掛掉的解決方法】

出現:nohup: ignoring input and appending output to ‘nohup.out’

  • 不是問題,這是一個提示資訊,提示證明執行成功,同時把程式執行的輸出資訊放到當前目錄的 nohup.out 檔案中去。
# 檢視程式是否跑起來

● jobs 命令,檢視當前終端放入後臺的任務

jobs

● ps 命令,檢視所有程序,這裡是為了檢視是否有(java)程序

ps -ef

● ps -ef|grep 命令,篩選出目標程序

ps -ef|grep 'java'

# 從檔案內容查詢匹配指定字串的行:
 grep "被查詢的字串" 檔名

ps命令 -ef引數

-e 系統所有程序

-f 全格式

-a 顯示終端上的所有程序

● netstat 命令,檢視端口占用

netstat -ntlp

● curl 命令,訪問相應的 Web 伺服器

curl localhost:8080/dog

# 看到hello,shan 則執行部署成功
[root@iZwz9535z41cmgcpkm7i81Z code-shan-mp-server]# curl localhost:8080/hello
hello,shan[root@iZwz9535z41cmgcpkm7i81Z code-shan-mp-server]#

● clear 命令,清除一下

clear

● history 命令,檢視歷史

history


☺ 其他命令,不會就到手冊或者百度查詢



如果本文對你有幫助的話記得給一樂點個贊哦,感謝!