Действительно ли возможно уведомить/предупредить, что текущий путь больше не является допустимой символьной ссылкой?

В интересах хранения простых вещей я выполнил ежедневное задание крона, которое связывает вчерашние файлы журнала в один файл (например, yesterday.log), и на успехе удаляет их и затем выполненный logrotate к (ре) имя, и сожмите тот файл. Вы смогли принуждать logrotate в выполнение целого использования задачи sharedscripts но я не думаю так, и я не напрасно тратил бы время, пытаясь понять это.

4
31.05.2014, 00:37
2 ответа

Вот подход, который использует то, что удар действительно управляет расширением на $PS1 протестировать, чтобы видеть если . и $PWD имейте тот же inode в подсказке:

PS1='$([[ $(stat -Lc%i $PWD 2>/dev/null) == $(stat -c%i .) ]] || echo "\[\e[1;31m\]PWD invalid or changed \[\e[m\]")'"$PS1"
2
27.01.2020, 20:56

Я не полагаю, что существует любой способ выполнить это только с регулярным Bash. Вы могли установить inotify так, чтобы это смотрело бы данный каталог и затем уведомило бы пользователя, обычно по электронной почте, но существуют вероятные способы передать эти сообщения по каналу назад в оболочку/среду пользователя.

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

Пример

Терминал № 1:

$ mkdir $HOME/tst
$ inotifywait -mr $HOME/tst
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.

Терминал № 2:

$ mkdir somedir

Терминал № 1:

/home/saml/tst/ CREATE,ISDIR somedir
/home/saml/tst/ OPEN,ISDIR somedir
/home/saml/tst/ CLOSE_NOWRITE,CLOSE,ISDIR somedir

Терминал № 2:

$ rmdir somedir

Терминал № 1:

/home/saml/tst/ DELETE,ISDIR somedir
/home/saml/tst/somedir/ DELETE_SELF
2
27.01.2020, 20:56

Теги

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