# 一.部署发布
# 1.关闭某一进程脚本
#grep查询进程关键字
ps -ef | grep redis
#用awk输出进程ID
awk '{print $2}'
#最后批量kill
xargs kill -9
ps -ef | grep redis | awk '{print $2}' |xargs kill -9
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 2.同时执行
使用&&可以执行多个命令
# 3.指定端口
java -jar sentinel-dashboard-1.8.6.jar --server.port=8181
1
# 4.统计文件每天的量
# 定义日期格式
DATE_FORMAT="%Y-%m-%d"
# 获取当前日期
TODAY=$(date +"${DATE_FORMAT}")
du -bs /kwan/blog/blog | cut -f1 > /tmp/${TODAY}_start_size
1
2
3
4
5
6
7
2
3
4
5
6
7
# 5.比较文件大小差值
diff /tmp/start_size /tmp/end_size
1
# 6.年月日时分秒
#日期,年月日时分秒
$(date +%F%n%T)
#输出日期
echo $(date +%F%n%T)
1
2
3
4
5
2
3
4
5
# 7.天增量文件信息
#!/bin/bash
# 指定目标目录
DEST_DIR="/kwan/blog/blog"
# 定义日期格式
DATE_FORMAT="%Y-%m-%d"
# 获取当前日期
TODAY=$(date +"${DATE_FORMAT}")
# 获取昨天的日期
YESTERDAY=$(date -d "yesterday" +"${DATE_FORMAT}")
# 使用 rsync 和 find 命令计算昨天增量
rsync -a --stats --dry-run --itemize-changes $(find "${DEST_DIR}" -type f -newermt "${YESTERDAY}" ! -newermt "${TODAY}") ./ | grep "^>" > "${DEST_DIR}/increment_${YESTERDAY}.log"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 8.命令解析
nohup sh mqbroker -c /opt/software/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b-s.properties &
1
这个命令是启动 RocketMQ 的 broker 服务,其中nohup
表示在后台运行,sh
表示执行 shell 脚本,mqbroker
表示启动 broker 服务,-c
指定了配置文件路径。&
命令将在后台运行,而不会阻塞您的终端
nohup sh mqbroker -c /opt/software/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b.properties >/dev/null 2>&1 &
1
这个命令是启动 RocketMQ 的 broker 服务,并将输出重定向到/dev/null
,即不输出任何日志信息。
如果您想要查看日志信息,可以将>/dev/null 2>&1
这部分去掉,或者将/dev/null
替换为日志文件路径,比如:
nohup sh mqbroker -c /opt/software/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b.properties > /opt/software/rocketmq-all-4.5.1-bin-release/logs/broker.log 2>&1 &
1
这样就会将日志输出到/opt/software/rocketmq-all-4.5.1-bin-release/logs/broker.log
文件中。
# 9.错误终止
# 一些需要严格错误检查的代码
set -e
# 一些可以容忍错误的代码
set +e
1
2
3
4
5
2
3
4
5
# 二.常用工具
# 1.虚拟内存
由于双十一白嫖的阿里云 CentOS 服务器, 配置有点低(2 核 4G)
我使用 vuepress 搭建的自己的博客网站,在部署的时候,使用命令编译安装 npm run docs:dev 出现如下错误
virtual memory exhausted: Cannot allocate memory
make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
已杀死
1
2
3
2
3
当然,仅仅一个前端应用应该是不对造成这么大的内存占用的,因为还部署了其他的一些服务,还不想停掉.可以查一下前 8 内存占用排名,如下图所示,都是不想停掉的
ps aux | head -1;ps aux |grep -v PID |sort -rn -k +4 | head -8
1
解决办法就是使用 swap 内存
使用命令 free -m
查看当前 swap 内存大小,可以看到下面的结果 swap 行全是 0,表示没有启用 swap 内存。
free -m
total used free shared buff/cache available
Mem: 990 607 288 0 94 265
Swap: 0 0 0
1
2
3
4
2
3
4
创建 2G 的虚拟内存文件 /opt/swap,分别执行如下三个命令
dd if=/dev/zero of=/opt/swap bs=1024 count=2048000
mkswap /opt/swap
swapon /opt/swap
1
2
3
4
5
2
3
4
5
再次查询 swap 内存,可以看到 swap 已经被分配了 2G
free -m
total used free shared buff/cache available
Mem: 990 609 78 0 302 244
Swap: 1999 0 1999
1
2
3
4
2
3
4
2G 的虚拟内存启用完成!
# 2.无权限删除
#提示无权限
rm newinit.sh
#查询下文件信息
lsattr newinit.sh
#修改i
chattr -R -i newinit.sh
#修改a
chattr -R -a newinit.sh
#再次删除
rm newinit.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 3.获取进程号并杀掉
echo `ps -ef | grep /blog/blog/node_modules | grep -v grep | awk '{print $2}'`
kill -9 `ps -ef | grep /blog/blog/node_modules | grep -v grep | awk '{print $2}'`
1
2
2
# 4.端口与应用
查看端口和进程号: ss -nltp
根据docker-proxy查看docker: docker ps -a