mv файл, не повреждая символьную ссылку на тот файл

изодромные с предварением файлы записаны некоторыми программами для записи их идентификатора процесса, в то время как они запускают. Это имеет несколько целей:

  • Это - сигнал к другим процессам и пользователям системы, что та конкретная программа работает или по крайней мере запустилась успешно.
  • Это позволяет писать сценарий, действительно легкий проверять, работает ли это, и выпустите плоскость kill управляйте, хотите ли Вы закончить его.
  • Это - дешевый путь к программе, чтобы видеть, не выходил ли предыдущий рабочий экземпляр его успешно.

Простое присутствие изодромного с предварением файла не гарантирует, что тот конкретный идентификатор процесса работает, конечно, таким образом, этот метод не является на 100% надежным, но "достаточно хорошим" в большом количестве экземпляров. Проверка, существует ли конкретный PID в таблице процессов, не является полностью портативной через подобные UNIX операционные системы, если Вы не хотите зависеть от ps утилита, которая не может быть желательной для вызова во все экземпляры (и я верю некоторой подобной UNIX реализации операционных систем ps по-другому так или иначе).

Файлы блокировки используются программами для обеспечения двух отдельных экземпляров (хорошего поведения) программы, которая может работать одновременно в одной системе, не получайте доступ к чему-то еще одновременно. Идея, прежде чем программа получает доступ к своему ресурсу, она проверяет на присутствие файла блокировки, и если файл блокировки существует, или ошибка, или ожидайте ее, чтобы уйти. Когда это не существует, программа, желающая "получать" ресурс, создает файл, и затем другие экземпляры, которые могли бы столкнуться позже, будут ожидать этого процесса, который будет сделан с ним. Конечно, это предполагает, что программа, "получающая" блокировку, на самом деле выпускает его и не забывает удалять файл блокировки.

Это работает, потому что файловая система под всеми подобными UNIX операционными системами осуществляет сериализацию, что означает, что только одно изменение в файловой системе на самом деле происходит в любой момент времени. Вид подобных блокировок с базами данных и таким.

25
23.08.2011, 19:16
3 ответа

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

Шаги 3 и 4 немного сбивают с толку. Если Вы хотите перенастроить существующие ссылки Вы сохраняющий то же имя, можно использовать ln -f перезаписывать существующие файлы. Если Вы хотите, чтобы название Ваших ссылок также изменилось для отражения нового целевого имени, последовательность корректна.

8
27.01.2020, 19:40
  • 1
    Heh, да, просто перечитал ту часть, и теперь я смутил меня также. Я настрою его так, это имеет больше смысла.Спасибо. –  gabe. 23.08.2011, 18:22
  • 2
    я немного смущен на использовании ln-f, но я думаю сценарий @fred отправленный, может помочь разъяснить, как это работает. Страница справочника не была большим количеством справки, удивительно. –  gabe. 23.08.2011, 19:17
  • 3
    @gabe. Исходная версия моего ответа имела корректное -s -f, но в то время как mofifying это, это "проиграло" -s: неправильно! Из Википедии: 'ln' без опций создает жесткую ссылку, 'ln-f' вызывает жесткую ссылку... так спасибо за вопрос, это действительно подтвердило синтаксис для меня теперь.. Это, конечно, заставило меня перепроверить вещи... Это требует ln -s -f.. (Я внес корректировку) –  Peter.O 23.08.2011, 20:12

Для Вашей ситуации:

# change target of a symbolic link
# -------------
# ln -s, --symbolic    make symbolic links instead of hard links
# ln -f, --force       remove existing destination files
#
# Setup: make junk.link to  file junk
  echo hello > ~/junk
  ln -s ~/junk ~/junk.link;  cat ~/junk.link
#
# move file and point the link to it.
  org="$(readlink ~/junk.link)"
  new="$org".moved
  mv "$org" "$new"
  ln -s -f "$new" "$new".link  # '-s' for a soft link
4
27.01.2020, 19:40
  • 1
    : это будет более сложно, если цепочка ссылок будет включена. –  Peter.O 23.08.2011, 21:09

У меня следующая проблема. Я нашел очень хорошую тему значков под названием «Suru++»

.

Suru++ 20 [официально ошибка -свободна и совместима с 11 DE -]

Но эта тема значков сделана в формате svg для всех изображений. Теперь я хочу использовать его в Fluxbox и создавать пункты меню, но это возможно только с изображением значка png Я загружаю мастер , внутри которого все значки в формате svg, и да, я могу преобразовать из командной строки svg в png, все в порядке для каждого размера папки, например 16x16, 24x24 px. Но в этих папках есть символические ссылки на файлы svg:

extensions svg inside symbolic links that I want to change to png

Если есть способ изменить расширение svg на png во всех ссылках symbolix, тема значков будет нормально работать в меню Fluxbox и файловых менеджерах. Я сделал запись об использовании этой темы значков в Xubuntu, но на испанском языке

Да благословит Бог

0
27.01.2020, 19:40

Теги

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