Linux命令速查手冊


Others

  • 獲取公網IP

    1. curl ifconfig.me
  • 磁盤空間

    1. df -hl 查看磁盤剩余空間
    2. df -h 查看每個根路徑的分區大小
    3. du -sh [目錄名] 返回該目錄的大小
    4. du -sm [文件夾] 返回該文件夾總M數
    5. du -h [目錄名] 查看指定文件夾下的所有文件大小(包含子文件夾)
  • make

    1. 通過外部編譯器的,比如linux中的gcc集來編譯源碼
    2. 獲取Makefile文件的命令觸發編譯
  • curl

    1. -X GET/POST
    2. -I 獲取head
    3. curl有cache
  • 查看tcp/udp端口

    1. netstat -tunlp
    2. sudo su - && lsof -i:8080
  • 查看系統啟動時間

    1. who -b
    2. date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
  • 查看進程的啟動時間

    1. ps -p PID -o lstart
  • 查看cpu

    1. sar -u 1 5 每1秒采集一次,共5次
    2. top
  • 查看進程占用內存

    1. cat /proc/27930/status
    2. ps -e -o 'pid,args,rsz,uid,user,cmd' | sort -nrk3 | less
  • 查看進程個數

    1. ps -ef | wc -l
  • 查看進程個數限制

    1. ulimit -a
  • 查看ip

    1. hostname -i
    2. ifconfig
  • 查看環境變量

    1. export
  • 查看目錄大小 :

    1. du -sh * | grep G | sort -nr
    2. du -s * | sort -nr
    3. du -h . 列出子目錄
    4. du -sh * 不列出子目錄
    5. df -h . 列出總量和使用情況
  • 壓縮/解壓縮

    1. tar
      1. 解壓 tar -xzvf xx.tar.gz
      2. -c : 建立壓縮檔案
      3. -x:解壓
      4. -f : 文件名字,切記,這個參數是最后一個參數,后面只能文件名。
      5. -z:有gzip屬性的 gz
      6. -v:顯示所有過程
    2. unzip x.zip/x.jar . : 解壓縮
  • 查看系統內核

    1. uname -a
  • 獲取RedHat版本

    1. cat /etc/redhat-release
  • 1>/dev/null 2>&1的含義

  1. 代表重定向到哪里,例如:echo "123" > /home/123.txt

  2. 1 表示stdout標准輸出,系統默認值是1,所以">/dev/null"等同於"1>/dev/null"
  3. 2 表示stderr標准錯誤
  4. & 表示等同於的意思,2>&1,表示2的輸出重定向等同於1
  5. /dev/null,或稱空設備,是一個特殊的設備文件,它丟棄一切寫入其中的數據(但報告寫入操作成功)
  6. 這句話等同於1>/dev/null 2>/dev/null 含義是將標准輸入和輸出丟棄
  • 遍歷目錄下文件

      for file in *
      do  
          if [ -d "$file" ]  
          then   
            echo "a forder"  
          else if [ -f "$file" ]
          then
            echo "a file"
          fi  
      done
    
  • 獲取當前shell的路徑: basepath=$(cd dirname $0; pwd)

  • 字符串替換: sed -i "s/aaa/bbb/g" test.txt

  • find .|xargs grep -ri "IBM" : 查找字符在哪個文件

  • alias aName='xxx'

  • grep -A/-B 10 'XXX' XX.log: 帶上grep語句后/前 10條

  • less -N: 顯示行號

  • history 10: 察看前10條歷史命令

  • chmod -R 777 folder: 賦權限

  • free -m -o | grep 'Mem' | awk '{print $4}': 查看服務器空間

  • crontab -e: 進入CRON JOB VI模式

  • ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle | sort -nrk5: 查看進程

  • ps -ef | awk '{print $2}' | xargs kill -9: kill進程

  • :set ff=unix: vi 模式下將文件格式轉換成unix,可以解決windows下shell腳本和Liunx格式不一樣問題

  • awk

    1. echo abcde | awk '{print substr($0, 0, 2)}'
    2. ps -e -o 'cmd' | awk '{print substr($0,index($0,"'$APP_HOME'"),20)}'
    3. CURRENT_DATE=date ps -e -o 'rsz,cmd' | awk '{print $1, "'"$CURRENT_DATE"'"}'

      awk引用外部變量

  • nohup sh process_monitor.sh > process_monitor.out & : 后台持續啟動腳本

  • find /xx/xx/ -name 'xx*.log': 查找文件

  • find /xx/xx/ -name 'xx*.log' | grep -v 'xxx' | xargs ls -l: find 和 ls 和用

  • wc *.out: 顯示二進制文件的行數

