У меня есть этот Баш скрипт:`пер -s` в скрипте действует как` cp`
ACTIVE_DB=$(grep -P "^[ \t]*db.active" config.properties | cut -d= -f2 | tr -s " ")
echo $ACTIVE_DB
if [ "$ACTIVE_DB" = "A" ]
then
ln -sf config-b.properties config.properties
else
ln -sf config-a.properties config.properties
fi
config-a.properties
db.active = A
конфиг-б. свойства
db.active = B
Когда я запускаю сценарий, py (= cp
), и config.properties
часто не является символической ссылкой (и физической ссылкой, если на то пошло), а целый новый файл с тем же содержимым, что и config-a.properties
или config-b.properties
.
$ ls -li
53 -rw-r--r-- 1 ogregoir ogregoir 582 Sep 30 15:41 config-a.properties
54 -rw-r--r-- 1 ogregoir ogregoir 582 Sep 30 15:41 config-b.properties
56 -rw-r--r-- 1 ogregoir ogregoir 582 Oct 2 11:28 config.properties
Когда я запускаю это в строке вручную построчно, у меня нет никаких проблем и символическая ссылка действительно всегда создается и config.properties
точек в направлении config-a.properties
или config-b.properties
.
$ ls -li
53 -rw-r--r-- 1 ogregoir ogregoir 582 Sep 30 15:41 config-a.properties
54 -rw-r--r-- 1 ogregoir ogregoir 582 Sep 30 15:41 config-b.properties
55 lrwxrwxrwx 1 ogregoir ogregoir 20 Oct 2 11:41 config.properties -> config-b.properties
Примечания
- Файл не открыт в другом месте (я единственный активный пользователь и приложение с помощью конфигурации не работает).
- Иногда
ln -sf
действует нормально, но обычным правилом является то, что он делает бумажную копию. - Сценарий запускается из другого каталога, но
cd
s в каталог, где находятся файлыconfig*.properties
, прежде чем выполнять действия здесь. - Скрипт намного длиннее, но это самый короткий пример, который воспроизводит ошибку.
bash
версия 4.1.2 (это локально, поэтому меня не интересует shellshock).ln
версия 8.4.- Операционная система: Red Hat Enterprise Linux Server release 6.5 (Сантьяго).
- Файловая система, используемая для этой папки: ext4.
Вопрос
- Почему не мой сценарий последовательно создать символическую ссылку, но делает бумажную копию?
- Как заставить символическую ссылку здесь?
Команда 'ln' будет * не * создавать копию. Никогда – hek2mgl
Да, я могу читать 'man ln', но все же он ... случайно! –
Какая ОС и какая файловая система? – Cyrus