# Linux常用指令 ## ssh登入 ```linux=\ ssh 帳號@主機連線資訊 ``` ## ssh Tunnel(跳板/通道) 如果要連結的主機防火牆不通, 可以先連到同網段可以連線的主機, 在上面設Tunnel: 連線資訊為欲連結過去主機的連線資訊 設一組自訂的listening port ![](https://i.imgur.com/StacyiN.jpg) 然後再另外建立ssh連線,連線資訊設127.0.0.1 port輸入剛自訂的listening port 即可連線 ![](https://i.imgur.com/liRmfHb.jpg) --- ## 解壓縮檔案及目錄例子: ### unzip 用 unzip 將 file.zip 壓縮檔內所有檔案及目錄解壓到當前目錄: ```=\ unzip file.zip ``` 假如只想解壓壓縮檔內其中一個檔案, 可以加上檔案名稱, 例如解壓 file.zip 內的 test.pdf 檔案: ```=\ unzip file.zip test.pdf ``` 將壓縮檔所有檔案解壓到指定目錄, 可以用 -d 參數設定, 以下假設解壓到 /home/phpini ```=\ unzip file.zip -d /home/phpini ``` 列出壓縮檔所有內容: ```=\ unzip -l file.zip ``` ### tar tar 指令的常用語法 常用參數 ```= -c 打包一個 tar 檔案 -x 解開一個 tar 檔案 -t 檢視 tar 檔案的內容 -z 使用 gzip 壓縮 -v 顯示建立 tar 檔案的過程 -P 使用絕對路徑 -f 指定 tar 檔案的檔案名稱。此參數的後面要接檔案名稱,因此要注意參數的順序 (通常是把 f 參數寫在最後一個,或者是與其它參數拆開使用) ``` **常用語法:** - 建立壓縮檔 ```=\ tar -czvf 檔案名稱.tgz 來源檔案 ``` >將 來源檔案 壓縮後,打包成一個名稱為 檔案名稱.tgz 的壓縮檔,來源檔案 可以是檔案或目錄。 來源檔案 也可以有很多個,以空白字元分隔: ```=\ tar -czvf 檔案名稱.tgz 來源檔案1 來源檔案2 ... 來源檔案n ``` - 檢視壓縮檔的內容 ```=\ tar -tzvf 檔案名稱.tgz ``` - 解開壓縮檔的檔案到目前的目錄 ```=\ tar -xzvf 檔案名稱.tgz ``` - 複製目錄 ```=\ tar -cvf - 來源目錄 | tar -xvf - ``` 將 來源目錄 下的所有檔案及子目錄複製到目前的目錄,這樣做的好處是可以保留原來的檔案屬性。 --- ## nohup 指令用法 如果想讓程式可以在離線或登出之後繼續執行,可以使用 nohup 這個指令來執行程式。 nohup 的用法很簡單,只要將要執行的程式放在 他的參數中即可,而通常我們會在尾端加上 & 把這個程式放在背景執行: ```=\ nohup /path/my_program & ``` nohup 在執行程式時,會將所有的輸出訊息導入 nohup.txt 這個文字檔,所以若要觀察程式的輸出,就要從這個檔案中查看: ```=\ cat nohup.txt ``` 也可以使用 tail 自動即時顯示最新的輸出: ```=\ tail -f nohup.txt ``` **指定輸出檔案** 我們也可以透過重新導向輸出,將程式的輸出導入自己指定的檔案中: ```=\ nohup /path/my_program &> my_log.txt & ``` **這樣就會將程式的輸出導入 my_log.txt 這個檔案中。** 我們也可以將正常的訊息與錯誤訊息分開: ```=\ nohup /path/my_program > my.out 2> my.err & ``` ### Linux shell中有三種輸入輸出 #### 0 表示鍵盤輸入 1表示標準輸出 2表示錯誤輸出 #### 將程式在背景執行,並且輸出到output.txt,把錯誤輸出訊息寫到標準訊息的位置,再和標準訊息一起寫到標準輸出文件 ```=\ nohup /path/my_program > output.txt 2>&1 & ``` --- ## ls 檢視檔案與目錄 指令:ls -參數 目錄或檔案 常用參數: -a:列出所有檔案,包含隱藏檔( 開頭為 . 的檔案) -h:可將檔案容易以易讀式呈現(EX:GB、 KB、…) -l:將資料以列表形式呈現,並且包含檔案細部資料(屬性、權限、時間…) -r:反向排序(原先是從a->z變成z->a) -R:將目錄下的子目錄檔案一起列出(白話:整個資料夾檔案列出) -S:用檔案大小排序 -t:用時間排序 ```=\ ls -al 會列出所有檔案的詳細資料和權限 ``` --- ## 檔案相關指令 chgrp: 改變檔案所屬群組 chown: 改變檔案擁有者 cp: 複製檔案 chmod: 改變檔案的權限 ls: 顯示目錄下之檔案 **chown -R user:group file** ```=\ chown -R niaap:niaap mule ``` 利用 chown 可以將檔案的擁有者加以改變。一般來說,這個指令只有是由系統管理者(root)所使用,一般使用者沒有許可權可以改變別人的檔案擁有者,也沒有許可權可以將自己的檔案擁有者改設為別人。只有系統管理者(root)才有這樣的許可權。 **-R(recursive) 以遞迴方式改變目錄以及所有子目錄的使用者識別碼,若是有符號連接檔則亦會被改變。** --- ## top 用法 top是效能分析工具,能夠即時顯示系統中各個行程的資源佔用狀況 ![](https://i.imgur.com/fBgonRW.jpg) 可以看到CPU和Memory占用程度 按下空白鍵可以更新最新狀況 --- ## 時間相關指令 印出今天日期 ```=\ echo "$(date)" ``` ![](https://i.imgur.com/xcslqRr.jpg) **年月日 時分秒 毫秒** **%Y%m%d_%H%M%S%N** 設定日期變數: ```=\ today=$(date +'%Y%m%d_%H%M%S%N') echo "$(date)" ``` ![](https://i.imgur.com/eqst8I4.jpg) --- **curl用法** ```\ -X/--request [GET|POST|PUT|DELETE|PATCH] 使用指定的 http method 來發出 http request -H/--header 設定 request 裡所攜帶的 header -i/--include 在 output 顯示 response 的 header -d/--data 攜帶 HTTP POST Data -v/--verbose 輸出更多的訊息方便 debug -u/--user 攜帶使用者帳號、密碼 -b/--cookie 攜帶 cookie(可以是參數或是檔案位置) -k/--insecure 允許連接到 SSL,而且不需使用憑證 ``` EX: ```\ curl -v -X OPTIONS https://網址 ``` Console: ```\ < HTTP/1.1 200 OK < Server: Apache-Coyote/1.1 < Strict-Transport-Security: max-age=0 < X-Frame-Options: DENY < X-Content-Type-Options: nosniff < X-XSS-Protection: 1; mode=block < Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS < Content-Length: 0 < Date: Fri, 26 Feb 2021 09:09:12 GMT ``` --- 在不同主機上面複製檔案 ``` scp /路徑/檔名 使用者@主機IP:/路徑/檔名 ``` --- 查看 哪些port 被程式佔用 ``` netstat -tulpn | grep LISTEN ``` 查看 8080 port被誰佔用 ``` netstat -tulpn | grep :8080 ``` ###### tags: `Linux`