Centos系統

CentOS 7系統安裝

  • 官網下載DVD版本的iso鏡像文件
  • 官網下載UltraIOS,將iso文件寫入U盤,制作成為U盤啟動盤
  • 通過BIOS設置從U盤載入,重啟
  • 教程: https://www.augsky/599.html

系統版本

  • Centos操作系統版本
    1. cat /etc/redhat-release
  • Linux內核版本
    1. uname -a

使用鼠標

  • yum install gpm
  • service gpm start

基本操作

  • 關機 : poweroff
  • 重啟 : reboot
  • 待機/掛起 : systemctl suspend
  • 休眠 : systemctl hibernate

筆記本關閉蓋子不待機,只鎖屏

  • vi /etc/systemd/logind.conf
  • 配置詳解
    1. HandlePowerKey : 按下電源鍵后會觸發的行為
    2. HandleSuspendKey : 按下掛起鍵后會觸發的行為
    3. HandleHibernateKey : 按下休眠鍵后會觸發的行為
    4. HandleLidSwitch : 關閉筆記本蓋子后會觸發的行為
  • 行為
    1. ignore、poweroff、reboot、suspend、hibernate、hybrid-sleep、lock 以及 halt, kexec
    2. HandleLidSwitch=lock : 關閉蓋子鎖屏

用戶與權限

User

  • whoami :查看當前登錄用戶名
  • su user:切換用戶,exit回到上個用戶
  • cat /etc/passwd |cut -f 1 -d : : 查看用戶
  • useradd name :添加用戶
    1. -g:指定用戶所屬的群組。值可以使組名也可以是GID。用戶組必須已經存在的,期默認值為100,即users。
    2. -N:取消建立以用戶名稱為名的群組。默然group是 users
    3. -Umr: 創建同名組,home目錄,系統用戶
  • userdel user: 刪除用戶
    1. 刪除用戶會刪除默然同名組
    2. 刪除用戶后用戶文件屬於user id,比如1000,當創建下個用戶時user id會被占用,用戶文件會屬於新建的用戶
    3. -r : 同時刪除home和mail
  • passwd user passwd :設置密碼
  • usermod : 修改用戶
    1. -G :將用戶添加進組
    2. -g : 將用戶修改為屬於組

Group

  • groups
    1. 查看當前登錄用戶組
    2. groups jude查看jude用戶所在的組
  • groupadd/groupdel/groupmod

權限

  • which yum
    1. 查看yum命令的路徑,然后可以看到所有者和權限

sudo : /etc/sudoers

  • 命令

    1. sudo -l
    2. visudo
    3. man sudo
  • 別名類型(Alias_Type):別名類型包括如下四種

    1. Host_Alias 定義主機別名;
    2. User_Alias 用戶別名,別名成員可以是用戶,用戶組(前面要加%號)
    3. Runas_Alias 用來定義runas別名,這個別名指定的是“目的用戶”,即sudo 允許切換至的用戶;
    4. Cmnd_Alias 定義命令別名;
  • 別名規則定義格式如下:

    1. Alias_Type NAME = item1, item2
    2. Alias_Type NAME = ALL
  • 授權規則

    1. 授權用戶 主機=命令動作
    2. jude ALL=(root)/bin/chmod,/bin/chmod
      1. 可以在任何可能出現的主機名的主機中,可以切換到root下執行 /bin/chown ,可以切換到任何用戶招執行/bin/chmod 命令
    3. jude ALL= NOPASSWD: /bin/chown,/bin/chmod
      1. 不需要輸入 用戶的密碼執行chown,但是執行chmod 要輸入自己的密碼
    4. !表示排除
    5. 授權規則3項都可以用別名代替

