Linux經常使用命令

1、指令類

一、查看操做

1.)查看linux版本html

# 查看內核版本
$ uname -r  # -a 查看完整內核

# 查看系統信息
$ cat /etc/issue
$ cat /etc/redhat-release # 查看centOS系統版本

2.)查找文件node

$ ll -a # mac下:ls -al

# 當前查找指定文件/目錄,不遞歸
$ ll | grep "名稱"

# 按文件/目錄名遞歸查找
$ find -name "名稱"   # 可指定類型-type f: 文件,-type d: 目錄, mac下find後要添加路徑

# 找到後可執行指定命令,如:
$ find -type d -name "node-sass" -exec rm -rf {} +  # +: 查找完合併處理,否t則邊刪除邊遞歸會提示 No such file or directory

# 按關鍵字遞歸查找
$ grep -r "關鍵字" # 默認當前目錄下,結尾可指定目錄

# 樹形路徑,需安裝
$ yum/brew install tree
$ tree -L 2  # 數字表示層級
$ tree -L 2 -d   # 只顯示目錄

3.)查看文件/內容linux

# 指定文件查找內容
$ cat "fileName" | grep "keyword"

# 查看指定頭尾行
$ head "fileName"  # 默認10行,-n:查看前n行
$ tail "fileName"  # 默認10行,-n:查看尾n行
$ tail -f "fileName" # 動態顯示文件新增內容,如日誌

# echo輸出帶顏色(紅色=31,綠色=32,黃色=33,青色=36,白色=37),\e也能夠用\033代替
$ echo -e "\e[36m顯示內容\!...\e[0m"
# 遇到!號須要轉換,或把雙引號"改爲單引號'
$ echo -e "\e[36mSuccess\!\e[0m"
# 1加粗,5閃動文本
$ echo -e "\e[1;32;5m顯示內容...\e[0m"

4.)查看路徑及服務git

$ pwd # 查看當前路徑
$ whereis xxx  # 查看可執行的服務,沒有用which

$ env # 查看系統環境變量
$ echo $PATH  # 顯示系統路徑配置

5.)查看/結束進程web

# 查看佔用排名
$ top

# 查看指定進程
$ ps aux | grep xxx  # aux或-ef

# 經過進程目錄查看
$ ll /proc/pid # 查看cwd和exe相關信息

# 以優雅的方式結束進程
$ kill -l PID

# 強制結束進程
$ kill -9 PID

# 結束同一進程組內的全部進程
$ killall 進程名

6.)查看端口/服務docker

# 查看本機端口
$ netstat -an | grep 8000  # mac && linux
> netstat -an | findstr 8000  # windows

# 測試本地/遠程端口
$ telnet x.x.x.x 8000

# 測試web服務
$ curl -I localhost:8080   # 加參數-v,顯示一次通信過程

# 查看端口占用信息
$ lsof -i tcp:8000 (簡寫lsof -i:8000)

7.)遠程操做npm

# 遠程鏈接
$ ssh -p 22 user@x.x.x.x

# 遠程傳送文件
$ scp x.tar.gz user@x.x.x.x:存放目錄  # -o StrictHostKeyChecking=no 參數用在自動化腳本第一次鏈接忽略確認提示

# 遠程執行批量腳本
serv=web
ssh -Tq user@x.x.x.x << remotessh
echo $web   # 變量定義在腳本塊以外不須要轉義
remotessh

# 變量定義在腳本塊內須要\$轉義或在標識上作特殊處理
ssh -Tq user@x.x.x.x << 'EOF'
serv=web
echo $web
EOF
塊標識符remotessh也能夠用EOF(不輸出echo內容),塊中用到的變量推薦定義在腳本頭部,若定義在塊中變量$都須要轉義成\\$,或者在第一個remotessh或EOF上加引號

二、新建操做

1.)建立新文件json

$ touch a.js

2.)新建/追加ubuntu

echo命令'>'用來新建,'>>'用於追加內容
# 新建,並添加內容
$ echo 'hello world' > a.txt

# 新建,多行一次性添加
$ echo -e 'line1 \n line2' > a.txt  # \n分行

# 追加,多行一次性追加
$ echo -e 'line1 \n line2' >> a.txt

