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
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