文章目錄
- 常用指令收集
- vmware 虛擬機聯網設置
- ubuntu 常見問題設置
- apt 相關指令:
- gcc 編譯相關指令
- sqlite3
- VSCode 快捷鍵:
- 收索引擎技巧(google)
- Intelidea
- shell--Linx
- vim
- git
- DOS:
- maven
- docker
- kubectl 指令
- nginx配置
- redis-client
- MySQL
- linux 下 java進程排錯
- MongoDB
- CentOS JDK安裝配置
- Ubuntu JDK安裝
- conda 指定渠道安裝
- docker 安裝mysql并掛載
常用指令收集
vmware 虛擬機聯網設置
- 橋接模式,達到和主機對等角色接入交換機,相當于一臺物理主機,方便互ping,開發人員使用。
- 網絡設置:ipv4 手動設置:
ip 192.168.2.228 網關:192.168.2.1 netmask: 255.255.0.0
也可以是使用命令行模式修改:
ifconfig ens33 192.168.2.228 netmask 255.255.0.0 up - 修改dns配置: vim /etc/resolv.conf
nameserver 192.168.2.228
nameserver 8.8.8.8
options ens33
注意不要用百度DNS域名:114.114.114.114 訪問不通。
ubuntu 常見問題設置
重啟網卡:
ifconfig ens33 down/up;
或 ifdown ens33,ifup ens33;
配置網卡:
vi /etc/network/interface
新增:
auto ens33
iface ens33 inet dhcp
ldd tmser # 查看tmser的包依賴;
apt 相關指令:
- apt-cache madison maven # 查看 apt 倉庫的maven可選版本;
- apt-get install libperl-dev=5.22.1-9ubuntu0.9 # 安裝指定版本 5.22.1-9ubuntu0.9 軟件包;
- apt list --installed|grep libperl # 查看已安裝軟件中 liboerl 信息
- apt list --upgradable # 查看準備升級的軟件包
- apt update # 更新包索引或包列表
- apt upgrade # 升級所有過時的軟件包
gcc 編譯相關指令
gcc-c -fPIC line.c -o line.o # 編譯line.c
gcc-c -fPIC size.c -o size.o # 編譯size.c
gcc -shared -o libwc.so.1 *.o # 打包合并 *.o 文件
In -s libwc.so.1 libwc.so # so.1 創建連接文件 libwc.so
gcc main.c -o my app -L. -TwC # 使用動態庫
ubuntu 頭文件目錄: /usr/include/ /usr/local/include/
ubuntu 動態庫目錄:/usr/local/lib/
sqlite3
sqlite3 “xxx/xxx/tmser.db” #打開數據庫
.schema user_info
.table # 查看所有表
.header on #開啟表頭
.mode colum #開啟列對齊
sqlite 釋放磁盤空間:連上sqlite3庫后執行 vacuum
VSCode 快捷鍵:
光標在同行的首尾:Home/End;
同一個文件 光標回到上N個位置: Ctrl+U;
代碼上下行移動: Alt + 上/下鍵;
光標不同文件移動:Alt + 左/右鍵;
添加注釋: Ctrl +/
查看引用:Alt + F12
折疊代碼:Ctrl + K 不松開 Ctrl 然后再按 0(零)
打開代碼:Ctrl + K 不松開 Ctrl 然后再按 J
自動化格式代碼:Ctrl + K 不松開 Ctrl 然后再按 f
快速查找 Ctrl + P
收索引擎技巧(google)
- 加雙信號內容 則完全匹配 “android 網絡定位”
- 搜索結果排除每個關鍵詞 android 網絡定位 -GPS
- 搜索結果排除每個網站內容 android 網絡定位 -site:zhihu.com
- 用*進行模糊匹配 android*網絡定位
- 只想在某個網站上搜索 android教程 site:pan.baidu.com
- 只想搜索文件類型為pdf android教程 filetype:pdf
Intelidea
- Ctrl + h 查看接口的所有實現
- Ctrl + I 實現方法/ Ctrl + O 覆蓋方法
- 折疊代碼 類上右鍵 Floding --> Collapse All
- 類的繼承/實現關系圖 Ctrl+Alt+U/u
- 打開類快捷鍵:雙擊 Shift 或者 Shift+Ctrl+n 或者 Ctrl+n
- 查看方法引用:Alt + F7 或者 Ctrl +Alt+H
- 查看類Structure:Alt + 7
- ctrl+alt 加 左箭頭 或者 右箭頭 上一步/下一步
- ctrl+alt+B 查看 接口實現了哪些類;
shell–Linx
- cat /etc/passwd 可以查看所有用戶的列表
只看指定字段:cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" ‘{ print $1"|“$3”|"$4 }’|more - cat /etc/group 查看用戶組
vim
1、光標快速切換到行尾行首 ctrl+a 行首 ctrl+e 行尾
2、刪除至行尾 ctrl+k
4、Esc b 左移一個單詞[back] Esc f 右移一個單詞[forward]
5. 下一個:n,上一個:N
- 格式化所有代碼:gg -->V–>G–>=
- :set number
- :5,10d # 刪除指定行; 光標移動某一行dd,刪除該行;
- Ctrl+v 選中 大寫i 添加注釋 按ESC退出 # 批量注釋
- ctrl+v 選中 d # 批量消除注釋
- 命令模式下:
拷貝當前行: yy
拷貝n行, 將光標移動到將要復制的首行處 nyy
粘貼: 將光標移動到將要粘貼的行處,按“p”進行粘貼
撤銷上一步的操作: u
恢復上一步被撤銷的操作: Ctrl+r
1、排查大文件(夾)指令
du -sh /* --exclude=“proc” # 排除 proc 文件夾
2、打印指定列: 內容 | awk {‘print $1,$2’}
打印包含 abc 內容排除e的行: 內容|grep ‘abc’ |grep -v ‘e’
查看Linux系統信息
1)系統版本
more /etc/redhat-release ; more /etc/version ;
2)查看內核版本
uname -a ; #顯示詳細的內核信息
cat /proc/version;
3) 查看時區
date -R
4) CPU
more /proc/cpuinfo | grep “model name” ;
- 查看某個進程的線程: ps -T -p 或top -H -p
根據端口號查看Linux進程信息
- lsof -i :6883
mosquitto 1590 mosquitto 7u IPv4 47915 0t0 TCP *:6883 (LISTEN)
mosquitto 1590 mosquitto 8u IPv6 47916 0t0 TCP *:6883 (LISTEN)
mosquitto 1590 mosquitto 10u IPv4 11444870 0t0 TCP mark-
- netstat -nlp|grep 6883
tcp 0 0 0.0.0.0:6883 0.0.0.0:* LISTEN 1590/mosquitto
tcp6 0 0 :::6883 :::* LISTEN 1590/mosquitto
find 查找
find ./ -name ‘*.txt’
chown 授權
chown -R sonar:sonar sonar-scanner-4.2.0
chmod 755 文件
Linux 系統版本查詢命令
cat /etc/redhat-release (Linux查看版本當前操作系統發行版信息)
cat /proc/cpuinfo (Linux查看cpu相關信息,包括型號、主頻、內核信息等)
RedHat防火墻操作
查看防火墻狀態。systemctl status firewalld
臨時關閉防火墻命令。重啟電腦后,防火墻自動起來。systemctl stop firewalld
永久關閉防火墻命令。重啟后,防火墻不會自動啟動。systemctl disable firewalld
打開防火墻命令。systemctl enable firewalld
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
-A 參數就看成是添加一條 INPUT 的規則
-p 指定是什么協議,常用的tcp 協議,當然也有udp 例如53端口的DNS
到時要配置DNS用到53端口,就會發現使用udp協議的而
–dport 就是目標端口 當數據從外部進入服務器為目標端口
反之 數據從服務器出去 則為數據源端口 使用
–sport-j 就是指定是 ACCEPT 接收 或者 DROP 不接收
iptables -nL # 查看所有端口映射
查看添加詳情 iptables -L -n
保存配置到磁盤:
service iptables save
禁用 客戶端訪問
禁止 192.168.1.2 xp1 訪問
iptables -A INPUT -p tcp -s 192.168.1.2 -j DROP
-A 就是添加新的規則, 怎樣的規則呢? 由于訪問網站使用tcp的,就用 -p tcp , 如果是 udp 就寫udp,這里就用tcp了, -s就是 來源的意思,ip來源于 192.168.1.2 ,-j 怎么做 拒絕它 這里應該是 DROP
git
拉取遠程分支dev并切換到該分支:
git checkout -b dev(本地分支名稱) origin/dev(遠程分支名稱) ;
git checkout -b dev0215 # 新建本地分支并切換到該分支
git branch -m oldname newname # 重命名本地分支
git push origin --delete dev0215 # 刪除遠程分支
git push origin dev0215:dev0215 # 推送新建的分支到遠程
首次推送本地分支到遠程分支:git push --progress “origin” qm_dev0.1:qm_dev0.1 ;
git config --list # 查看全局配置
git config user.name xxxx # 設置全局用戶名
git config user.email xxxx@qq.com # 設置全局用戶郵箱
強制還原到指定版本:
git reset --hard 276119b5a25550af6b9f6967f042be11bf57e776 # 記得提前備份指定分支之后的所有hard碼;
git上傳項目到碼云
- 本地新建目錄 abc
- 點擊文件夾,右鍵 git bash here
- git remote add origin + 碼云項目的https地址
- git pull origin master 命令,將碼云上的倉庫pull到本地文件夾
- 將要上傳的文件,添加到剛剛創建的文件夾
- 使用git add . (. 表示所有的)或者 git add + 文件名 // 將文件保存到緩存區
- 使用git commit -m ‘新添加的文件內容描述’ //添加文件描述
- 使用git push origin master ,將本地倉庫推送到遠程倉庫
解決:‘fatal: unable to access ‘https://github.com/yanshaohui01/Vue2.0_CNode.git/’: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054’
git config --global --unset http.proxy
git config --global --unset https.proxy
git清理緩存
- git rm -r --cached .
- git add .
- git commit -m “update .gitingore”
git 更新本地倉庫地址
git remote -v # 查看遠程地址
git remote rm origin # 移除遠程地址
git remote add origin http://gitlab.digigd.com/market-server/digigd-market-gateway.git # 更新遠程倉庫地址
git push origin master:master # 第一次提交
git 查看遠程分支
git branch -r ## 查看遠程分支
git fetch origin yfb:yfb ##同步遠程分支 yfb 到本地
git查看遠程分支提交歷史
git log --graph --all
DOS:
查看所有端口占用:
netstat -ano
查看 18888端口占用情況:
netstat -aon|findstr “18888”
殺死制定進程24822:
taskkill /f /pid 24844
查看任務列表:
tasklist [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH] | find “xxx”
其中參數含義如下:(略)
某個文件夾刪除不了?查看被哪個進程占用
dos 窗口執行:wmic process |findstr 文件夾名稱
查看某個exe進程的執行目錄:
wmic process where processid=pid get *
maven
- 使用maven.test.skip,不但跳過單元測試的運行,也跳過測試代碼的編譯 mvn package -Dmaven.test.skip=true
- 跳過單元測試,但是會繼續編譯 mvn package -DskipTests
- 假如只想編譯ModuleB及其依賴的模塊, 那么在編譯的時候: mvn clean install -pl ModuleB -am
- mvn clean install -Dmaven.test.skip=true -pl log4j-core -am
- maven 打包: mvn package
- maven 只打jar包: mvn jar:jar
- 編譯源代碼: mvn compile
- 清理maven項目:mvn clean
- 安裝項目到本地倉庫:mvn install
- 發布項目到遠程倉庫:mvn:deploy
- 顯示maven依賴樹和依賴列表:mvn dependency:tree mvn dependency:list
- 安裝本地jar到本地倉庫: mvn install:install-file -DgroupId=packageName -DartifactId=projectName -Dversion=version -Dpackaging=jar路徑 -Dfile=path
首先切換到maven父項目目錄 , 單獨構建market-authe , 同時會構建 market-authe 依賴的其他模塊:
mvn install -pl market-authe -am
參數說明:
-pl, --projects構建指定的模塊,模塊間用逗號分隔;適合無依賴的項目
-am, --also-make (常用)同時構建所列模塊的依賴模塊,比如A依賴B,B依賴C,構建B,同時構建C
-amd, --also-make-dependents同時構建依賴于所列模塊的模塊,比如A依賴B,B依賴C,構建B,同時構建A
export MAVEN_HOME=/root/softtools/apache-maven-3.9.4 export PATH=$PATH:$MAVEN_HOME/bin
198 chmod 755 ./maven.sh -R
200 source /etc/profile.d/maven.sh
202 mvn -version
docker
查看防火墻: service iptables status
重啟docker服務:
修改配置后重新加載: systemctl daemon-reload
重啟docker服務: systemctl restart docker
查看狀況: systemctl status docker
docker ps -a
docker images
docker logs -f --tail 500 containerID
docker info
docker stop anht-order
docker stop anht-user && docker rm anht-user
docker exec -it anht-user /bin/bash # 進入docker環境
vi /usr/lib/systemd/system/docker.service # 查看docker配置
docker run --net 創建容器時可以指定一下四種網絡模式一種:
- host模式,使用–net=host指定。
- container模式,使用–net=container:NAME_or_ID指定。
- none模式,使用–net=none指定。
- bridge模式,使用–net=bridge指定,默認設置。
啟動anht-order鏡像
docker run --privileged -itd --name anht-order --restart=always -p 5705:5705 -v /opt/project/order:/opt/project -m 512m jdk8-mini:1.0
部署tx-manager
docker run --privileged -itd --name tx-manager --restart=always -p 7970:7970 -p 8070:8070 -v /opt/project/tx-manager:/opt/project -m 512m jdk8-mini:1.0
docker 安裝
查看操作系統版本 cat /etc/centos-release
查看Centos7內核 uname -a 或者 cat /proc/version
基礎組件安裝 yum -y install gcc & yum -y install gcc-c++
部署Docker添加yum源:yum install epel-release –y && yum list
配置阿里云Docker Yum源:
- yum install -y yum-utils device-mapper-persistent-data lvm2
- yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- yum list docker-ce --showduplicates
安裝最新版本的 Docker Engine-Community 和 containerd: yum install docker-ce docker-ce-cli containerd.io
列出并排序您存儲庫中可用的版本: yum list docker-ce --showduplicates | sort -r
要安裝特定版本的 Docker Engine-Community: yum install
docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
docker 安裝指定服務
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=digigd_mkt mysql:5.7
docker ps
docker search redis
docker pull redis:5.0
docker images
docker run -itd --name redis-test -p 6379:6379 redis:5.0 --requirepass “digigd_rds”
docker version
#先刪除指定容器
docker rm containID
#再刪除指定image
docker rmi imageid
#進入容器 nginx
docker exec -it nginx /bin/bash
kubectl 指令
#查看指定namespace下的所有pod,以及 pod所在節點ip
kubectl get pods -n namespace -o wide
#進入指定pod容器內
kubectl -n namespace exec -it pod_name /bin/bash 或 /bin/sh
#獲取k8s集群 命名空間/節點信息/
kubectl get namespace/nodes
#查看集群信息
kubectl cluster-info
#查看集群版本
kubectl version
#查看集群api版本
kubectl api-versions
nginx配置
service nginx start #啟動nginx
nginx -s stop # 停止 nginx
ps -aux|grep nginx; # 查看nginx進程
nginx -s reload; # 平滑重啟
pkill -9 nginx; # 強制停止nginx
nginx -t -c /etc/nginx/nginx.conf; # 檢測指定路徑文件是否正確
nginx -v; # 查看nginx版本
./nginx -c /usr/local/nginx/conf/nginx.conf # 指定配置文件-c啟動nginx
配置nginx命令:
vim /etc/profile
PATH=$PATH:/usr/local/nginx/sbin
export PATH
source /etc/profile
nginx 安裝
155 tar -zxvf nginx-1.15.12.tar.gz
156 ll
157 cd nginx-1.15.12
163 yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel
164 ./configure --prefix=/usr/local/nginx --with-http_ssl_module
165 make
166 make install
redis-client
1)redis-cli -h 120.24.95.92 -p 6379 # 連接
auth 密碼 # 輸入密碼
2)常用查詢指令:
MySQL
service mysqld restart
mysql -u root -p
mysql -u app_group -p -h10.0.12.37 (指定ip)
Grant all privileges on test.* to ‘test’@‘%’;
use dbname;
flush privileges;
grant 權限 on 數據庫對象 to 用戶 identified by 密碼;
grant select, insert, update, delete on test.* to ‘root’@‘%’ identified by ‘123456’ with grant option;
回收權限:
revoke all on mysql.* from anhutong@‘%’;
@% 和 @localhost 區別?
linux 下 java進程排錯
jps -m -l
jstack主要用來查看某個Java進程內的線程堆棧信息。-- 排查死鎖和CPU高占用問題
top -Hp 3399
printf “%x\n” 3399
jstack 3399 |grep d47
觀察鎖持有情況: jstack -l pid
動態顯示進程及占用資源的排行 top -c
占用CPU最高進程中的線程打印出來,可以用 top -bn1 -H -p
jmap用來查看堆內存使用狀況,一般結合jhat使用。
jmap -heap pid
JVM內存占用及變量hprof文件分析
1)jmap -dump:live,format=b,file=aaaa.hprof [線程pid];
2)aaaa.hprof 文件上傳到 一個在線網站 分析;
MongoDB
systemctl start mongod.service # 開啟
MongoDB systemctl enable mongod # 開機自啟
systemctl list-unit-files|grep mongod # 查看 MongoDB 是不是開機自啟
service mongod restart # 重啟
service mongod stop # 停止
service mongod start # 運行
db.getMongo(); # 查看當前db的連接服務器機器地址
show dbs; # 顯示所有數據庫
use newsSpider; # 切換到 newsSpider庫
db.getCollectionNames(); # 得到當前db的所有聚集集合
CentOS JDK安裝配置
1) 下載
wget --no-cookies --no-check-certificate --header “Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie” “http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz”
2)新建jdk目錄: mkdir -p /usr/jdk8
tar.gz 包解壓到指定目錄:tar -zxvf jdk-8u141-linux-x64.tar.gz -C /usr/jdk8/
tar 包解壓到指定目錄:unzip nacos-server-1.2.1.zip -d /usr/nacos121/
3)配置環境:vim /etc/profile
export JAVA_HOME=/usr/jdk8/jdk1.8.0_141
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
- 實時生效:source /etc/profile
Ubuntu JDK安裝
1 apt install openjdk-8-jdk-headless
2 vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
3 source /etc/profile
4 java -version
conda 指定渠道安裝
conda install -c conda-forge scrapy
docker 安裝mysql并掛載
1、文件夾準備:
mkdir -p /opt/mysql/conf.d/
mkdir -p /opt/mysql/data/
mkdir -p /opt/mysql/log/
touch /opt/mysql/my.cnf
2、my.cnf 添加如下內容:
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000[client]
default-character-set=utf8[mysql]
default-character-set=utf8
3、創建容器并啟動:
docker run
--restart=always
--privileged=true
-d mysql:5.7
-v /opt/mysql/data:/var/lib/mysql
-v /opt/mysql/log:/var/log/mysql
-v /opt/mysql/conf.d:/etc/mysql/conf.d
-v /opt/mysql/my.cnf:/etc/mysql/my.cnf
-p 33060:3306 --name my-mysql
-e MYSQL_ROOT_PASSWORD=123456
參數說明:
–restart=always: 當Docker 重啟時,容器會自動啟動。
–privileged=true:容器內的root擁有真正root權限,否則容器內root只是外部普通用戶權限
-v /opt/mysql/conf.d/my.cnf:/etc/my.cnf:映射配置文件
-v /opt/mysql/data/:/var/lib/mysql:映射數據目錄
參考鏈接