我在AWS中使用 Ubuntu 14.04 ,它没有任何图形用户界面,我想实现一个自动进程,只要我的CPU发送top
命令的屏幕截图去> 70%。
有时我们需要发送df -h
,du -sh
,htop
,等的输出。
我面临的问题是,如何在没有任何GUI的情况下拍摄页面的快照?谁可以帮我这个事?
答案 0 :(得分:2)
top -n 1 -b > top-output.txt
关于top命令手册页中的选项-b和-n:
-b :Batch-mode operation
Starts top in Batch mode, which could be useful for sending
output from top to other programs or to a file. In this
mode, top will not accept input and runs until the iterations
limit you've set with the `-n' command-line option or until
killed.
-n :Number-of-iterations limit as: -n number
Specifies the maximum number of iterations, or frames, top
should produce before ending.
<强> UPD 强>
see this link
答案 1 :(得分:1)
位图图形屏幕截图需要处理大量字节,压缩它们等等,使用它们进行监控是一个不那么好的想法!
即使您阅读包含屏幕截图的邮件,您也无法直接从邮件中读取值...(再次使用具有大量资源的OCR工具)......
这个小脚本将通过邮件发送top
结果,仅当CPU负载超过70%时才使用bash:
这可以由crontab
运行,例如。
#!/bin/bash
{
declare -a out=()
read; out+=("$REPLY")
read; out+=("$REPLY")
read; out+=("$REPLY")
read foo user foo system foo <<<"$REPLY"
((tot=(${user//.}+${system//.}),tot>700))&& {
tot=000$tot
printf -v pct "%.1f\n" ${tot:0:${#tot}-1}.${tot:${#tot}-1}
(
printf "%s\n" "${out[@]}"
cat
) |
mail -s "$HOSTNAME's CPU load: $pct tot, $user us, $system sy!" user@host
}
}
} < <(top -bn1);
这将读取并存储top
命令的3个第一行,计算用户和系统百分比的总和,然后如果总数更大超过70%,为邮件主题呈现$pct
,然后使用 STDIN 上的top
发送3条存储的行和cat
命令的其余部分。< / p>
...(语法${user//.}
将删除点,然后乘以top
命令的10输出... ...
#!/bin/bash
{
read headline
declare -a over=()
while read;do
read filesys size use avail pct mpnt <<<"$REPLY"
((${pct%%%}>70)) && over+=("$REPLY")
done
((${#over[@]}>0))&&{
printf "%s\n" "$headline" "${over[@]}" |
mail -s "$HOSTNAME: ${#over[@]} disks over limit!" user@host
}
} < <(LANG=C df -h )
这将发送邮件主题为:&#34; MyHost:N个磁盘超限!&#34; ,N
为磁盘数量,内容输出为{{ 1}}仅适用于 df -h
磁盘,
答案 2 :(得分:0)
其他答案解决了大部分问题。 F.Hauri显示如何检查条件,并在需要时发送邮件。 Tso显示了如何将top
输出转储到文件中,可以根据需要发送该文件(根据 F.Hauri&#39> 答案)。
剩下的是什么:
可以将 df -h
输出重定向到类似df -h > output1
的文件。与du
相同,即 du -h > output2
。
htop
到纯文本:请参阅k0fe's answer to "htop output to human readable file"。