Наблюдайте файл с помощью мультихвоста, даже если он не был создан

Единственным путем Вы могли обработать, это должно будет иметь некоторую систему heartbeat между процессами. Например, первый процесс мог совместно использовать свой PID в общей памяти.

Последующие процессы могли объявить о себе путем отправки сигнала, такого как SIGUSR1. Затем они могли продолжать отправлять SIGUSR2 с промежутками как heartbeat. Два сигнала SIGUSR2 пропавших без вести подряд сказали бы Вам, что процесс умер. Необходимо было бы использовать sigqueue (2) sigaction (2) для передачи PID отправителя сигнала для этого для работы.

Иначе должен принять меры, чтобы другие процессы совместного использования были детьми первого процесса, который получит доступ к общей памяти. Затем смерть ребенка приводит к автоматическому SIGCHLD к родителю. Даже если Вам в настоящее время запускали процессы совместного использования независимо, Вы могли бы изменить их для передачи сигналов о первом процессе, что новый процесс хочет совместно использовать память. Затем первый процесс мог разветвить нового ребенка для принятия действия процесса, который хочет совместно использовать память, таким образом сохраняя родительские/дочерние отношения.

Лично, я сначала посмотрел бы на более современный метод IPC, такой как 0MQ (пойдите сюда и прочитайте руководство), прежде чем я попытался бы реализовать это с сервисами ядра UNIX. Я даже разочаровался бы в общей памяти и кэш-памяти использования для совместного использования данных. На самом деле я реализовал систему с несколькими процессами с помощью 0MQ для heartbeat и IPC и совместно использовав память через кэш-память.

5
03.09.2013, 01:05
1 ответ

Вы могли, возможно, использовать -iw опция. Это проверяет на новые файлы, соответствующие данному шаблону в данном интервале. Когда каждый найден, запускаются следующий за этим.

Например:

multitail -iw /tmp/mapserv.log 2

Искал бы файл /tmp/mapserv.log каждые 2 секунды. Если и когда это появляется, следуют за ним.

Это предназначено для взятия подстановочного знака в качестве в

-iw "/tmp/map*" 2 
# Quotes needed to prevent the shell to expand the pattern.

но работы для неподстановочного знака также. Число - то, как часто проверить на новые файлы, соответствующие шаблону.


Еще, touch мог, возможно, работать. Мог бы потребовать чего-то как su user -c 'touch ...' или a chown и т.д. после касания.

Если MapServer удаляет существующий mapserv.log на первом входе и не усеченный или добавляют Вас, возможно, также нуждался бы -f опция, как в:

Следуйте за следующим именем файла, не дескриптором.

3
27.01.2020, 20:41

Теги

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