Там какой-либо путь состоит в том, чтобы повернуть символьные ссылки включения - выключения ('ln-s')?

Существуют многие программное обеспечение, которые включают файл конфигурации, такой как nginx, супервизор.

Например, я имею ниже конфигурации:

[include]
files = /mnt/etc/supervisor/conf.d/*.conf

Реальные конфигурации расположены в /mnt/etc/supervisor/avail/*.conf Я использую ln -s /mnt/etc/supervisor/avail/a.conf /mnt/etc/supervisor/conf.d/a.conf включить конфигурацию.

Но это является раздражающим, что я должен удалить или воссоздать ту ссылку, когда выключают или включают одну конфигурацию.

Есть ли любой путь, которые сохраняют /mnt/etc/supervisor/conf.d/a.conf существует, и измените состояние канала? Возможно, как:

$ cd /mnt/etc/supervisor/conf.d/
$ ls -al
lrwxrwxrwx 1 root root   21 Aug 12 09:02 a.conf -> ../avail/a.conf
$ linkoff a.conf
$ ls -al
lrwxrwxrwx 1 root root   21 Aug 12 09:02 a.conf
$ linkon a.conf
$ ls -al
lrwxrwxrwx 1 root root   21 Aug 12 09:02 a.conf -> ../avail/a.conf

Это было бы очень удобно.

2
задан 12 September 2016 в 09:45

1 ответ

Насколько я знаю, что Вы не можете буквально выключить символьную ссылку, или по крайней мере не простым способом. symlinkness символьной ссылки является метаданными, сохраненными в его inode, и я не знаю о простом способе записать в inode для изменения типа файла.

Вместо того, чтобы удалить и воссоздать каждый раз, могло бы быть легче mv символьные ссылки на названный подкаталог off в conf.d каталог для повреждения их так, они больше не работали бы (потому что они используют относительные пути), и затем mv их назад в conf.d каталог. Вы могли сделать этот процесс легче путем создания функций...

Создание функций удара включения - выключения

Для каждого каталога конфигурации Вы хотите использовать эти функции на, необходимо будет создать off каталог в том каталоге сначала, например:

mkdir /mnt/etc/supervisor/conf.d/off

Затем, создайте крошечные функции удара для перемещения символьных ссылок, которые работали бы только в каталоге (conf.d здесь)

Добавьте эти строки в конец Вашего ~/.bashrc затем введите source ~/.bashrc

linkoff() { mv "$1" off ; }
linkon() { mv off/"$1" . ; }

Теперь можно ввести linkoff a.conf кому: mv a.conf кому: off и деактивируйте его, и linkon a.conf поворачиваться a.conf назад на, пока Вы выполняете в этом conf.d каталог

Если у Вас есть только один conf.d каталог, где необходимо использовать это, Вы могли сделать linkoff a.conf работайте везде путем создания функций с полными путями:

linkoff() { mv /mnt/etc/supervisor/conf.d/"$1" /mnt/etc/supervisor/conf.d/off ; }
linkon() { mv /mnt/etc/supervisor/conf.d/off/"$1" /mnt/etc/supervisor/conf.d ; }
11
ответ дан 2 December 2019 в 01:27

Другие вопросы по тегам:

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