常用指令合集(DOS/Linux/git/Maven等)
文章目录
- 常用指令收集
- 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:映射数据目录
参考链接