Назад | Перейти на главную страницу

верхний вывод сузить в 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? Проблема с обычной почтой?

Спасибо!

Использовать -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.

Спасибо, Свен, но мой вывод для вершины таков:

# 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