# 追加,多行屢次追加,'\'多行鏈接符
$ echo 'line1' >> a.txt \
  && echo 'line2' >> a.txt
cat能夠把一個文件內容追加到另外一個文件
$ cat file1 >> file2

3.)sed命令vim

sed -i能夠直接對文件進行查找、替換、刪除、添加而無需打開
# 全局替換,只替換第一個匹配去掉g
$ sed -i 's/原字符串/新字符串/g' a.txt

# Mac下-i後面添加''或'_bak'
$ sed -i '' 's/原字符串/新字符串/g' a.txt

# 刪除全部匹配到字符串的行
$ sed -i '/匹配字符串/d' a.txt

# 特定字符串的行後插入新行,若行前插入/a改成/i
$ sed -i '/特定字符串/a 新行字符串' a.txt

# 在文件尾添加多行內容
$ sed -i '$a line1 \n line2' a.txt

4.)vi編輯內容

$ vi "fileName"

# 非編輯模式下
查找:輸入/,n向後查,N向前查, dd刪除,uu恢復
複製:按yy,再p

# 不退出執行其它命令
:! cat xxx

# 查找替換
:%s /x/y /g # x替換成y, /g全局替換
當vi編輯模式下,移動方向鍵出字母或mac下delete鍵不能用,解決以下:
$ echo -e "set nocp \nset backspace=2" >> ~/.vimrc && source ~/.vimrc
若是服務器沒有安裝vi/vim,還能夠用nano編輯器
$ nano

5.)建立軟鏈

$ ln -s source target  # 要用絕對路徑建立,-f: 強制覆蓋

6.)複製文件/目錄

$ cp -r source dest  # -f: 強制覆蓋不提示

7.)移動/更名

$ mv 源 目標  # 當源和目標名稱相同時,即更名

8.)新建多層目錄

父級目錄不存在,則建立
$ mkdir -p /x/y/z

三、權限操做

1.)改變全部者

$ chown -R user:group file

2.)改變讀寫權限

a.) 數字表示法:權限由三位組成,分別表示User,Group,Other的權限,每位再由r=4,w=2,x=1疊加而成
$ chmod 777 file  # 所有有讀/寫/執行權限
$ chmod 755 file  # 除了擁有者,其它組和人只能讀/執行
$ chmod 750 file  # 擁有者組可讀/執行,其它人無
b.) 字母表示法:a:全部人,u:擁有者, g:擁有者組,o:其餘
$ chmod a+x file  # 全部人只能執行
$ chmod a=rwx file # 同777
$ chmod a-wx file # 去除寫/執行

3.)linux下git密鑰提示0644權限解決

當git clone出現0644錯誤,表示當前密鑰權限有安全隱患,修改:
$ chmod 0600 ~/.ssh/id_rsa

四、用戶管理

1.)新建用戶

$ useradd publish
$ groupadd publish # 添加組

2.)設置密碼

$ passwd publish

3.)刪除用戶

$ userdel publish
$ groupdel publish # 刪除組

4.)查看用戶/組

$ w  # 顯示當前在線用戶列表
$ id # 查看當前用戶信息
$ groups # 查看當前組內成員
$ groups publish # 查看publish組內成員
$ cat /etc/group   # 查看全部組
$ cat /etc/shadow和/etc/passwd  # 查看全部用戶名

5.)用戶添加sudo權限

當提示用戶xxx不在sudoers文件中,需切換到root權限或有sudo權限的用戶,再修改/etc/sudoers文件:
# 在root字段下面添加一行
xxx    ALL=(ALL:ALL) NOPASSWD:ALL
上面的NOPASSWD表示sudo完不用密碼,若須要密碼驗證只留下ALL便可

6.)用戶添加到組

若每次使用某個應用命令都須要sudo,比較麻煩,能夠經過如下命令添加當前用戶到其所屬組:
# 添加到組
$ gpasswd -a userName groupName
# or
$ sudo usermod -aG groupName userName

# 從組剔除
$ gpasswd -d userName groupName
要注意的是:須要用戶註銷後再登陸生效,添加結果可查看/etc/group

五、網絡請求

