Linux使用

Linux使用

來自專欄萌新的學習日記

Liunx使用

命令管道連接 |

  • 命令管道符合為|,可以將兩個命令進行連接,連接後第一個命令的輸出結果作為第二個命令的輸入信息
  • 比如 ls /ect | more -10 分屏顯示etc文件夾下的10行數據

Linux文件系統結構

  • / : 根目錄
  • /home: 主文件夾,登錄用戶的主文件夾
  • /etc :操作系統配置文件的保存位置
  • /usr : 用於添加的程序文件,用戶的很多應用程序和文件都放在這個目錄下,類似於windows下的program files目錄。
  • root : 超級用戶的目錄

改變當前工作目錄命令

  • cd 目標目錄
  • cd 沒有參數的時候直接返回用戶主目錄
  • cd /etc : 使用絕對路徑切換當前的工作目錄
  • cd .. : 返回上一級
  • cd 目錄 :使用相對路徑其切換,前提是當前的目錄中有這個目錄

顯示當前的工作目錄

  • pwd

文件或文件夾的操作(mkdir/touch)

  • mkdir 文件夾名稱 創建文件夾

    • mkdir demo/file 在demo文件夾下新建一個文件加file,如果這個demo文件夾不存在,那麼將會報錯
  • mkdir -p 文件夾名稱 遞歸創建文件夾

    • mkdir -p demo/file :如果demo文件夾不存在,那麼會自動創建出來
  • touch 新文件名 : 創建文件 ,比如touch file.txt
  • touch 已經存在的文件名或者文件夾名 : 修改文件或者文件夾的創建時間,但是並不是重新創建一個,裡面的內容的不會清空

改名或者移動(mv)

  • mv 參數1 參數2
  • mv 已存在的文件夾/文件 新文件夾/文件 :修改名稱 比如 :mv file.txt a.txt
  • mv 已存在的文件夾/文件 目標文件夾 : 將文件或者文件夾移動到目標文件夾中

    • mv file.txt /tmp/dmeo 將當前文件夾的file.txt移動到/tmp/demo文件夾中
    • mv demo/file.txt . 將 demo文件夾下的file.txt移動到當前文件夾
    • mv file.txt ../ 將當前文件file.txt 移動到上一級目錄

