查询网络端口
netstat -nultp | grep PID
查询所有端口
ps -ef | grep PID
查询jar 程序
jps
杀死端口
kill -9 PID
查找文件位置
whereis FILENAME
查看所有后台任务
jobs
打开上次任务(若有多个则指定Job号)
fg JOBID
后台运行
bg
启动jar 程序
nohup java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms2048m -Xmx2048m -Xmn640m -Xss256k -XX:SurvivorRatio=8 -XX:+UseG1GC ./xinsoft-gyhl.jar --spring.profiles.active=yanshi >/dev/null 2>log &
-XX:MaxMetaspaceSize=128m 设置metaspace区域的最大值
-XX:MetaspaceSize=128m 到达128m发生fullGC 阈值
-Xms2048m 分配最小内存
-Xmx2048m 分配最大内存
-Xmn640m 新生代内存
-Xss256k 每个线程的堆栈大小
-XX:SurvivorRatio=8 设置新生代Eden区比例
-XX:+UseG1GC 使用的垃圾回收器
-XX:NewRatio=4 设置年轻代比例
--spring.profiles.active=yanshi 指定配置文件
>/dev/null 输出到空文件
2>log 错误日志到log 文件 0 表示stdin标准输入;1 表示stdout标准输出;2 表示stderr标准错误。
我们可以理解为,左边是标准输出,好,现在标准输出直接输入到/dev/null中,而2>&1是将标准错误重定向到标准输出,所以当程序产生错误的时候,相当于错误流向左边,而左边依旧是输入到/dev/null中。
文件操作
chmod 777 FILENAME # 更改文件权限 部分配置文件需要为644不可执行 777则是最高权限
ll # 查看文件信息
ls # 查看文件列表
tail -f FILENAME # 从文件最后开始读取
cat FILENAME # 读取整个文件
vi FILENAME # 编辑文件
vim FILENAME # 编辑文件
/查找内容 # 查找出指定内容位置
i # 输入
d # 删除
:wq! # 强制保存
:q! # 不保存并推出
:set ff # 查看文件类型(unix 文件为可执行 dos 不可执行)
:set ff=unix # 设置文件类型为unix
服务器时间校准
ntpdate cn.pool.ntp.org
设置Linux 开机自启 (在rc.local 文件下加入自己要启动的文件)
vim /etc/rc.local
查看JVM使用情况
jstat -gc PID 间隔时间 次数
导出内存快照
jmap-dump:format=b,file=YYMMddhhmm.dump PID
把系统(文件夹)打成tar 包
tar -cvpf /tmp/FILENAME.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .
--directory=/ # 所要打包的文件路径
--exclude=proc # 过滤掉不需要打包的文件夹
不要忘记最后一个点
将tar 包打成tar.gz
tar zcf FILENAME.tar.gz FILENAME.tar
shell 文件
#!/usr/bin/bash
PROJECT_NAME=gyhl
containerName=$PROJECT_NAME
imagesName=$PROJECT_NAME
#network_name="$PROJECT_NAME_bridge"
function docker_install(){
echo "检查Docker......"
docker -v
if [ $? -eq 0 ]; then
echo "检查到Docker已安装!"
else
echo "安装docker环境..."
curl -sSL https://get.daocloud.io/docker | sh
echo "安装docker环境...安装完成! 开始启动docker"
service docker start
fi
# 创建公用网络==bridge模式
#docker network create share_network
# 检查docker-compose 是否存在
echo "检查docker-compose"
docker-compose -v
if [ $? -eq 0 ]; then
echo "检查到docker-compose已安装"
else
cp -r ./docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
echo "docker-compose安装完成"
fi
}
function check_start() {
existImage=`docker inspect --format '{{.Id}}' java:office`
if [ "${existImage}" == "" ]; then
echo "无镜像!正在创建镜像..."
# 不存在就创建
docker load -i ./resource/redis.tar
docker load -i ./resource/nginx.tar
docker load -i ./resource/rabbitmq.tar
docker load -i ./resource/influxdb.tar
docker load -i ./resource/vsftpd.tar
docker load -i ./resource/mysql.tar
docker load -i ./resource/java.tar
echo "创建镜像成功!!"
fi
# filterName=`docker network ls | grep ${network_name} | awk '{ print $2 }'`
# if [ "${filterName}" == "" ]; then
# # 不存在就创建
# echo "开始创建 ${network_name} ..."
# docker network create ${network_name}
# echo "创建 ${network_name} 成功!!"
# fi
existContainer=`docker inspect --format '{{.State.Running}}' ${containerName}`
if [ "${existContainer}" == "true" ]; then
docker stop ${containerName}
echo "容器:${containerName}已停止"
docker rm ${containerName}
echo "容器:${containerName}已删除"
docker rmi ${imagesName}
echo "镜像:${containerName}已删除"
fi
}
function buildJar(){
#文件夹不存在则创建
# if [ ! -d "/dbback/" ];then
# echo "创建备份文件夹"
# mkdir /dbback
# else
# echo "备份文件夹已经存在"
# fi
echo "mysql 权限降级"
chmod 644 ./mysql/conf/my.cnf
cp ./dbback.sh ./dbback
chmod 777 ./dbback/dbback.sh
echo "正在构建gyhl镜像"
# 其实这个构建指令是可以直接写到compose的那个启动文件中的
docker build -f ./dockerfile -t ${containerName} .
echo "镜像构建完成"
echo "重启容器"
docker-compose down
echo "正在创建并启动容器"
docker-compose -f ./docker-compose.yml up -d
}
docker_install
check_start
buildJar
#!/bin/bash
echo "正在备份数据库"
docker exec -i mysql mysqldump -t -uroot -pxinsoft411 > "/data/xinsoft"`date +%s`".sql" --default-character-set=utf8 xinsoft