Для чего pid и блокирует файлы?

Я рекомендую смотреть на страницу справочника иерархии файловой системы:

man hier

который является также доступен онлайн, например: http://linux.die.net/man/7/hier. Соответствующие части были скопированы ниже. В зависимости от Вашей системы это может сказать что-то другое.

Имя:

    hier - описание иерархии файловой системы

Описание

    Типичная система Linux имеет, среди других, следующих каталогов:

    /bin
      Этот каталог содержит исполняемые программы, которые необходимы в однопользовательском режиме и поднять систему или восстановить его.
       
    /sbin
      Как /bin, этот каталог содержит команды, должен был загрузить систему, но которые обычно не выполняются обычными пользователями.
       
    /usr/bin
      Это - основной каталог для исполняемых программ. Большинство программ, выполненных обычными пользователями, которые не нужны для начальной загрузки или для восстановления системы и которые не установлены локально, должно быть помещено в этот каталог.
       
    /usr/local/bin
      Двоичные файлы для программ, локальных для сайта.
       
    /usr/local/sbin
      Локально установленные программы для системного администрирования.
       
    /usr/sbin
      Этот каталог содержит двоичные файлы программы для системного администрирования, которые не важны для процесса начальной загрузки для монтирования /usr, или для системного восстановления.

78
08.05.2011, 04:34
3 ответа

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

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

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

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

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

88
27.01.2020, 19:30
  • 1
    Это корректно, если файл блокировки вручную не удален. VMware Player показывает этот behaivor, например, если VMware Player отказывает, необходимо удалить a .lck файл в каталоге VM иначе, который это скажет Вам, он используется, когда Вы пытаетесь запустить его. –  LawrenceC 11.06.2014, 17:04
  • 2
    Что относительно Windows? Как это обрабатывает .lock файлы? В конце концов, это не подобно Unix. –  SarahofGaia 16.09.2015, 00:32
  • 3
    я не думаю, что Windows-программам свойственно проложить себе путь. Единственные программы с этим поведением, которое я видел, являются портами от Unix/Linux –  HaMster 23.02.2016, 14:20
  • 4
    LawrenceC, Ре, "Когда это не существует, программа, желающая "получать" ресурс, создает файл"; Но существуют надлежащие функции, конкретно созданные, чтобы сделать такую синхронизацию. Почему бы не полагаться на те функции вместо того, чтобы использовать "взлом файла"? –  Pacerier 15.04.2016, 18:26
  • 5
    @Pacerier - Файлы Блокировки этим способом, вероятно, чаще используются вещами как сценарии оболочки или программы, которые могли бы взаимодействовать со сценариями оболочки, так как оболочки Unix/Linux взаимодействуют с файловой системой очень легко, по сравнению с другими примитивами синхронизации. Файлы также легко сохраняются через разрозненные процессы. Высокопроизводительная программа, очевидно, вероятно, предпочла бы, чтобы собственные примитивы ОС по сравнению с файлами синхронизировали вещи внутренне или даже по сравнению с другими процессами, которые не являются оболочками. –  LawrenceC 03.05.2016, 23:01

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

14
27.01.2020, 19:30
  • 1
    +1, Объясняющий использование наличия и файл блокировки и изодромный с предварением файл. –  Kyle Krull 06.10.2015, 05:00
  • 2
    @Caleb - Объясните, почему и файл PID и файл блокировки использовались бы. Кажется, что файл PID был бы достаточен. Если файл PID существует, PID мог бы быть проверен, чтобы видеть, работает ли процесс, просто делает меньше шагов, чем проверка на lockfile, проверяющий на файл PID и затем проверяющий существование процесса. –  MVaughan 25.01.2017, 18:57
  • 3
    @MVaughan Для предотвращения условий состязания, если ничто иное. Некоторые приложения имеют использование в течение многих времен, когда тихая потребность PID, но может оставить блокировку. Но на более фундаментальном уровне при перегрузке одного файла для обеих операций, Вы открываете дверь в отказы, такие как катастрофический отказ, оставляя непоследовательное состояние в системе. –  Caleb 25.01.2017, 23:06

Файл PID будет содержать идентификатор Процесса рабочего процесса. Это имеет различное использование; можно считать его и проверить, что процесс все еще работает, и примите соответствующие меры или считайте их и уничтожьте процесс.

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

8
27.01.2020, 19:30

Теги

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