Производитель подключается к потребителю через сокеты домена unix

How can we enforce that files use the same inode numbers for files across storage devices?

Вы не можете.

С другой стороны, теперь, когда вы охарактеризовали свое требование,

Each file should have a record in the form: ID: 5683958754 Date: xxxx-xx-xx Tags: picture, message ordoc Action: store Origin: client x or web-page www.sample.com...

вы можете использовать поля, разделенные табуляцией -, и использовать grepили awk, чтобы выбрать их из простого файла. Гораздо больше, чем это, и я бы предложил как минимум sqlite. Но затем мы действительно входим в архитектуру приложений.

Я бы подумал о чем-то подобном

id <tab> date-in-seconds <tab> tag1,tag2,tag <tab> action <tab> filename <tab> filepath <tab> origin

Затем вы можете ввести ключ по идентификатору

id=1234
awk -F$'\t' id="$id" '$1==id {print $6}'

Или по имени файла

filename='rhubarb.txt'
awk -F$'\t' key="$filename" '$5==key {print $6}'

Или даже по диапазону дат

mindate=$(date --utc --date '1 mar 2019 19:00' +%s)
awk -F$'\t' key="$mindate" '$2>key {print $6}'
-1
01.08.2019, 15:37
1 ответ

Если producer-clientи consumer-serverобщаются не через канал, а через сокет, их не следует запускать в конвейере.

Вместо этого

consumer-server &
sleep 2
producer-client &

wait

Это запустит сервер в качестве фонового задания, подождет две секунды, пока сервер все инициализирует, а затем запустит клиент в качестве фонового задания. Затем сценарий ожидает завершения обоих.

Как вы сами предполагаете, клиент также может просто дождаться появления файла сокета, здесь не используяinotify:

consumer-server &

while [ ! -S /path/to/socket ]; do
    echo Waiting for socket to appear... >&2
    sleep 1
done
producer-client &

wait

Петля while(или эквивалентная вещь)также может быть частью того, что producer-clientделает внутри.


Если сервер и клиент не обмениваются данными по каналу, то ваш конвейер

producer-client | consumer-server

по сути то же самое, что и

producer-client &
consumer-server

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

1
28.01.2020, 05:09

Теги

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