複製文件或者文件夾(cp)

  • cp 存在的文件/文件夾 新文件/新文件夾 進行改名複製

    • cp a.txt /tmp/file.txt 將當前文件夾中的a.txt文件複製到/tmp文件夾中,改名為file.txt
  • cp 存在文件 已存在的文件夾 將文件複製一份到已存在文件夾中,並且文件名和源文件的名一樣

    • cp a.txt /tmp 將當前文件a.txt複製到tmp文件夾中,並且名稱還是a.txt
  • cp -i ... 提示是否覆蓋的信息
  • cp -f 強制覆蓋,不給出提示
  • cp -r 存在的文件夾 目標文件夾 複製文件夾 比如:cp -r file /tmp/demo複製當前文件夾file和其中的所有內容到/tmp/demo`文件夾下

刪除文件或者文件夾(rm)

  • rm 文件名 刪除文件

    • rm a.txt 刪除當前文件夾中的a.txt文件
    • rm /tmp/demo/a.txt 刪除/tmp/demo文件夾下的a.txt文件
  • rm -r 存在的文件夾 : 刪除文件夾及文件夾下的全部內容

    • rm -r demo 刪除文件夾demo
  • rm -f 強制刪除文件,不提示
  • rm -rf :強制刪除文件夾

遠程登錄伺服器SSH

  • 客戶端輸入:ssh 用戶名@伺服器IP/域名

    • ssh soft01@192.168.7.36
  • 第一輸入需要確認證書: 選擇yes
  • 輸入password

SFTP傳輸文件

  1. sftp 用戶名@主機/IP
  2. 確認證書 :yes
  3. 輸入密碼 : 盲敲
  4. 進入ftp,其中的提示符號變成>

常用命令

  • ls 顯示當前遠程伺服器的目錄內容
  • lls : 顯示本地目錄內容
  • pwd : 顯示當前遠程伺服器目錄的路徑
  • lpwd :顯示本地目錄的路徑
  • get 遠程文件 : 獲取遠程文件,只能是壓縮文件,比如.tar.gz

    • get demo.txt 獲取遠程文件的demo.txt
  • put 本地文件 :上傳本地文件到遠程伺服器 ,只能是壓縮文件,比如.tar.gz

    • push abc.txt : 上傳本地當前文件abc.txt到遠程伺服器
  • exit : 退出

windows 操作Linux

  • pyttty 開源軟體

Linux打包命令

  • tar -czvf 包文件.tar.gz 文件夾1 文件夾2 ....tar czvf demo.tar.gz demo/ 打包當前的demo文件夾

    • -c : create創建包 ,建議使用後綴 .tar
    • -z : 表示打包後錄用gzip演算法進行壓縮,後綴需要寫.gz
    • -v : 顯示打包的過程,哪些文件被打包了
    • -f : 指定打包以後包的文件名 ,放在最後,如:czvf

解壓縮包的命令

後綴為 tar.gz

  • tar -xzvf 包名.tar.gz

    • -x : 釋放,將包進行釋放操作
    • -z : 先使用gzip解壓縮,一般對應的後綴.gz
    • -v : 表示顯示解包的過程
    • -f : 指定包的文件名

後綴為 zip

  • 如果沒有unzip命令,可以命令行安裝即可 yum -y install unzip
  • unzip 文件

下載命令wget

  • 安裝該命令:yum -y install wget
  • wget 下載地址 : 這個命令將會從互聯網自動下載所需要的資源

購買雲伺服器

  • 地域: 國內配置域名的時候必須備案,國外伺服器無需備案
  • 配置: x86伺服器,1G內存 1CPU
  • 鏡像: 公共鏡像,Centos 7.4
  • 網路: 1M
  • 安全組(防火牆):開放埠 80,443,22

    • 注意: 沒有開放8080,需要以後配置
  • 設置密碼
  • 設置伺服器名

PATH變數的作用

  • 操作系統可執行命令的搜索路徑,操作系統在執行密令的時候,會在PATH變數一系列路徑中逐一查找命令程序,如果找到就執行這個程序,否則將報出命令沒有找到的錯誤
  • echo $PATH : 回顯PATH的值
  • export PATH=... : 在終端直接輸入的PATH,只會在當前的終端不關閉的情況才會生效,如果這個終端窗口關閉了,那麼就會失效

    • export PATH=/usr/local/java/jdk1.8/bin:$PATH,這個命令是將java的jdk的路徑添加到當前PATH路徑的前面,不過這個只是臨時的,當終端退出,那麼就會失效
  • 如果想要這個PATH永久起作用,那麼需要在/etc/profile文件中添加,這個文件會在開機啟動的時候就解析載入
  • 如果我們使用的安裝包安裝的話,那麼默認的啟動命令是只能在當前安裝包的bin中才能執行啟動命令,如果我們想要在任何位置打開終端都能啟動這個軟體,那麼我們可以將其配置在PATH中,我們只需要在/etc/profile文件中添加:export PATH=文件位置:$PATH

使用 VIM 編輯文本文件

  • 基於命令行的全屏幕可視化編輯器

安裝 vim

  • yum -y install vim :安裝vim

常用命令

  • 在命令狀態下

    • yy : 複製當前行到剪切板

      • P:複製剪切板的內容到當前行之前
      • p: 複製剪切板的內容到當前行之後
    • nyy : 複製當前行和後面的n行數據到剪切板

      • 5yy
    • dd :刪除當前行(其實是剪切),可以使用P或者p再次複製回去
    • ndd : 刪除當前行的後面n行數據,實際上是剪切

      • 10dd
    • ?正則 : 向前查找

      • ?System
    • /正則 :向後查找
    • n 查找下一個

      • 先使用?正則或者正則查找之後,然後按n將會查找下一個結果
    • u :撤銷,可撤銷多次

配置JDK環境

  • 下載jdk
  • 解壓縮在/usr/local/java

    • tar -xzvf ......
  • 配置環境變數

    • 先複製一個/etc/profile ,避免錯改造成系統崩潰

      • cp /etc/profile profile_1
    • vi /etc/profile
    • 在末尾輸入

export JAVA_HOME=/usr/local/java/jdk1.8.0_172 ## jdk的路徑export JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

  • 執行source /etc/profile
  • 在終端輸入java -version判斷是否配置成功
  • 重啟機器

安裝配置Tomcat

第一種yum

  • yum -y install tomcat
  • 安裝以後的安裝位置在/usr/share/tomcat/,這個是默認安裝位置

啟動和關閉

  • systemctl start tomcat.service : 啟動
  • systemctl stop tomcat.service : 關閉
  • systemctl restart tomcat.service : 重啟
  • systemctl enable tomcat.service : 設置自動啟動
  • systemctl disable tomcat.service : 關閉自動啟動

第二種使用原廠的包安裝

  • 下載tomcattomcat.apache.org
  • 或者使用wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.88/bin/apache-tomcat-7.0.88.zip

    • 如果沒有wget,那麼使用yum -y install wget即可
  • 解壓:unzip 文件名
  • 將解壓之後的文件夾移動到/usr/local下即可:mv apache-tomcat-7.0.88 /usr/local/
  • 設置啟動腳本的執行許可權:

    • cd /usr/local/apache-tomcat-7.0.88/bin :進入到bin目錄
    • 添加執行許可權: chmod +x *.sh :為.sh腳本添加執行許可權
  • 啟動和關閉tomcat

    • bin文件夾下 輸入: ./startup.sh即可啟動
    • 輸入ps -A | grep java : 檢查是否啟動
    • 開放防火牆 : firewall-cmd --permanent --add-port=8080/tcp
    • 如果顯示防火牆顯示not runing,那麼使用service firewalld start開啟防火牆
    • bin文件夾下輸入 :./shutdown.sh 即可關閉
    • 最後在瀏覽器輸入http://ip:8080即可訪問

雲伺服器需要開啟8080埠

  • 自己的伺服器 ---- > 管理 ---> 本例安全組 ----> 配置規則 ---- > 添加安全組規則 ----> 添加埠範圍 8080/8080

安裝MySQL

  • MariadbMysql是一樣的,不過mariadb現在是開源免費的。mysql以後的版本都是收費的
  • yum -y install mariadb mariadb-server : 使用此命令安裝即可

    • 安裝了兩個組件,客戶端mariadb
  • 啟動: systemctl start mariadb.service
  • 關閉:systemctl stop mariadb.service
  • 重新啟動: systemctl restart mariadb.service
  • 開機啟動: systemctl enable mariadb.service
  • 取消開機啟動:systemctl disable mariadb.service

連接mariadb

  • mysql -u root: 初始安裝沒有密碼

設置mysql密碼

  • set password=password("密碼");
  • flush privileges;
  • 設置完成之後使用mysql -u root -p輸入密碼進入即可

mysql 解決中文亂碼

  • show variables like %char%; 查看自己的編碼是否是utf8
  • /etc/my.cnf添加如下代碼即可

[mysqld]character-set-server=utf8 [client]default-character-set=utf8 [mysql]default-character-set=utf8

資料庫遷移【Import】

  • 意思就是將本地的資料庫遷移到遠程伺服器中。不需要在遠程伺服器中重新創建和插入數據了

步驟

  • 導出(備份)資料庫

    • mysqldump -u root -p密碼 資料庫名字 > 文件名.sql
    • 比如 :mysqldump -u root -proot tedu_store>tedu_store.sql;,導出的tedu_store.sql就會在當前目錄中,這個命令不需要登錄mysql即可完成
  • tedu_store.sql上傳到遠程伺服器中

    • sftp 用戶名@IP: 登錄遠程伺服器的上傳下載功能
    • put tedu_store.sql: 上傳
  • 在遠程伺服器中創建資料庫

    • create database tedu_store;
  • 導入數據:

    • use tedu_store
    • source tedu_store.sql 即可,這裡需要指定路徑

部署項目在遠程伺服器上

步驟

  • 導出一個war包,比如Tedu_store.war

    • 項目右擊 --- > Export ---- > WAR File ----> 選擇位置 -------> Finish
  • 導出的Tedu_store.war上傳到遠程伺服器
  • 放在tomcat中的webapps包下

    • 我們將Tedu_store.war放在webapps下,那麼會自動生成一個Tedu_store,這個就是我們的項目
  • 修改資料庫的連接參數

    • 第一種:在本地電腦打包的時候就修改成遠程伺服器的資料庫的連接參數
    • 第二種: 在遠程伺服器中修改

      • 進入到項目的WEB-INF/classes下,其中有一個db.properties文件,其中就是配置資料庫的信息,我們可以使用vi編輯器修改
  • 重啟tomcat,我們使用zip安裝方式安裝的,因此需要在Tomcatbin下執行:

    • ./shutdown.sh 關閉
    • ./start.sh啟動
  • 接下來就是訪問即可

    • http://ip:8080/Tedu_store/.....

查看錯誤信息

  • 進入到Tomcat的安裝目錄的logs目錄,下面有一個catalina.out,這裡面存儲的就是項目的運行信息,我們可以在其中查找項目的錯誤信息

輸出重定向

  • 將一個命令的輸出目標從標準控制台(標出輸出)重新定向到其他設備(一般是一個文件)
  • >: 生成一個新文件
  • >>:不生成一個新文件,在文件後面追加
  • 比如cat file.txt>demo.txt, : 將顯示的file.txt文件內容重定向到deom.txt文件中,如果`demo.txt不存在,那麼會被新建,如果存在,那麼將會覆蓋其中的內容。
  • cat file.txt>>demo.txt : 將顯示的file.txt文件的內容在demo.txt後面追加,如果demo.txt不存在就新建,如果存在,那麼在其內容的後面追加

