Существует ли версия подкачки страниц 'часов'?

Инструменты HP ASM и SNMP, OIDs - то, что мы главным образом используем для общего контроля компонента....

С другой стороны, можно также использовать smartmontools для контроля дисководов, и большинство датчиков должно обнаружиться в lm_sensors

24
задан 6 August 2009 в 07:33
12 ответов

Вместо того, чтобы изменять команду 'часов', используйте экран!

Например, скажем, то, что необходимо смочь видеть 300 строк высоты и 100 символов ширины и переместить это. После стартового экрана вызовите размер таким образом:

C-a :height -w 300
C-a :width -w 100

Теперь запустите свою команду часов. Можно затем использовать C-a <ESC> к странице вокруг дисплея.

К сожалению, дисплей не обновляется в то время как в режиме копии. Но если Вы хотите корректироваться, какой раздел окна Вы просматриваете, самый легкий путь может состоять в том, чтобы повторно выполнить команды высоты/ширины как по умолчанию, Ваш терминал показывает нижнее правое из виртуального окна.

18
ответ дан 28 November 2019 в 20:18
  • 1
    единственная проблема затем - то, как постоянно повторять команду, в то время как очищение экрана между каждым идет –  David Dean 18 August 2009 в 04:12
  • 2
    Ой, я имел в виду, выполняет команду часов в экране. Фиксированный. –  MikeyB 18 August 2009 в 16:19
  • 3
    yartls - еще одна причина любить экран :) –  warren 7 September 2009 в 10:30

Хорошо, у меня было немного, идут в a watchless функция. Это немного грубо, и это, все же кажется, полностью не работает, но здесь идет:

#!/bin/bash -u
out=$(mktemp)
(while [ 1 ]; do
    "$@" > $out;
    sleep 2;
done) &
less $out
kill $!

Необходимо вручную использовать R ключ меньше, чтобы заставить дисплей обновлять.

Это, кажется, работает на watchless date но не для watchless qstat или watchless pstree, который оба выставочных пробела. Какие-либо идеи?

2
ответ дан 28 November 2019 в 20:18

можно попробовать:

watch command > file

затем в Вашем файле необходимо видеть вывод appendend (у меня нет права поля Linux теперь для тестирования этого),

-1
ответ дан 28 November 2019 в 20:18
  • 1
    Это isn' t собирающийся делать то, что Вы предназначаете, действительно, чтобы это просто заполнилось file тем же выводом много раз. Это, конечно, doesn' t рассматривают исходный вопрос. –  Greg Hewgill 6 August 2009 в 07:55
  • 2
    затем я не знаю :) –   6 August 2009 в 08:08
  • 3
    Измените " > " к " > > " заставить его добавить данные к в файл? –  Rory 12 August 2009 в 13:32

Можно попробовать это:

в то время как vmstat; действительно спите 1; сделанный | меньше

замените vmstat qstat и скорректируйте сон к Вашим потребностям

5
ответ дан 28 November 2019 в 20:18
  • 1
    все это делает содержание, повторяющее команду в less, что означает, что необходимо продолжать прокручивать для наблюдения последнего вывода. –  David Dean 14 August 2009 в 09:32
  • 2
    Да, но можно прокрутить назад. Вы can' t имеют обоих сразу. Нажатие сдвига f, который является капиталом ' F' будет работать как хвост. –  Spacen Jasset 14 August 2009 в 17:06

Мультихвост: http://www.vanheusden.com/multitail/

Пример:

 vmstat 1 |multitail -j

Прокрутите назад нажатием 'b' и страницей/стрелкой, up/down.

4
ответ дан 28 November 2019 в 20:18

Я не вижу, как это могло быть реализовано, когда содержание строки изменяется, и watch сбрасывал бы назад к первой строке каждые 2 секунды, даже если Вы могли бы прокрутить вниз.

Некоторые обходные решения:

watch 'qstat | tail -n40' показать вывод qstat, начинающегося с 40-й строки от нижней части

watch 'qstat | grep jsmith' к grep вывод, таким образом, строки, которыми Вы интересуетесь, всегда находятся на первом экране.

Обратите внимание, что необходимо поместить команды вокруг канала в одинарных кавычках - иначе Вы будете передавать вывод по каналу watch, не вывод qstat.

0
ответ дан 28 November 2019 в 20:18

Продолжать ответ enkrs,

смотрите 'qstat |, направляются-300 | хвост-15'

получит Вас произвольные страницы в вывод qstat.

0
ответ дан 28 November 2019 в 20:18

Вот довольно сырой сценарий, который, кажется, работает на несколько команд, которые я бросил в него

#!/bin/bash
# ---- mywatch.sh ----

if [ $# -lt 1 && $# -gt 2 ]; then
    echo "Usage: $0 <command> <delay>" 
    exit 1
fi

CMD=$1
if [ $# -eq 2 ]; then
  DELAY=$2
else
  DELAY=2 # default
fi

while : ; do
  ( (echo -e "Every ${DELAY}s: $CMD\n"; $CMD) | less )&
  PID=$!
  sleep $DELAY
  kill -9 $PID &> /dev/null
  clear
done

Используемый как таковой:

alias mywatch="~/bin/mywatch.sh"

mywatch vmstat
mywatch "ps aux" # commands in options need to be quoted
mywaych pstree 10 # change delays

Быть довольно педантичным, переход между обновлениями не является столь же гладким, как я хотел бы, чтобы это было. Естественно, будучи простым сценарием это не поддерживает выделение разности (наблюдайте-d). Кроме того, парсинг входных параметров может быть добит большего успеха.

0
ответ дан 28 November 2019 в 20:18

Как насчет просто: хвост-f

0
ответ дан 28 November 2019 в 20:18

Я реализую простой питоновый скрипт для удовлетворения этого запроса, названный "сторожевой"

: установить watchall

заменить часы на watchall и наслаждаться прокручивающимся экраном. Теперь он поддерживает только флаги -n и -d.

.
0
ответ дан 28 November 2019 в 20:18

Я использую это:

while cat /etc/wgetrc; do sleep 10; done | pv -q -L 150 | tail -n +0 -f
0
ответ дан 6 April 2021 в 09:46

Я отредактировал скрипт здесь для работы с командной строкой

#!/bin/bash
#
# watch a file and scroll
#
# keys => arrow-up/down, page-up/down, pos1, end
#
# usages:
#           swatch -n <timeout_watch> <file>
#           swatch <file>
#
# version:          1.1
# dependencies:     awk , tput , clear, read
# published:        https://unix.stackexchange.com/questions/3842/how-can-i-scroll-within-the-output-of-my-watch-command
# gif recording:    peek , https://github.com/phw/peek

#
# =============================================
# KEYCODES
# =============================================
# https://unix.stackexchange.com/questions/294908/read-special-keys-in-bash
# showkey -a


# =============================================
# DEFAULTS
# =============================================
command=""
TMPFILE=$(mktemp)
line_show_begin=1
line_show_begin_last=-1
console_lines_correction=4
timeout_watch=5
timeout_read=.1


# =============================================
# DEFINE Escape-Sequences
# =============================================

# http://ascii-table.com/ansi-escape-sequences-vt-100.php

ESC_clr_line='\033[K'
ESC_reset_screen='\033c'
ESC_clr_screen='\033[2J'
ESC_cursor_pos='\033[0;0f'
ESC_cursor_home='\033[H'


# =============================================
# FUNCTIONS
# =============================================


function fn_help() {
cat << EOF
Usage: ./$0 [-n <timeout>] [<command>]  ,  timeout >0.1s , default 5s
EOF
}


function get_options() {
    [[ "$1" == "" ]] && { fn_help ; exit 1 ; }
    while [ -n "$1" ]; do
        case "$1" in
            -h|--help)
                fn_help
            ;;
            -n)
                [[ "$2" == "" ]] && { echo "Error: option -n required <timeout>" ; exit 1 ; }
                if [[ "$(echo "$2<0.1"|bc)" == "0" ]] ; then
                    timeout_watch="$2"
                    shift
                else
                    echo "Error: timeout <0.1 not allowed"
                    exit 1
                fi
            ;;
            -*)
                echo "Error: unknown option »$1«"
                exit 1
            ;;
            *)
                #if [[ -f "$1" ]] ; then
                command=$1
                #else
                #    echo "Error: file not found »$1«"
                #    exit 1
                #fi
            ;;
        esac
        shift
    done
    [[ "$command" == "" ]] && { echo "Error: command required" ; exit 1 ; }
}


function fn_print_headline() {
    hdl_txt_right="${HOSTNAME}: $(date "+%Y-%m-%d %H:%M:%S")"
    hdl_txt_left="$command , ${timeout_watch}s , $line_show_begin"
    hdl_txt_left_length=${#hdl_txt_left}
    printf '%s%*s\n\n' "$hdl_txt_left" "$(($console_columns-$hdl_txt_left_length))" "$hdl_txt_right"
}


function fn_print_file() {
    # ---------------------------------------------------
    # file lenght can change while watch
    # ---------------------------------------------------
    eval $command > $TMPFILE
    lines_command=$(awk 'END {print NR}' $TMPFILE)
    line_last=$(($lines_command-$console_lines))
    (( "$line_last" < "1" )) && { line_last=1; clear; }
    (( "$line_show_begin" > "$line_last" )) && { line_show_begin=$line_last; clear; }

    # ---------------------------------------------------
    # print postion changed
    # ---------------------------------------------------

    if (( "$line_show_begin" != "$line_show_begin_last" )) ; then
        line_show_begin_last=$line_show_begin;
        clear
    else
        printf $ESC_cursor_home
    fi

    # ---------------------------------------------------
    # print file section
    # ---------------------------------------------------

    fn_print_headline
    eval $command > $TMPFILE
    awk -v var1="$line_show_begin" -v var2="$console_lines" 'NR>=var1 {if (NR>var1+var2) {exit 0} else {printf "%s\n",$0 } }' $TMPFILE
}


function fn_console_size_change() {
    console_columns=$(tput cols)
    console_lines=$(($(tput lines)-$console_lines_correction))
    line_show_begin_last=-1
}


function fn_quit() {
    echo "quit" $0 , $?
    setterm -cursor on ; exit 0
}


# =============================================
# GET OPTIONS
# =============================================

get_options "$@"    # pass all arguments with double-quotes



# =============================================
# INIT TRAP
# =============================================

trap "fn_console_size_change" SIGWINCH # https://en.wikipedia.org/wiki/Signal_(IPC)#SIGWINCH
trap "fn_quit" INT TERM EXIT


# =============================================
# MAIN
# =============================================

fn_console_size_change
setterm -cursor off


while true ; do
    fn_print_file
    read -rsn1 -t $timeout_watch k # char 1
    case "$k" in
        [[:graph:]])
            # Normal input handling
        ;;
        $'\x09') # TAB
            # Routine for selecting current item
        ;;
        $'\x7f') # Back-Space
            # Routine for back-space
        ;;
        $'\x01') # Ctrl+A
            # Routine for ctrl+a
        ;;
        $'\x1b') # ESC
            read -rsn1 k # char 2
            [[ "$k" == ""  ]] && return  Esc-Key
            [[ "$k" == "[" ]] && read -rsn1 -t $timeout_read k # char 3
            [[ "$k" == "O" ]] && read -rsn1 -t $timeout_read k # char 3
            case "$k" in
                A)  # Arrow-Up-Key
                    (( "$line_show_begin" > "1" )) && line_show_begin=$(($line_show_begin-1))
                ;;
                B)  # Arrow-Down-Key
                    (( "$line_show_begin" < "$line_last" )) && line_show_begin=$(($line_show_begin+1))
                ;;
                H)  # Pos1-Key
                    line_show_begin=1
                ;;
                F)  # End-Key
                    line_show_begin=$line_last
                ;;
                5)  # PgUp-Key
                    read -rsn1 -t $timeout_read k # char 4

                    if [[ "$k" == "~" ]] && (( "$line_show_begin" > "$(($console_lines/2))" )) ; then
                        line_show_begin=$(($line_show_begin-$console_lines/2))
                    else
                        line_show_begin=1
                    fi
                ;;
                6)  # PgDown-Key
                    read -rsn1 -t $timeout_read k # char 4
                    if [[ "$k" == "~" ]] && (( "$line_show_begin" < "$(($line_last-$console_lines/2))" )) ; then
                        line_show_begin=$(($line_show_begin+$console_lines/2))
                    else
                        line_show_begin=$line_last
                    fi
                ;;
            esac
            read -rsn4 -t $timeout_read    # Try to flush out other sequences ...
        ;;
    esac
done
  • создайте файл в ~/bin/cwatch.sh
nano ~/bin/cwatch.sh
  • измените свойства файла, чтобы сделать его работоспособным:
chmod +x ~/bin/cwatch.sh
  • отредактируйте ~/.bashrc и добавьте псевдоним
alias cwatch="~/bin/cwatch.sh"

теперь можете попробовать:

cwatch 'ps aux | grep -v grep'
0
ответ дан 26 June 2021 в 11:12

Теги

Похожие вопросы