軟件安裝

wget

  • 后台自動下載網絡資源
  • 安裝 : yum install wget
  • wget基本命令
    1. wget http://xxx.rpm
    2. wget -i xxx.txt : 批量下載
    3. wget -r -np -nd http://xxx/download
    4. --accept rmp : 只下載.rpm文件
    5. -c : 斷點續傳
    6. -P : 指定目錄

apt

  • apt-get update : 更新apt
  • apt-get install vim : 可以在docker容器中安裝vi
  • sudo apt install yum : ubuntu安裝yum

YUM

  • yum基本概念
    1. 基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝
    2. 可以自動處理依賴性關系,並且一次安裝所有依賴的軟體包
    3. yum提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令
  • yum源
    1. 默認源配置目錄 : /etc/yum.repos.d/
    2. 配置里面所有enabled=1的(默認)源
    3. 命令
      1. yum repolist 查看當前可用源
      2. yum grouplist:顯示包組
      3. yum list {available|installed|updates} :顯示包列表
      4. yum list vsftpd* 顯示和vsftpd匹配的列表
    4. 除了支持遠程倉庫源,還支持本地掛載目錄和遠程掛載目錄
    5. yum-config-manager
      1. 安裝:yum install -y yum-utils
      2. yum-config-manager --add-repo xxx.repo
      3. yum-config-manager --enable docker-ce-edge : 相當於手動將enabled=0
      4. yum-config-manager --disable docker-ce-edge
  • EPEL源
    1. 更豐富的,高質量的,更新的yum源
    2. yum search epel安裝
    3. rpm下載安裝
      1. 阿里巴巴開源鏡像站
      2. 其他yum源設置disabled=0
  • Docker源
    1. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • yum命令選項
    1. --nogpgcheck:禁止進行gpgcheck
    2. -y: 自動回答為“yes”
    3. -q:靜默模式
    4. --disablerepo=repoidglob:臨時禁用此處指定的repo
    5. --enablerepo=repoidglob:臨時啟用此處指定的repo
    6. --noplugins:禁用所有插件
  • yum安裝卸載
    1. yum install/groupinstall package
      1. yum install package-version 安裝指定版本
    2. yum restall package:重做
    3. yum update package:更新包
    4. yum check-update
    5. yum remove package1 [package2]
  • yum查詢
    1. yum search xxx :搜索帶有某個關鍵字的安裝包
    2. yum info 查看search到的程序包信息
    3. yum list package --showduplicates : 查看所有版本
    4. yum list installed : 查看所有已安裝的package

RPM

  • rpm命令
    1. 安裝 rpm -ivh --prefix=$path XX.rpm
    2. 查看 rpm -qa XX
    3. 查看安裝的文件 rpm -ql XX
    4. 卸載 rpm -e --nodeps 察看得到的包名字

gcc編譯源碼

命令安裝路徑

  • which less

網絡設置

CentOS連接WIFI

  • 檢查無線網卡/網口
    1. dmesg | grep firmware
    2. iw dev : Interface后的是網口名,這里是wlp3s0
  • 激活無線網口
    1. ip link set wlp3s0 up
    2. ip a: BROADCAST,MULTICAST,UP,LOWER_UP中的UP代表激活
  • 安裝NetworkManager
    1. nmcli d status : 如果wlp3s0的status是unmanaged,說明沒有NetworkManager
    2. yum install NetworkManager-wifi
    3. systemctl restart NetworkManager
  • wifi操作
    1. nmcli r wifi on/off : 打開/關閉wifi功能
    2. nmcli d wifi : 查找wifi
    3. nmcli c: 查看已經連接的wifi
    4. nmcli c up/down/delete Jude : 連接/關閉/刪除已設置過的wifi
    5. nmcli --ask d wifi connect Jude : 連接wifi Jude,輸入密碼
      1. error connection activation failed (7) secrets were required but not provided : 重啟電腦

Linux連接WIFI

  • 檢查無線網絡連接情況
    1. iw wlp3s0 link
  • 掃描可連接的wifi
    1. iw wlp3s0 scan | grep SSID
  • 連接指定的SSID
    1. wpa_supplicant -B -i wlp3s0 -c <(wpa_passphrase "[SSID]" "[PIN]")
  • 用dhcp 獲得 IP 分配
    1. dhclient [name]
  • 測試是否成功地從路由器獲取了ip
    1. ip a show [name]

與windows組成局域網

  • 需要linux與windows擁有相同的子網掩碼,相同的網關,同段位ip
    1. 可以通過連接到相同的貓
    2. 連接到相同的路由器
    3. 同處於一個wifi
  • windows在Internate選項的網絡共享里,需要開啟網絡發現和文件共享,linux才可以ping通windows

putty連接SSH

  • 打開centos的SSH服務
    1. service sshd start
  • 下載putty連接局域網ip

alias for gradle and git

  • alias

      unalias -a
    
      alias build="disableCB && gradle ktlintformat clean build && enableCB"
      alias branch="git branch -vv && git cherry -v"
      alias push="~/jude/alias_job.sh push_branch push"
      alias fast_commit_push="~/jude/alias_job.sh fast_commit_push"
      alias merge_develop="git merge origin/develop"
      alias develop_branch="git checkout develop && git pull && branch"
      alias show_all_branch="~/jude/alias_job.sh show_all_branch"
    
      alias bbset_branch="~/jude/alias_job.sh set_current_branch"
      alias bbcreate_all_branch="~/jude/alias_job.sh create_all_branch"
      alias bbpush_branch="~/jude/alias_job.sh push_branch push_new"
    
      alias ccbuild="ccenable && gradle ktlintformat clean build"
      alias ccenable="gradle enableCompositeBuild"
      alias ccdisable="gradle disableCompositeBuild"
      alias bbnew_branch="git pull && git checkout origin/develop -b `cat ~/jude/current_branch` && git branch --unset-upstream && branch"
      alias bbdelete_branch="~/jude/alias_job.sh delete_current_branch"
      alias bbresert_hard="~/jude/alias_job.sh hard_reset"
    
      alias aaa="cat ~/.bash_profile"
      alias eee="vi ~/.bash_profile"
      alias rrr="source ~/.bash_profile"
      alias la="ls -tral"
      alias ll="ls -trl"
      alias killjava="ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9"
    
  • alias job

              #!/bin/bash
    
      set_current_branch() {
      	echo $1 > ~/jude/current_branch
      	cat ~/jude/current_branch
      }
    
      hard_reset() {
      	read -r -p "Git Hard Reset your local change? [Y/n] : " input
    
      	case $input in
      		[Y])
      			git reset --hard
      			;;
      		*)
      			echo "do nothing"
      			exit 1
      			;;
      	esac
      }
    
      delete_current_branch() {
      	read -r -p "Delete current branch `cat ~/jude/current_branch`? [Y/n] : " input
    
      	case $input in
      		[Y])
      			git checkout develop && git branch -d `cat ~/jude/current_branch` && git branch -vv
      			;;
      		*)
      			echo "do nothing"
      			exit 1
      			;;
      	esac
      }
    
      fast_commit_push() {
      	git branch -vv && git status
    
      	read -r -p "Commit and push branch `cat ~/jude/current_branch`? [Y/n] : " input
    
      	case $input in
      		[Y])
      			branch=`cat ~/jude/current_branch`
      			git commit -m $branch -a
      			push_branch push
      			;;
      		*)
      			echo "do nothing"
      			exit 1
      			;;
      	esac
      }
    
      push_branch() {
      	case $1 in
      		"push_new")
      			git push --set-upstream origin `cat ~/jude/current_branch` && git branch -vv && git cherry -v
      			;;
      		"push")
      			git pull && git push && git branch -vv && git cherry -v
      			;;
      		*)
      			echo "do nothing"
      			exit 1
      			;;
      	esac
      	current=`pwd`
      	branch=`cat ~/jude/current_branch`
      	case $current in
      		"/Users/jude.sheng/IdeaProjects/paymentacceptance-adaptor")
      			open https://github.com/airwallex/paymentacceptance-adaptor/compare/develop...$branch?expand=1
      			;;
      		"/Users/jude.sheng/IdeaProjects/paymentacceptance-executor")
      			open https://github.com/airwallex/paymentacceptance-executor/compare/develop...$branch?expand=1
      			;;
      		"/Users/jude.sheng/IdeaProjects/paymentacceptance-core")
      			open https://github.com/airwallex/paymentacceptance-core/compare/develop...$branch?expand=1
      			;;
      		"/Users/jude.sheng/IdeaProjects/paymentacceptance-gateway")
      			open https://github.com/airwallex/paymentacceptance-gateway/compare/develop...$branch?expand=1
      			;;
      		"/Users/jude.sheng/IdeaProjects/paymentacceptance-tokenservice")
      			open https://github.com/airwallex/paymentacceptance-tokenservice/compare/develop...$branch?expand=1
      			;;
      		"/Users/jude.sheng/IdeaProjects/paymentacceptance-common")
      			open https://github.com/airwallex/paymentacceptance-common/compare/develop...$branch?expand=1
      			;;
      		*)
      			echo "do nothing"
      			exit 1
      			;;
      	esac
      }
    
      create_all_branch() {
      	current=`pwd`
      	cd /Users/jude.sheng/IdeaProjects
      	cd paymentacceptance-adaptor
      	pwd && git pull && git checkout origin/develop -b `cat ~/jude/current_branch` && git branch --unset-upstream
      	cd ../paymentacceptance-common
      	pwd && git pull && git checkout origin/develop -b `cat ~/jude/current_branch` && git branch --unset-upstream
      	cd ../paymentacceptance-executor
      	pwd && git pull && git checkout origin/develop -b `cat ~/jude/current_branch` && git branch --unset-upstream
      	cd ../paymentacceptance-core
      	pwd && git pull && git checkout origin/develop -b `cat ~/jude/current_branch` && git branch --unset-upstream
      	cd ../paymentacceptance-gateway
      	pwd && git pull && git checkout origin/develop -b `cat ~/jude/current_branch` && git branch --unset-upstream
      	cd ../paymentacceptance-tokenservice
      	pwd && git pull && git checkout origin/develop -b `cat ~/jude/current_branch` && git branch --unset-upstream
    
      	cd /Users/jude.sheng/IdeaProjects
      	cd paymentacceptance-adaptor
      	git branch -vv
      	cd ../paymentacceptance-common
      	git branch -vv
      	cd ../paymentacceptance-executor
      	git branch -vv
      	cd ../paymentacceptance-core
      	git branch -vv
      	cd ../paymentacceptance-gateway
      	git branch -vv
      	cd ../paymentacceptance-tokenservice
      	git branch -vv
    
      	cd $current
      }
    
      show_all_branch() {
      	current=`pwd`
      	cd /Users/jude.sheng/IdeaProjects
      	cd paymentacceptance-adaptor
      	echo "=============================" && pwd && git status && echo "----------------------" && cherry -v
      	cd ../paymentacceptance-common
      	echo "=============================" && pwd && git status && echo "----------------------" && cherry -v
      	cd ../paymentacceptance-executor
      	echo "=============================" && pwd && git status && echo "----------------------" && cherry -v
      	cd ../paymentacceptance-core
      	echo "=============================" && pwd && git status && echo "----------------------" && cherry -v
      	cd ../paymentacceptance-gateway
      	echo "=============================" && pwd && git status && echo "----------------------" && cherry -v
      	cd ../paymentacceptance-tokenservice
      	echo "=============================" && pwd && git status && echo "----------------------" && cherry -v
      	cd $current
      }
    
      case $1 in
      	"set_current_branch")
      		set_current_branch $2
      		;;
      	"hard_reset")
      		hard_reset
      		;;
      	"delete_current_branch")
      		delete_current_branch
      		;;
      	"create_all_branch")
      		create_all_branch
      		;;
      	"push_branch")
      		push_branch $2
      		;;
      	"fast_commit_push")
      		fast_commit_push
      		;;
      	"show_all_branch")
      		show_all_branch
      		;;
      	*)
      		echo "do nothing"
      		exit 1
      		;;
      esac


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM