顶级输出在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 ]" [email protected] 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 

正如你所看到的,整个path都不见了。 但是,如果我从bash运行脚本,它发挥作用,发送足够的电子邮件。

这是一个ncurses的问题? pipe道邮件问题?

谢谢!

top使用-w开关。

  -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. 

谢谢Sven,但我的输出顶部是这样的:

 # 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 ]" [email protected] export COLUMNS=512 top -cSbn 1 | head -14 | tail -14 | mail -s"High load on server YODA - [ $load ]" [email protected] fi