Используйте сценарий запуска сессии входа в систему ~/.xprofile
создать некоторый файл флага для Вас. Будьте этим ~/.xlogin_flag
, затем в Вашем другом использовании сценария inotifywatch
от пакета inotify-tools
видеть, что он создан, затронутый или удален.
работает хорошо для меня, когда Глядя на файл, который прилагается, но не когда вход происходит из трубы (используя команду f
- Control-C работает нормально).
См. Обсуждение в Следуйте за трубкой, используя меньше? - это известная ошибка / недостатка в меньше
.
Is there any way to exit “less” follow mode without ^C?
Да, , начиная с версии 569, можно выйти из режима отслеживания с помощью CTRL + X , что не останавливает другие процессы в канале.
Для более ранних версий less (с поддержкой только CTRL + C)можно настроить так, чтобы сигнал SIGINT, отправляемый при нажатии CTRL + C не влияет на другие процессы в канале, что позволяет им продолжать работу. Этого можно добиться, выполнив любое из следующих действий:
(setsid seq 10000000) | less +F
(trap '' INT; seq 10000000) | less +F
less -f +F <(seq 10000000)
(seq 10000000 &) | less +F
Для наблюдения за влиянием вышеперечисленных команд на группы процессов и обработку сигналов я предлагаю использовать команду ps -O ppid,pgrp,sid,ignored --forest -C bash,less,seq
в отдельном терминале.
( your_input_pipeline & ) | less +F
и
{ your_input_pipeline & } | less +F
, кажется, работает в Bash. Это также работает в Zsh и Dash, за исключением того, что сигнал INT распространяется на вмещающую оболочку после выхода less
. Не работает в Кш.
Тестовая конфигурация:
GNU bash 5.0.17
dash 0.5.10.2-6 (package version in Ubuntu Linux)
zsh 5.8
less 551
Возможно, самый простой ответ:
trap '' INT
your_input_pipeline | less +F
# you may want to restore or define new INT trap here
echo still in the shell
Это также предотвращает прерывание внешней оболочки, что может произойти с другими ответами, если оболочка не Bash.