Linux基礎知識及開發工具安裝入門

前言:Linux中一切皆文件。很多大項目都是部署到Linux上的。root為Linux權限最大的用户。

一、Linux以及虛擬機的基本操作與配置

1、進入圖形界面

如果進入虛擬機黑屏,管理員模式進入cmd–>執行 netsh winsock reset 重啓計算機
startx (內存分佈大於628M會自動安裝可視化界面)

reboot重啓linux。

關機
shutdown -h now     立馬關機
shutdown -h 30      30分鐘後關機
shutdown -h 20:30   晚上八點半關機
一般關機之前需要執行sync進行同步數據

開機後會啓動很多程序,在windows中稱作服務service,在linux中就叫做守護進程(daemon)。

2、從圖形界面到命令行界面

ctrl + alt +F2(F1到F6)都行

虛擬機:root/root
3、網關為IPADDR=192.168.137.110 自己設置的(ifconfig/ip addr自己查看)

reboot重啓虛擬機
service network restart重啓網絡

vi network 開始編輯 i開始編輯 , ESC退出編輯,:q!不保存退出。 :wq!退出並保存 pwd查看當前路徑
1、cd /etc/sysconfig目錄下編輯network,進行網關的添加(修改)
2、cd /etc/sysconfig/network-scripts/ 路徑下對ifcfg-eth0配置網絡

service network restart重啓網絡
service iptables stop 關閉防火牆

CentOs 7

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啓動

firewall-cmd --state ##查看防火牆狀態,是否是running

4、設置靜態IP步驟

設置虛擬機本地網關內容:

我本地windows IP:192.168.1.6

1、取消DHCP動態設置:

image-20210811081044472

然後確認保存即可。

2、配置虛擬機的相關配置內容:

2.1首先是對network進行編輯:cd /etc/sysconfig/ --> **vi network ** 修改成圖二即可

image-20210811081224250

# Created by anaconda
NETWORKING=yes
GATEWAY=192.168.137.2
HOSTNAME=localhost.localadmin

2.2修改系統的網絡配置文件,路徑為:cd /etc/sysconfig/network-scripts/ --》 vi ifcfg-eth33

image-20210811081442336

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static             #!
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=3ba76435-a4b0-4b2e-839c-b64e8a70da6f
DEVICE=ens33
ONBOOT=yes
NETMASK=255.255.255.0       #!
IPADDR=192.168.137.110         #!
DNS1=192.168.137.2            #!
GATEWAY=192.168.137.2      #!
DNS2=114.114.114.114

保存成功後,直接重啓網路即可 service network restart

進行測試聯通性:linux——》ping www.baidu.com ping windows本機的ip

​ windows: ping linux的ip

注意:

  1. 如果linux無法聯通本機,可以嘗試修改本機共享設置

2.如果本機無法ping通linux, 可以嘗試在設置靜態ip地址時,和本機VM8的IPV4網段地址保持一致。

我設置的GATEWAY=192.168.137.2

image-20210811081845133

二、Linux入門基本指令

1、ls:查看文件夾下的文件; ls -a查看所有包括隱藏文件
2、cd cd …/ 回到上一級 cd / cd ~
3、pwd查看當前路徑 Table補全
4、mkdir 創建目錄 mkdir --help查看幫助 mkdir -p aaa/bb/ccc 創建多級目錄 rmdir刪除目錄(目錄不能有內容)

5、cat myfile.txt 查看文件內容 ; more myfile.txt; less myfile.txt 輸入/java可以向下查找包含java字符串的; tail -10 myfile.txt; 查看文件最後10行 ;

tail -f myfile.txt動態查看內容

nl a.txt;輸出內容包括行號。

mv a.txt newfilename.txt 可以進行改名操作

6、cp myfile.txt aaa/newname.txt 複製; mv myfile.txt ./bbb/newname.txt 剪切myfile.txt到bbb文件夾並重命名為 newname.txt
rm a.txt;刪除文件需要詢問; rm -rf aaa.txt直接刪除,不進行確認。危險。
7、tar -cvf a.tar ./ 打包當前目錄下的文件,解壓後的名字為a.tar ,存放在當前目錄下
tar -zcvf b.tar.gz ./ 打包後壓縮

tar -zxvf b.tar.gz ./ 解壓到當前目錄下
tar -zxvf b.tar.gz -C ./cc 解壓到 cc目錄下(帶.gz的壓縮包需要-zxvf; MySQL-5.6.22-1.el6.i686.rpm-bundle.tar直接 -xvf即可)

8、find / -name file* 從根目錄下查找file開頭的文件
grep Hello /usr/igeek/file.txt --color 查找file.txt文件夾下包含Hello的文字,按行展示並顏色加深

9、vi a.txt -->i–>xxxxxx—>:q!不保存退出 :wq! 保存退出 :/8080 搜索

10、ps -ef | grep java 搜索包含java的進程
11、kill -9 端口號pid 強制殺死進程

12、 | 管道 A|B A的輸出作為B的輸入
13、權限修改:chmod u=rwx,g=rx,o=rx a.txt -->修改a.txt權限:當前用户可讀可寫可執行,組內其他用户可讀可執行其他組用户可讀可執行。
-rw-r–r--. 1 root root 40 May 25 18:32 file.txt -》第一個:-表文件,d表文件夾;接下來三個一組:當前用户,同組其他用户,不同組用户

r:read 讀 4
w:write 寫 2
x:excute執行 1
*chmod u=rwx,g=rx,o=rx a.txt ==== chmod 755 a.txt*

14、
aaa、 yum install lrzsz 下載LINUX的lrzsz工具用於,本地機與linux交互傳輸文件。
rz 上傳
sz a.txt 下載

bbb、 alt+p打開sftp窗口,put上傳 ,get下載

三、Java項目部署軟件安裝

1、安裝jdk
1.1 首先java -version查看是否已經安裝了jdk,如果已安裝,版本不對需要卸載,重新安裝。
1.2 getconf LONG_BIT 查看linux操作系統的版本。
1.3 然後解壓,配置環境變量,最後重新啓動 source /etc/profile即可

JAVA_HOME=/usr/local/tools/jdk/jdk1.7.0_71
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

最後如果 java -version 出問題,(-bash: /usr/local/src/jdk1.8.0_191/bin/java: /lib/ld-linux.so.2: bad ELF interprete)

執行:sudo yum install glibc.i686 就可以解決了

2、安裝mysql
1.1 找到安裝包
1.2 搜索是否已經有mysql了 : rpm -qa | grep mysql
1.3 刪除 rpm -e --nodeps mysql-libs-5.1.71-1.el6.i686
1.4 解壓 tar -xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar
1.5 安裝服務端 rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm , 遇到的錯誤少依賴 先運行yum install -y perl-Module-Install.noarch 和 yum install libaio.so.1 /yum install libstdc++.i686
1.6 安裝成功後cat /root/.mysql_secret查看隨機生成的密碼: H4WczGo4FsQJ1mQT --》root
1.7 下載客户端 rpm -ivh MySQL-client-5.6.22-1.el6.i686.rpm ---->yum install libncurses.so.5
2.1 啓動mysql服務器 service mysql start service iptables stop關防火牆 *********************************************************
2.2 mysql -uroot -pYzoH6MbODHwoX484
2.3 設置密碼 set password=password(‘root’) ->show databases OK
2.4 開啓遠程訪問的權限,即可以在windows上的navicat上添加此linux上的mysql; grant all privileges on . to ‘root’ @’%’ identified by ‘root’;
flush privileges;
service iptables stop;關閉防火牆 即可

3、安裝tomcat
直接解壓即可tar -zxvf apache-tomcat-7.0.57.tar.gz
到bin目錄下,運行 sh startup.sh開啓服務,在瀏覽器中輸入http://192.168.198.128:8080/查看是否安裝成功

tail -f /usr/local/tools/tomcat/apache-tomcat-7.0.57/logs/catalina.out 可以動態查看tomcat的日誌。

4、redis安裝
1、安裝c語言環境:yum install gcc-c++
2、壓縮 tar -zxvf redis-3.0.7.tar.gz
3、編譯 cd redis-3.0.7 然後用 make編譯 ; 下載make PREFIX=/usr/local/tools/redis/ install

yum -y install gcc automake autoconf libtool make
make MALLOC=libc

 make distclean

make PREFIX=/usr/local/tools/redis/ install

4、cp redis.conf …/bin/ 把redis.conf 文件複製到bin目錄下
5、./redis-server redis.conf 啓動redis服務器
6、在新開一個會話 到bin目錄下, ./redis-cli 客户端訪問成功

5、MongoDb安裝

1、下載

官網下載地址:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.13.tgz

2、上傳到Linux的 /app/tools 目錄下

rz 上傳

3、解壓,並修改名稱便於後續操作

cd /app/tools
tar -zxvf mongodb-linux-x86_64-4.0.13.tgz
mv mongodb-linux-x86_64-4.0.13 mongodb

4、新建data目錄以及日誌logs目錄

cd /app/tools/mongodb
mkdir -p data/db
mkdir -p logs

image-20210810234609301

5、創建MongoDB運行時使用的配置文件:mongodb.conf

vi /app/tools/mongodb/bin/mongodb.conf

直接粘貼以下內容即可:
dbpath = /app/tools/mongodb/data/db #數據文件存放目錄
logpath = /app/tools/mongodb/logs/mongodb.log #日誌文件存放目錄
port = 27017 #端口
fork = true #以守護程序的方式啓用,即在後台運行
#auth=true #需要認證。如果放開註釋,就必須創建MongoDB的賬號,使用賬號與密碼才可遠程訪問,第一次安裝建議註釋
bind_ip=0.0.0.0 #允許遠程訪問:,或者直接註釋,127.0.0.1是隻允許本地訪問

6、配置環境變量

vi /etc/profile

添加以下內容:
#mongodb
export PATH=$PATH:/app/tools/mongodb/bin

7、啓動

cd /app/tools/mongodb/bin
./mongod  -f  mongodb.conf   # 啓動

6、實戰部署web項目到linux上:

1、要把項目中的絕對路徑都改成相對的。

2、確保linux中的mysql數據庫內容和本地相同。

3、控制jdk版本:pom文件,maven的setting.xml文件

4、啓動後看Catalina.out打印的日誌,看是否有報錯,有報錯一點一點處理。:lombok報錯,jupiter報錯,jdk版本報錯。

7、以debug方式啓動遠程服務器上的jar包,並在本地進行debug調試

1、準備一個spring boot項目demo,寫一個簡單方法返回sayHello

package com.ityj.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @RequestMapping(path = "/sayHello")
    @ResponseBody
    public String sayHello(){
        System.out.println("sayHello...");
        return "hello";
    }

}

2、配置好和linux匹配的jdk版本後進行打jar包並上傳到Linux服務器,確保環境正確並能正常打開項目。

3、在idea中配置remote配置調試端口

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-cmYq8QMs-1628641568463)(D:\我的文件\Typora\文檔\2、Linux學習總結技巧及方法.assets\image-20200809131245368.png)]

4、執行以下命令,啓動項目

java -Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999 -jar  /project/springboot01-helloword_auto-0.0.1-SNAPSHOT.jar 

啓動成功如下:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KzqCgFGI-1628641568464)(D:\我的文件\Typora\文檔\2、Linux學習總結技巧及方法.assets\image-20200809131623809.png)]

5、在idea中啓動debug

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XaLlPyzI-1628641568465)(D:\我的文件\Typora\文檔\2、Linux學習總結技巧及方法.assets\image-20200809131736744.png)]

此時在項目中打斷點即可進行調試。

四、後續補充內容

Linux的硬鏈接和軟鏈接:

1、硬鏈接B相當於原文件A 的一個備份,這樣一個文件就擁有了兩個路徑,如果一個被刪除,另一個還可以使用。

2、軟鏈接就類似於windows下的快捷方式,如果把原文件A刪除了,這個軟鏈接也會失效。

先創建一個普通文件f1.txt

ln f1.txt f2.txt默認創建的f2.txt就是硬鏈接

ln -s f1.txt f3.txt創建的f3.txt就是軟鏈接

把f1.txt刪除後,硬鏈接文件f2.txt正常顯示,f3.txt失效

Linux用户的管理

切換到root用户下:

**添加賬號:**useradd -m user001 ----》 在home目錄下就可以看到一個user001的文件夾

-G xxx分配用户屬組

**本質:**linux下一切皆文件,這裏的添加用户説白了就是往某個文件中寫入了用户的信息! cat /etc/passwd目錄下可以看到有關信息

**刪除賬號:**userdel -r user001

修改用户(權限等): usermod -d /home/2333 user001 修改後在配置文件passwd文件中可以看到

切換用户:su user001

image-20210811082408121

exit:推出當前權限用户,回到root用户

hostname 查看主機名; hostname yinj 修改主機名為yinj,臨時的。

passwd user001 可以在root用户下修改指定用户的密碼

鎖定賬户

比如某員工辭職了,需要凍結這個賬號,一旦凍結無法恢復。

passwd -l user001 #鎖定之後就無法登錄了

passwd -d user001 #清空密碼了,也就無法登錄

用户組管理:

屬主、屬組

每一個用户都有一個用户組,系統可以對一個用户組的所有用户進行集中管理(開發、測試、運維。。。)

添加用户組:groupadd dev cat /etc/group進行配置查看

可以用groupadd -g 520 dat 指定對應的id,如果不指定就是自增。gid不能重複,重複的話就會提示,無法創建.

不寫的話id遞增。

刪除用户組:groupdel dev

修改用户組:groupmod -g 666 -n newdev dev ;將原來的dev組id改為666,名字改為newdev

磁盤管理

df:(列出文件系統的整體磁盤使用量,相當於windows各個盤符使用情況) -h

du:(檢查當前目錄磁盤空間使用量)

進程管理

1、在linux中,每一個程序都是自己的一個進程,每個進程都有自己的id號

2、每一個進程都有一個父進程

3、進程的存在有兩種方式:前台,後台。

4、一般服務都是後台運行的,基本程序都是前台運行的。

命令 ps查看當前系統正在運行的程序

ps [-xxxxx]

​ -a:所有信息

​ -u:以用户的信息展示進程

​ -x:顯示後台運行進程的參數

ps: 查看進程
| : 管道符用於過濾;  A|B   A的結果作為條件再次進行過濾
grep: 查找文件中附合條件的字符串,

eg:
ps -ef | grep java   #查看java相關的進行(可以查看到父進程的目錄)

pstree

​ -p:顯示父id

​ -u:顯示用户組

🥇pstree -pu

image-20210811082528782

結束進程 : kill -9 pid

後台執行:nohup

🌹🌹🌹

有一個父進程

3、進程的存在有兩種方式:前台,後台。

4、一般服務都是後台運行的,基本程序都是前台運行的。

命令 ps查看當前系統正在運行的程序

ps [-xxxxx]

​ -a:所有信息

​ -u:以用户的信息展示進程

​ -x:顯示後台運行進程的參數

ps: 查看進程
| : 管道符用於過濾;  A|B   A的結果作為條件再次進行過濾
grep: 查找文件中附合條件的字符串,

eg:
ps -ef | grep java   #查看java相關的進行(可以查看到父進程的目錄)

pstree

​ -p:顯示父id

​ -u:顯示用户組

🥇pstree -pu

[外鏈圖片轉存中…(img-0Kl7OwEc-1628641568468)]

結束進程 : kill -9 pid

後台執行:nohup

🌹🌹🌹

netstat -tnlp 查看使用的端口