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}'
Если 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
Мой предложенный набор команд (выше )изменяет это, чтобы вставить короткую задержку между вызовом двух, а также запускает клиент как фоновую задачу (, что не является строго необходимым ).