Вывод 'часов' управляет как список

Попытайтесь отсоединить его сначала с screen -d. Если это не работает, можно попробовать в увеличивающемся порядке акцента,

   -d|-D [pid.tty.host]
        does  not  start screen, but detaches the elsewhere running screen session. It has the
        same effect as typing "C-a d" from screen's controlling terminal. -D is the equivalent
        to  the  power  detach key.  If no session can be detached, this option is ignored. In
        combination with the -r/-R option more powerful effects can be achieved:

   -d -r   Reattach a session and if necessary detach it first.

   -d -R   Reattach a session and if necessary detach or even create it first.

   -d -RR  Reattach a session and if necessary detach or create it. Use the first  session  if
           more than one session is available.

   -D -r   Reattach a session. If necessary detach and logout remotely first.

   -D -R   Attach  here and now. In detail this means: If a session is running, then reattach.
           If necessary detach and logout remotely first.  If it was not running create it and
           notify the user. This is the author's favorite.

   -D -RR  Attach here and now. Whatever that means, just do it.
27
19.11.2012, 12:48
6 ответов

Можно использовать -t переключатель к watch который заставляет это не печатать заголовок. Однако это все еще очистит экран, таким образом, Вы могли бы быть более обеспечены с простым циклом оболочки:

while sleep 1; do
    wc -l my.log
done

Одно из преимуществ, что можно легко добавить другие команды (например. date) и/или передайте вывод по каналу через sed переформатировать его. Между прочим, если Вы подкачиваете sleep 1 с wc в цикле это автоматически завершится на ошибках.

24
27.01.2020, 19:39
  • 1
    Однако обратите внимание, что это не будет делать этого точно каждую секунду (с zsh или ksh93, Вы могли скорректировать время сна, чтобы объяснить дрейф, понесенный путем выполнения команд в цикле, хотя) –  Stéphane Chazelas 19.11.2012, 13:51
  • 2
    @StephaneChazelas, ни будет он с wait - просто попробуйте watch -n 1 "sleep 5". –  peterph 19.11.2012, 14:26
  • 3
    Действительно (я проверил и procps и busybox реализации). Я думал, что это было единственной вещью watch было полезно для, но это не дает Вам даже, что, таким образом, Ваше решение так хорошо, как часы базировались один, но никакой ответы "уровень, на котором файл журнала выращивает" вопрос с большой точностью. –  Stéphane Chazelas 19.11.2012, 15:22
  • 4
    Ну, если строки в минуту являются конечной целью, то выборка ее один раз в 10 секунд более чем достаточно, по моему скромному мнению - таким образом, издержки не настолько ужасны (если файл не становится действительно большим, конечно). И на самом деле из цикла, можно распечатать информацию синхронизации (даже и прежде и после концов команды при необходимости), и затем точность может стать лучше (порядки величины) даже для больших файлов. примечание –  peterph 19.11.2012, 15:28
  • 5
    @peterph watch имеет a -p опция, которая сделает это правильно, если вообще возможный (очевидно, Вы не можете сделать команды, которая занимает 5 секунд каждая 1 секунда, если Нельзя несколько одновременных). Я знаю, я записал этому :-P –  derobert 19.06.2014, 20:46

Как насчет

tail -f file.log | pv -rl > /dev/null
3
27.01.2020, 19:39

Старый вопрос, но я просто нашел очень легкий ответ:

watch -n1 'wc -l my.log | tee -a statistics.log'

Это выполнит Ваш wc каждую секунду добавьте его вывод к файлу statistics.log и также покажите его на экране.
Так, Вы закончите с файлом, заполненным числами, представляя последовательное количество строк my.log.

8
27.01.2020, 19:39

Попробуйте следующее:

watch -n1 'wc -l my.log >> statistics.log'
3
27.01.2020, 19:39

Вы можете создать сценарий, который сделает это за вас. Я назвал свой keep (например, продолжайте делать это) и поместил его в путь bin .

Это мой сценарий:

#!/bin/bash
echo "Repeating command $* every second"
while sleep 1; do
    "$@"
done
1
27.01.2020, 19:39

Encontré esta pregunta cuando estaba tratando de obtener una salida mejor/registrada de du -sh $data_path. Usé el patrón "while command, do sleep" que se encuentra aquí, pero usé un AWK complejo para dar el resultado que quería.

while du -sh $data_path; do sleep 1; done | awk '
$1 != size {
    size=$1;
    path=$2;
    time=systime();
    seconds=time-prevtime;
    if(seconds < 1000000000){
        seconds=seconds" seconds"
    }else{
        seconds=""
    }
    print size, path, strftime("%m/%d/%Y@%H:%M:%S", time), seconds; 
    prevtime=time
}'

De hecho, hice esto como una sola línea, por lo que hay punto y coma. Pero para hacerlo legible, lo rompí. La salida se ve como:

502G /var/lib/cassandra/dump/ 05/22/2018@04:46:17
503G /var/lib/cassandra/dump/ 05/22/2018@04:46:59 42 seconds
504G /var/lib/cassandra/dump/ 05/22/2018@04:47:57 58 seconds
505G /var/lib/cassandra/dump/ 05/22/2018@04:48:55 58 seconds
506G /var/lib/cassandra/dump/ 05/22/2018@04:49:53 58 seconds
507G /var/lib/cassandra/dump/ 05/22/2018@04:50:50 57 seconds
508G /var/lib/cassandra/dump/ 05/22/2018@04:51:46 56 seconds
509G /var/lib/cassandra/dump/ 05/22/2018@04:52:44 58 seconds
510G /var/lib/cassandra/dump/ 05/22/2018@04:53:41 57 seconds
1
27.01.2020, 19:39

Теги

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