Существуют многие программное обеспечение, которые включают файл конфигурации, такой как 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
Это было бы очень удобно.
Насколько я знаю, что Вы не можете буквально выключить символьную ссылку, или по крайней мере не простым способом. 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 ; }