吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 451|回复: 9
收起左侧

[求助] Linux top命令定时输出文件

[复制链接]
jsj020107 发表于 2025-1-10 11:15
有一个场景: 监控到新Linux服务器CPU使用率波动大,所以想定时监控CPU使用率前20的进程。
命令:top -d 1 -n 28800 -b > process.log
有点瑕疵,top把所有进程信息都输出了,不要那么多
查了ps,pidstat,感觉top才更契合
比较粗鲁的办法是写个循环,每秒调用top输出一次
(没crontab权限)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

L12030 发表于 2025-1-10 11:45
运维大佬?
8taizi 发表于 2025-1-10 11:56
小洲 发表于 2025-1-10 13:32
xxc99 发表于 2025-1-10 13:55
ps -eo pid,ppid,comm,%cpu --sort=-%cpu | head -n 21 ,然后自己写个循环就可以了
 楼主| jsj020107 发表于 2025-1-10 14:28
xxc99 发表于 2025-1-10 13:55
ps -eo pid,ppid,comm,%cpu --sort=-%cpu | head -n 21 ,然后自己写个循环就可以了

谢谢,查了下,ps目的不一样,是实时看,而我的目的是看性能,所以感觉top跟贴切
 楼主| jsj020107 发表于 2025-1-10 14:29
小洲 发表于 2025-1-10 13:32
那你干嘛不用htop

没这工具
还有就是,服务器权限不大
 楼主| jsj020107 发表于 2025-1-10 14:35

看了下,不会

现在还是脚本循环调top
top -b -o +%CPU -n 1 | head -n 30
sleep一秒
有时会漏某一秒
如果sleep 0.5秒
有时又会同一秒输出两次

要是top b模式支持输出记录条数就好了
larkhzy 发表于 2025-1-10 14:45
本帖最后由 larkhzy 于 2025-1-10 14:47 编辑

ps -eo pid,ppid,user,%cpu,%mem,args --sort=-%cpu | head -n 21
lewis2022 发表于 2025-1-23 23:28
分享一下deepseek v3给出的答案供参考:

# 持续运行8小时(28800秒),每秒采样一次
end_time=$((SECONDS + 28800))
HEAD_LINES=7  # top头部行数(按系统实际调整)

while [ $SECONDS -lt $end_time ]; do
  echo "===== $(date) =====" >> process.log  # 添加时间戳
  top -b -n 1 | head -n $((HEAD_LINES + 20)) >> process.log  # 截取头部+前20进程
  sleep 1
done
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-6-17 13:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表