1.)測試網頁

顯示http response頭信息, 小寫-i還顯示網頁內容
$ curl -I www.baidu.com

2.)測試網頁返回值

下面是在腳本中測試網站是否正常的經常使用方法,還能夠獲取其它值,如:time_connect
$ curl -s -o /dev/null -w "%{http_code}\n" www.baidu.com

3.)發送post請求

$ curl -X POST http://localhost:3000/api/posts --data '{"user":"xxx"}' --header 'Content-Type:application/json'

六、安裝操做

1.)包管理器安裝

不一樣的系統自帶的包管理器和安裝方式也不一樣
# redhat/centos系列
$ sudo yum install xxx  

# ubuntu/debian系列
$ sudo apt-get install xxx  

# mac
$ sudo brew install xxx

# alpine
$ apk add xxx

2.)服務器上傳/下載

$ rz  # 上傳
$ sz ./filename  # 下載

3.)本地下載文件

$ wget -c https://npm.taobao.org/mirrors/node/v12.11.1/node-v12.11.1-linux-x64.tar.xz

# 下載文件
$ curl -O http://www.linux.com/hello.sh

# 下載跟蹤重定向文件
$ curl -OL https://npm.taobao.org/mirrors/node/v12.11.1/node-v12.11.1-linux-x64.tar.xz

# 保存網頁
$ curl http://www.linux.com >> linux.html
wget支持斷點續傳,用時若出現錯誤提示:wget: bad address,需修改dns配置:
$ sudo vi /etc/resolv.conf

# 修改內容爲下
nameserver 8.8.8.8 # google域名服務器

4.)壓縮/解壓

-v:顯示詳細信息,-m:
$ tar -cf x.tar ./x  # 壓縮
$ tar -xf x.tar.xz  # 解壓

# z:使用zip/gzip
$ tar -zcf x.tar.gz ./x  # 壓縮
$ tar -zxf x.tar.gz  # 解壓

# v:顯示詳細信息
$ tar -zxvf x.tar.gz

# m:當壓縮包與服務器時間不一致,以服務器爲準
$ tar -mzxvf x.tar.gz -C dirX # 解壓到目錄

# 查看壓縮內容
$ tar -tf x.tar
若解壓.xz文件時提示:tar (child): xz: Cannot exec: No such file or directory,需安裝:
$ apt-get install xz-utils

5.)centOS系統內核升級

$ uname -r # 查看內核
$ sudo yum clean all
$ sudo yum update
$ sudo reboot

七、系統操做

1.)查看磁盤空間

# 查看總的磁盤使用
$ cd /
$ df -h

# 查看目錄大小
$ du -sh

# 查看當前目錄各文件大小
$ du -sh *

# 顯示內存及swap
$ free

2.)系統/硬件時間

$ date # 查看系統時間
$ cal # 顯示本地日曆
$ uptime # 顯示運行時間

$ hwclock # 查看硬件時間
$ hwclock -w # 用系統時間同步硬件時間
$ ntpdate cn.pool.ntp.org # 更新系統時間

# 修改utc爲cst時間
$ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' > /etc/timezone

3.)其它

# 顯示當前用戶
$ id 或 whoami

# 顯示當前全部在線用戶
$ w

2、配置類

一、系統配置

1.)bash配置

$ vi ~/.bashrc
#-----------------------------------
# 別名
alias ll='ls -al'
alias cls='reset'

# 用戶path
PATH=$PATH:/usr/local/lib/node/bin
#-----------------------------------
$ source ~/.bashrc

2.)環境變量/PATH

若全部用戶都能使用,需修改全局配置:
$ sudo vi /etc/profile
#-----------------------------------
# 結尾添加以下
export PATH=/usr/sbin:$PATH
# 自定義變量
export MY=wang
#-----------------------------------
$ source /etc/profile

3.)設置隨機啓動

$ chkconfig --add /etc/init.d/xxx # 添加服務
$ service serviceName start
$ chkconfig serviceName on

二、網絡配置

1.)dns配置

修改dns配置文件/etc/resolv.conf,在docker容器中默認不可用,多數須要修改
nameserver 8.8.8.8
相關文章
相關標籤/搜索