top output to narrow in cron
Я пытаюсь отправить электронное письмо через cron, чтобы узнать, какие процессы загружают мой сервер. Это работает нормально, но получающееся электронное письмо слишком узкое, и мне нужно больше знать о процессе.
Это сценарий, который я использую (украл его отсюда: http://www.inmotionhosting.com/support/website/server-usage/create-server-load-monitoring-bash-script):
#!/bin/bash
trigger=10.00
load=`cat /proc/loadavg | awk '{print $1}'`
response=`echo | awk -v T=$trigger -v L=$load 'BEGIN{if ( L > T){ print "greater"}}'`
if [[ $response = "greater" ]]
then
top -cSbn 1 | head -14 | tail -8 | mail -s"High load on server - [ $load ]" myemail@domain.com
fi
Получившееся письмо выглядит примерно так:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
810809 root 20 0 20700 13m 3032 R 50 0.0 0:00.40 /prod/process-nam
810802 root 20 0 20700 13m 3032 R 48 0.0 0:00.39 /prod/process-nam
810808 root 20 0 20708 13m 3032 S 48 0.0 0:00.35 /prod/process-nam
810803 root 20 0 20708 13m 3032 S 46 0.0 0:00.39 /prod/process-nam
810810 root 20 0 20168 13m 3028 R 46 0.0 0:00.33 /prod/process-nam
318723 www-data 20 0 146m 131m 3320 R 45 0.4 67:27.96 /home/server/pr
810800 root 20 0 20704 13m 3032 S 45 0.0 0:00.39 /prod/process-nam
Как видите, весь путь отсутствует. Но если я запускаю скрипт из bash, он работает, посылая электронную почту достаточно широко.
Это проблема ncurses? Труба почтой?
Спасибо!
2 ответа
Спасибо Свен, но мой вывод для топ это:
# top -w
top: unknown argument 'w'
Я думаю, у вас есть более свежая версия. Но вы отправили меня в правильном направлении (+1 для вас): я изменил свой сценарий для экспорта числа по столбцам, и теперь у меня есть полный вывод:
#!/bin/bash
trigger=15.00
load=`cat /proc/loadavg | awk '{print $1}'`
response=`echo | awk -v T=$trigger -v L=$load 'BEGIN{if ( L > T){ print "greater"}}'`
if [[ $response = "greater" ]]
then
#sar -q | mail -s"High load on server - [ $load ]" recipient@YourDomain.com
export COLUMNS=512
top -cSbn 1 | head -14 | tail -14 | mail -s"High load on server YODA - [ $load ]" quinhentos@queo.pt
fi
Использовать -w
переключиться на top
,
-w :Output-width-override as: -w [ number ]
In 'Batch' mode, when used without an argument top
will format output using the COLUMNS= and LINES= envi‐
ronment variables, if set. Otherwise, width will be
fixed at the maximum 512 columns. With an argument,
output width can be decreased or increased (up to 512)
but the number of rows is considered unlimited.
In normal display mode, when used without an argument
top will attempt to format output using the COLUMNS=
and LINES= environment variables, if set. With an
argument, output width can only be decreased, not
increased. Whether using environment variables or an
argument with -w, when not in 'Batch' mode actual ter‐
minal dimensions can never be exceeded.
Note: Without the use of this command-line option,
output width is always based on the terminal at which
top was invoked whether or not in 'Batch' mode.