The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Реализация команды top на Shell
Должно работать на любом терминале поддерживающем VT Escape 
последовательности, проверено в Linux, True64 ,  HP-UX  и Соларисе .

#!/bin/ksh
SLEEP=$1
FIELD=$2
[ -z "$1" ] && SLEEP=10 
[ -z "$2" ] && FIELD=1
stty_save=`stty -g`
trap "stty $stty_save ; exit; " 2 
stty sane
clear
lines=`tput lines`
lines=$((lines-5))
DATE=`date '+%H:%M:%S'`
echo "\t\t`tput rev``hostname` TOP $lines PROCESESS at $DATE every $SLEEP seconds`tput sgr0`"
tput bold
case `uname` in
        Linux)  PS_COMMAND="ps -e -o pcpu= -o cputime= -o user= -o uid= -o pid= -o pmem= -o rssize= -o comm="
                HEADER_COMMAND="ps f  -p $$ -o pcpu,cputime,user,uid,pid,pmem,rssize,command"
                ;;
        HP-UX)  UNIX95=1
                export UNIX95
                PS_COMMAND="ps -e -o pcpu= -o time= -o user= -o uid= -o pid= -o vsz= -o sz= -o comm="
                HEADER_COMMAND="ps -p $$ -o pcpu,time,user,uid,pid,vsz,sz,comm"
                ;;
        SunOS)  HEADER_COMMAND="ps -f -p $$ -o pcpu,time,user,uid,pid,pmem,rss,comm"
                PS_COMMAND="ps -e -o pcpu= -o time= -o user= -o uid= -o pid= -o pmem= -o rss= -o comm="
                ;;

        *)      PS_COMMAND="ps -ef -o pcpu=,cputime=,user=,uid=,pid=,pmem=,rssize=,comm="
                HEADER_COMMAND="ps -f -p $$ -o pcpu,cputime,user,uid,pid,pmem,rssize,command"
                ;;
esac
$HEADER_COMMAND | head -1
tput sgr0
while [ true ] ; do 
        tput cup 2 0
        tput ed
        $PS_COMMAND | sort -r -n -k"$FIELD"  | head -$lines 
        sleep $SLEEP
done
 
26.12.2006 , Автор: rstone
Ключи: shell, top, monitor / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / Shell / Готовые скрипты

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, rstone, 15:16, 26/12/2006 [ответить] [смотреть все]
  • +/
    Еммм ...
    В цикле while  tput ed надо перенести сразу за
    tput cups 2 0 .
     
  • 1.2, anonymous_from_lor, 17:51, 26/12/2006 [ответить] [смотреть все]
  • +/
    в солярке не канает:
    ps: unknown output format: -o cputime
     
  • 1.3, rstone, 11:37, 27/12/2006 [ответить] [смотреть все]
  • +/
    Ну теперь "канает" и на солярке .
     
     
  • 2.4, alex, 01:33, 29/12/2006 [^] [ответить] [смотреть все]
  • +/
    Rabotaet.
    no tam est' predustanovlennyj 'prstat'
     
  • 1.5, rstone, 13:45, 30/12/2006 [ответить] [смотреть все]
  • +/
    Да везде есть какое то подобие .
    Но на Tru64  , например стандартный top падает и кроме всего
    прочего он идет отдельно , не в базовом пакете .
    Короче это не замена , это дополнение :)
     
  • 1.6, Аноним, 11:04, 14/01/2007 [ответить] [смотреть все]  
  • +/
    а uptime как на bash?
    :-)
     
  • 1.7, Deepwlaker, 06:09, 15/01/2007 [ответить] [смотреть все]  
  • +/
    cat /proc/uptime, ну и далее по усмотрению.
     
  • 1.8, rmf, 14:13, 30/01/2007 [ответить] [смотреть все]  
  • +/
    а зачем

    чем эта реализация отличается от

    while : ; do
      clear
      top -b -n 1 -d <delay>
      [ $? -еq 0 ] && break
    done

    top -b использует dumb терминал

     
  • 1.9, rmf, 14:13, 30/01/2007 [ответить] [смотреть все]  
  • +/
    поправка
    $? -еq 0 ] || break
     
  • 1.10, hand, 23:55, 15/11/2007 [ответить] [смотреть все]  
  • +/
    пришлось убрать двойные скобки в 11 строке, под убунтером тож нормально заработало.
     
     
  • 2.11, hand, 23:58, 15/11/2007 [^] [ответить] [смотреть все]  
  • +/
    правильно будет заменить {lines-5}
     
  • 1.12, rstone, 11:08, 20/11/2007 [ответить] [смотреть все]  
  • +/
    Ну вот , ЭТО моргает гораздо меньше bin ksh SLEEP 1 FIELD 2 -z 1 ... весь текст скрыт [показать]
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor