写一个sh脚本,功能为获取当前服务器cpu占用超过20%或内存占用超过30%的进程,然后通过strace追踪进程内容,存储到log文档中
时间: 2024-05-04 22:22:23 浏览: 7
以下是一个简单的sh脚本,可以实现你的需求:
```
#!/bin/bash
# 获取当前CPU占用超过20%或内存占用超过30%的进程
TOP_PROCESSES=$(ps aux --sort=-%cpu,-%mem | awk '($3 > 20 || $4 > 30) {print $2}')
# 如果有符合条件的进程,则使用strace追踪进程内容,并将结果保存到log文档中
if [ -n "$TOP_PROCESSES" ]; then
for PID in $TOP_PROCESSES; do
strace -p $PID -o "/var/log/strace_$PID.log" &
done
fi
```
该脚本首先使用`ps`命令获取当前CPU占用超过20%或内存占用超过30%的进程,然后使用`strace`命令追踪进程内容,并将结果保存到`/var/log/strace_$PID.log`文档中。
你可以将该脚本保存为文件,例如`monitor.sh`,并将其添加到定时任务中,以便定期检查服务器的进程占用情况。
相关问题
linux服务器的一个进程dubs-daemon 占用CPU 100%的原因步骤及命令
如果你发现 Linux 服务器上的一个进程 `dubs-daemon` 占用了 100% 的 CPU,可以按照以下步骤进行排查:
1. 使用 `top` 命令查看进程占用 CPU 的情况:
```
top
```
在 `top` 命令的输出中,找到 `dubs-daemon` 进程,查看它的 CPU 占用情况,以及其他相关信息。
2. 使用 `ps` 命令查看进程的详细信息:
```
ps -ef | grep dubs-daemon
```
这个命令会显示 `dubs-daemon` 进程的详细信息,包括进程 ID(PID)、启动时间、运行状态等。
3. 查看进程的日志文件:
```
tail -f /var/log/dubs/daemon.log
```
这个命令会实时显示 `dubs-daemon` 进程的日志文件,通过查看日志文件可以了解进程是否出现异常或错误。
4. 使用 `strace` 命令跟踪进程的系统调用:
```
strace -p <PID>
```
这个命令会跟踪 `dubs-daemon` 进程的系统调用,可以查看进程是否出现系统调用异常。
5. 使用 `lsof` 命令查看进程打开的文件:
```
lsof -p <PID>
```
这个命令会显示 `dubs-daemon` 进程打开的所有文件,包括日志文件、配置文件等,可以查看是否有文件被锁定或无法访问。
根据以上排查步骤,可以了解 `dubs-daemon` 进程占用 CPU 100% 的原因,并作出相应的处理。
Linux 进程内存占用过高怎么排查
以下是Linux进程内存占用过高的排查方法:
1.使用top命令查看当前进程占用的内存情况,可以按下Shift+M键,将进程按内存使用量排序。
2.使用ps命令查看进程占用的内存情况,例如:ps aux --sort=-%mem | head。
3.使用free命令查看系统内存使用情况,例如:free -h。
4.使用vmstat命令查看系统虚拟内存使用情况,例如:vmstat 1。
5.使用pmap命令查看进程占用的内存映射情况,例如:pmap -x [pid]。
6.使用lsof命令查看进程打开的文件和网络连接情况,例如:lsof -p [pid]。
7.使用strace命令跟踪进程的系统调用情况,例如:strace -p [pid]。
8.使用perf工具分析进程的性能瓶颈,例如:perf record -g -p [pid]。