меньше с “файлом обновления” как функциональность

В удаленном сервере?

ssh my-remote-host/usr/local/bin/my-remote-script

Можно ограничить ssh для выполнения только одной команды с определенным ключом также, таким образом ограничив ключевое использование. См. http://pkeck.myweb.uga.edu/ssh/ для примеров

9
задан 7 November 2012 в 14:16
5 ответов

Хвост - твой друг. "tail -f filename" покажет вам новые строки, когда они появятся.

Или, если вы ищете изменения, сделанные в середине файла, возможно, запускайте сценарий каждые несколько минут, чтобы скопировать файл во временный местоположение и сравнить его?

-1
ответ дан 2 December 2019 в 22:33

Вы можете попробовать эту команду: хвост -f файл

-1
ответ дан 2 December 2019 в 22:33

Вы можете получить этот эффект, введя команду F ( Shift + F ) при просмотре файла в less . Чтобы прекратить подписку и вернуться к разбивке по страницам, нажмите Ctrl + C

Поскольку ваш файл изменяется только каждые 5 минут, вы также можете использовать tail -f и указать более длительное время ожидания с помощью ] -s (по умолчанию 1 секунда). Например,

tail -f -s 60 myfile

проверяет myfile на вывод каждые 60 секунд.

РЕДАКТИРОВАТЬ: Из-за вводящего в заблуждение вопроса приведенный выше ответ был неудовлетворительным. Далее следует вторая попытка:

Чтобы повторно открывать тот же файл в реже каждые 5 минут, попробуйте следующее:

while true; do ( sh -c 'sleep 600 && kill $PPID' & less myfile ); done

Это создаст подоболочку, которая создает фоновый фон для другого процесса оболочки, которому было поручено убить его родительский процесс через 5 минут. Затем он открывает файл с меньше . Когда команда фоновой оболочки уничтожает родительскую подоболочку, она уничтожает все ее дочерние элементы, включая команду «меньше». Затем цикл запускает процесс заново.

Единственный известный мне простой способ убить это - убить терминал, в котором находится ваша исходная оболочка. Если это неприемлемо, вы можете использовать уловку "killfile":

touch killfile
while [ -f killfile]; do stuff; done

Чтобы прекратить делать вещи , rm файл уничтожения в другой оболочке.

10
ответ дан 2 December 2019 в 22:33

Вы можете сделать нечто подобное в vim .

Запустите сеанс сервера vim :

vim -R --servername refresh_session

Затем в другой консоли проследите за обновлениями файла и сообщите сеанс vim для перезагрузки файла, как только он будет обновлен:

inotifywait -e close_write -m your_log_file | while read filename events; do
    vim --servername refresh_session --remote $filename
done

Несколько ошибок.

  • Это, конечно, не будет работать, если ваш vim не скомпилирован с функцией clientserver в.
  • inoifywait перестанет работать, когда файл будет удален. Так что я надеюсь, что ваш файл будет перезаписан. Конечно, это тоже можно обойти.

И если вы хотите получить больше меньше опыта, вы можете использовать макрос less , чтобы получить меньше привязок клавиш в vim .

/usr/share/vim/vim73/macros/less.sh --servername refresh_session
1
ответ дан 2 December 2019 в 22:33

Я нашел старую, но очень хорошую "менее" похожую программу ("пейджер" "). В нем есть команда «R», которая обновляет файл.

Она называется «lv» . Вы можете установить ее в Ubuntu, используя:

sudo apt install lv

Однако, похоже, что у нее нет функции автоматической перезагрузки.

0
ответ дан 2 December 2019 в 22:33

Теги

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