В удаленном сервере?
ssh my-remote-host/usr/local/bin/my-remote-script
Можно ограничить ssh для выполнения только одной команды с определенным ключом также, таким образом ограничив ключевое использование. См. http://pkeck.myweb.uga.edu/ssh/ для примеров
Хвост - твой друг. "tail -f filename" покажет вам новые строки, когда они появятся.
Или, если вы ищете изменения, сделанные в середине файла, возможно, запускайте сценарий каждые несколько минут, чтобы скопировать файл во временный местоположение и сравнить его?
Вы можете получить этот эффект, введя команду 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
файл уничтожения в другой оболочке.
Вы можете сделать нечто подобное в 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
Я нашел старую, но очень хорошую "менее" похожую программу ("пейджер" "). В нем есть команда «R», которая обновляет файл.
Она называется «lv» . Вы можете установить ее в Ubuntu, используя:
sudo apt install lv
Однако, похоже, что у нее нет функции автоматической перезагрузки.