Others
-
獲取公網IP
- curl ifconfig.me
-
磁盤空間
- df -hl 查看磁盤剩余空間
- df -h 查看每個根路徑的分區大小
- du -sh [目錄名] 返回該目錄的大小
- du -sm [文件夾] 返回該文件夾總M數
- du -h [目錄名] 查看指定文件夾下的所有文件大小(包含子文件夾)
-
make
- 通過外部編譯器的,比如linux中的gcc集來編譯源碼
- 獲取Makefile文件的命令觸發編譯
-
curl
- -X GET/POST
- -I 獲取head
- curl有cache
-
查看tcp/udp端口
- netstat -tunlp
- sudo su - && lsof -i:8080
-
查看系統啟動時間
- who -b
- date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
-
查看進程的啟動時間
- ps -p PID -o lstart
-
查看cpu
- sar -u 1 5 每1秒采集一次,共5次
- top
-
查看進程占用內存
- cat /proc/27930/status
- ps -e -o 'pid,args,rsz,uid,user,cmd' | sort -nrk3 | less
-
查看進程個數
- ps -ef | wc -l
-
查看進程個數限制
- ulimit -a
-
查看ip
- hostname -i
- ifconfig
-
查看環境變量
- export
-
查看目錄大小 :
- du -sh * | grep G | sort -nr
- du -s * | sort -nr
- du -h . 列出子目錄
- du -sh * 不列出子目錄
- df -h . 列出總量和使用情況
-
壓縮/解壓縮
- tar
- 解壓 tar -xzvf xx.tar.gz
- -c : 建立壓縮檔案
- -x:解壓
- -f : 文件名字,切記,這個參數是最后一個參數,后面只能文件名。
- -z:有gzip屬性的 gz
- -v:顯示所有過程
- unzip x.zip/x.jar . : 解壓縮
- tar
-
查看系統內核
- uname -a
-
獲取RedHat版本
- cat /etc/redhat-release
-
1>/dev/null 2>&1的含義
-
代表重定向到哪里,例如:echo "123" > /home/123.txt
- 1 表示stdout標准輸出,系統默認值是1,所以">/dev/null"等同於"1>/dev/null"
- 2 表示stderr標准錯誤
- & 表示等同於的意思,2>&1,表示2的輸出重定向等同於1
- /dev/null,或稱空設備,是一個特殊的設備文件,它丟棄一切寫入其中的數據(但報告寫入操作成功)
- 這句話等同於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
- echo abcde | awk '{print substr($0, 0, 2)}'
- ps -e -o 'cmd' | awk '{print substr($0,index($0,"'$APP_HOME'"),20)}'
- 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操作系統版本
- cat /etc/redhat-release
- Linux內核版本
- uname -a
使用鼠標
- yum install gpm
- service gpm start
基本操作
- 關機 : poweroff
- 重啟 : reboot
- 待機/掛起 : systemctl suspend
- 休眠 : systemctl hibernate
筆記本關閉蓋子不待機,只鎖屏
- vi /etc/systemd/logind.conf
- 配置詳解
- HandlePowerKey : 按下電源鍵后會觸發的行為
- HandleSuspendKey : 按下掛起鍵后會觸發的行為
- HandleHibernateKey : 按下休眠鍵后會觸發的行為
- HandleLidSwitch : 關閉筆記本蓋子后會觸發的行為
- 行為
- ignore、poweroff、reboot、suspend、hibernate、hybrid-sleep、lock 以及 halt, kexec
- HandleLidSwitch=lock : 關閉蓋子鎖屏
用戶與權限
User
- whoami :查看當前登錄用戶名
- su user:切換用戶,exit回到上個用戶
- cat /etc/passwd |cut -f 1 -d : : 查看用戶
- useradd name :添加用戶
- -g:指定用戶所屬的群組。值可以使組名也可以是GID。用戶組必須已經存在的,期默認值為100,即users。
- -N:取消建立以用戶名稱為名的群組。默然group是 users
- -Umr: 創建同名組,home目錄,系統用戶
- userdel user: 刪除用戶
- 刪除用戶會刪除默然同名組
- 刪除用戶后用戶文件屬於user id,比如1000,當創建下個用戶時user id會被占用,用戶文件會屬於新建的用戶
- -r : 同時刪除home和mail
- passwd user passwd :設置密碼
- usermod : 修改用戶
- -G :將用戶添加進組
- -g : 將用戶修改為屬於組
Group
- groups
- 查看當前登錄用戶組
- groups jude查看jude用戶所在的組
- groupadd/groupdel/groupmod
權限
- which yum
- 查看yum命令的路徑,然后可以看到所有者和權限
sudo : /etc/sudoers
-
命令
- sudo -l
- visudo
- man sudo
-
別名類型(Alias_Type):別名類型包括如下四種
- Host_Alias 定義主機別名;
- User_Alias 用戶別名,別名成員可以是用戶,用戶組(前面要加%號)
- Runas_Alias 用來定義runas別名,這個別名指定的是“目的用戶”,即sudo 允許切換至的用戶;
- Cmnd_Alias 定義命令別名;
-
別名規則定義格式如下:
- Alias_Type NAME = item1, item2
- Alias_Type NAME = ALL
-
授權規則
- 授權用戶 主機=命令動作
- jude ALL=(root)/bin/chmod,/bin/chmod
- 可以在任何可能出現的主機名的主機中,可以切換到root下執行 /bin/chown ,可以切換到任何用戶招執行/bin/chmod 命令
- jude ALL= NOPASSWD: /bin/chown,/bin/chmod
- 不需要輸入 用戶的密碼執行chown,但是執行chmod 要輸入自己的密碼
- !表示排除
- 授權規則3項都可以用別名代替
軟件安裝
wget
- 后台自動下載網絡資源
- 安裝 : yum install wget
- wget基本命令
- wget http://xxx.rpm
- wget -i xxx.txt : 批量下載
- wget -r -np -nd http://xxx/download
- --accept rmp : 只下載.rpm文件
- -c : 斷點續傳
- -P : 指定目錄
apt
- apt-get update : 更新apt
- apt-get install vim : 可以在docker容器中安裝vi
- sudo apt install yum : ubuntu安裝yum
YUM
- yum基本概念
- 基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝
- 可以自動處理依賴性關系,並且一次安裝所有依賴的軟體包
- yum提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令
- yum源
- 默認源配置目錄 : /etc/yum.repos.d/
- 配置里面所有enabled=1的(默認)源
- 命令
- yum repolist 查看當前可用源
- yum grouplist:顯示包組
- yum list {available|installed|updates} :顯示包列表
- yum list vsftpd* 顯示和vsftpd匹配的列表
- 除了支持遠程倉庫源,還支持本地掛載目錄和遠程掛載目錄
- yum-config-manager
- 安裝:yum install -y yum-utils
- yum-config-manager --add-repo xxx.repo
- yum-config-manager --enable docker-ce-edge : 相當於手動將enabled=0
- yum-config-manager --disable docker-ce-edge
- EPEL源
- 更豐富的,高質量的,更新的yum源
- yum search epel安裝
- rpm下載安裝
- 阿里巴巴開源鏡像站
- 其他yum源設置disabled=0
- Docker源
- yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- yum命令選項
- --nogpgcheck:禁止進行gpgcheck
- -y: 自動回答為“yes”
- -q:靜默模式
- --disablerepo=repoidglob:臨時禁用此處指定的repo
- --enablerepo=repoidglob:臨時啟用此處指定的repo
- --noplugins:禁用所有插件
- yum安裝卸載
- yum install/groupinstall package
- yum install package-version 安裝指定版本
- yum restall package:重做
- yum update package:更新包
- yum check-update
- yum remove package1 [package2]
- yum install/groupinstall package
- yum查詢
- yum search xxx :搜索帶有某個關鍵字的安裝包
- yum info 查看search到的程序包信息
- yum list package --showduplicates : 查看所有版本
- yum list installed : 查看所有已安裝的package
RPM
- rpm命令
- 安裝 rpm -ivh --prefix=$path XX.rpm
- 查看 rpm -qa XX
- 查看安裝的文件 rpm -ql XX
- 卸載 rpm -e --nodeps 察看得到的包名字
gcc編譯源碼
命令安裝路徑
- which less
網絡設置
CentOS連接WIFI
- 檢查無線網卡/網口
- dmesg | grep firmware
- iw dev : Interface后的是網口名,這里是wlp3s0
- 激活無線網口
- ip link set wlp3s0 up
- ip a: BROADCAST,MULTICAST,UP,LOWER_UP中的UP代表激活
- 安裝NetworkManager
- nmcli d status : 如果wlp3s0的status是unmanaged,說明沒有NetworkManager
- yum install NetworkManager-wifi
- systemctl restart NetworkManager
- wifi操作
- nmcli r wifi on/off : 打開/關閉wifi功能
- nmcli d wifi : 查找wifi
- nmcli c: 查看已經連接的wifi
- nmcli c up/down/delete Jude : 連接/關閉/刪除已設置過的wifi
- nmcli --ask d wifi connect Jude : 連接wifi Jude,輸入密碼
- error connection activation failed (7) secrets were required but not provided : 重啟電腦
Linux連接WIFI
- 檢查無線網絡連接情況
- iw wlp3s0 link
- 掃描可連接的wifi
- iw wlp3s0 scan | grep SSID
- 連接指定的SSID
- wpa_supplicant -B -i wlp3s0 -c <(wpa_passphrase "[SSID]" "[PIN]")
- 用dhcp 獲得 IP 分配
- dhclient [name]
- 測試是否成功地從路由器獲取了ip
- ip a show [name]
與windows組成局域網
- 需要linux與windows擁有相同的子網掩碼,相同的網關,同段位ip
- 可以通過連接到相同的貓
- 連接到相同的路由器
- 同處於一個wifi
- windows在Internate選項的網絡共享里,需要開啟網絡發現和文件共享,linux才可以ping通windows
putty連接SSH
- 打開centos的SSH服務
- 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