作用

  • 記錄命令的執行日誌

    • tar -czvf file.tar.gz file>file.log : 將這個執行語句的日誌記錄到file.log
  • 快速生成文本文件

    • echo "hello World" >hello.txt

文件許可權 chmod

  • -rw-rw-r : 文件擁有者、群組、其他

為所有用戶設置許可權

  • x :執行許可權,如果一個文件夾沒有執行許可權,那麼我們使用cd 文件夾名是不允許進入查看內容的

    • chmod +x file : 為file文件夾添加執行許可權
    • chmod -x file: 為file文件夾刪除執行許可權
  • r : 可讀許可權

    • chmod -r file.txt : 刪除file.txt文件的可讀許可權
    • chmod +r file.txt : 添加可讀許可權
  • w: 可寫許可權

    • chmod -w file.txt
    • chmod +w file.txt

為不同的用戶設置許可權

  • chmod u+x,g-x,o-x file : 表示文件擁有者添加執行許可權,群組用戶刪除執行許可權,其他用戶刪除執行許可權
  • chmod g+x file : 為群組添加執行許可權

使用數字代表許可權

  • r : 4
  • w : 2
  • x : 1
  • rwx : 4+2+1=7
  • rw- : 4+2 =6
  • --x : 1
  • r-x : 4+1=5
  • chmod 664 file.txt : 為文件擁有這設置rw-許可權,為群組設置rw-許可權,為其他用戶設置r--許可權

可以執行的文件

  1. 文件是可執行的二進位程序或者文件是可執行的腳本程序
  2. 文件具有可以執行的許可權

可執行的腳本

  • 可執行的腳本,也是稱為shell腳本,是一個文本文件,文件的每一行都是可以執行的shell命令,如果有執行許可權,這個文件就可以執行,執行時候批量執行文件中的每個命令,經常用於自動化運維

推薦閱讀:

物理地址和虛擬地址的分布
glibc源碼分析(一)系統調用
在centos和redhat上安裝docker
一步一步學ROP之linux_x86篇
Linux安全問題

TAG:Linux | 操作系統 | Linux開發 |