9. nohup命令
以下命令在后台执行 root 目录下的 runoob.sh 脚本,并重定向输入到 runoob.log 文件:
nohup /root/runoob.sh > runoob.log 2>&1 &
2>&1 解释:
将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。
-
0 – stdin (standard input,标准输入)
-
1 – stdout (standard output,标准输出)
-
2 – stderr (standard error,标准错误输出)
8.过滤单个多个文件夹 删除其他所有文件夹
过滤单个文件夹 删除其他所有文件夹
ls | grep -v 2022-08-30-15-17-18 | xargs rm -rf
ls | grep -v 2022-10-28-15-40-54 | xargs rm -rf
反向查找 grep -Ev 多个过滤文件夹 过滤多个文件夹
ls|grep -Ev '2022-09-05-14-47-18|a' | xargs rm -rf
ls | grep -Ev '2022-11-03-16-14-28|2022-11-03-16-10-06' | xargs rm -rf
7. Linux如何将文件中的多行转换成1行
使用awk将文件中的多行转换成1行
1. 采用awk
awk默认将记录分隔符(record separator即RS)设置为\n,此行代码将RS设置为EOF(文件结束),也就是把文件视为一个记录,然后通过gsub函数将\n替换成空格,最后输出。
[root@localhost ~]# awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' file
2. cat file | xargs
这可能是最简单的一种方式。
[root@localhost ~]# cat file | xargs echo
6. linux中删除指定文件以外的其它所有文件
ls | grep -v keep | xargs rm -rf
删除keep文件之外的所有文件
说明: ls先得到当前的所有文件和文件夹的名字, grep -v keep,进行grep正则匹配查找keep,-v参数决定了结果为匹配之外的结果,也就是的到了keep之外的所有文件名,然后 xargs用于从标准输入获得参数 并且传递给后面的命令,这里使用的命令是 rm,然后由rm删除前面选择的文件。
好处:使用了grep来正则表达式来匹配文件名字,可以一次保留多个文件,从而进行更加准确的处理
ls | grep -v 2022-08-30-15-17-18 | xargs rm -rf
反向查找 grep -Ev 多个过滤文件夹 过滤多个文件夹
ls|grep -Ev '2022-09-05-14-47-18|2022-08-30-15-17-18' | xargs rm -rf
5. linux中查看文件大小,以G为单位
ls -lh
4. 查看容器状态
[root@xx-vm ~]# docker ps |grep Dis 查找某个容器
dc1671b820b4 harbor.xx.com/xx/xx-vnc "./Dispatcher.out" 5 days ago Up 5 days 0.0.0.0:5500->5500/tcp, :::5500->5500/tcp, 0.0.0.0:5901->5901/tcp, :::5901->5901/tcp xx-vnc
[root@xx-vm ~]# docker exec -it dc1671b820b4 /bin/sh 进入容器
# ls
Dispatcher.out Dispatcher.txt
# cat Dispatcher.txt
3. 查看日志mqtt
docker ps
docker ps |grep log
docker logs 容器id
出现mqtt connection success 服务端下发消息了
如下mqtt消息失败
docker ps |grep tci-api 查找服务
docker logs 容器id
2. Linux CPU负载过高排查方法
Linux CPU负载过高排查方法 - 云+社区 - 腾讯云
问:如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载?
步骤一、找到最耗CPU的进程
工具:top
方法:
- 执行top -c ,显示进程运行信息列表
- 键入P (大写p),进程按照CPU使用率排序
如上图,最耗CPU的进程除了root的PID为768 --左图1
步骤二:找到最耗CPU的线程
工具:top
方法:
- top -Hp 768 ,显示一个进程的线程运行信息列表
- 键入P (大写p),线程按照CPU使用率排序
如上图,进程768内,最耗CPU的线程PID为1009 --右图2
步骤三:将线程PID转化为16进制
工具:printf
方法:printf “%x” 1009
图示:
如上图,1009对应的16进制是3f1,当然,这一步可以用计算器。
之所以要转化为16进制,是因为堆栈里,线程id是用16进制表示的。
步骤四:查看堆栈,找到线程在干嘛
工具:pstack/jstack/grep
方法:jstack 10765 | grep ‘0x2a34’ -C5 --color
- 打印进程堆栈
- 通过线程id,过滤得到线程堆栈
图示:
![](https://i-blog.csdnimg.cn/blog_migrate/4c123b469406d6f5a93e7e3d684be39e.png)
如上图,找到了耗CPU高的线程对应的线程名称“AsyncLogger-1”,以及看到了该线程正在执行代码的堆栈
1. shell对指定文件夹中文件进行过滤,排除某个文件夹,并修改文件内容的shell脚本
#!/bin/sh
#cd 后面的内容为执行文件夹,即需要替换字符串的文件夹
cd /Users/qa/Desktop/2021/code/cloud/cloud-api/src/main/java/dataCheck/cmo200
#遍历文件,并对文件中的内容进行全部替换
for file in `ls |grep -v replace.sh`
do
echo $file
sed -i '' 's/150/200/g' $file |grep -v replace.sh
sed -i '' 's/cmo15/cmo20/g' $file |grep -v replace.sh
sed -i '' 's/边缘端资源管理容器资源存储管理/边缘端资源管理容器资源存储管理/g' $file |grep -v replace.sh
done