Я думаю, вы просите более сложный сценарий. Вы не описали, как определить «последний» прибывший файл, поэтому он просто истекает через 5 секунд бездействия файла, поскольку по крайней мере один файл был передан.
Подождите, пока флаг == не будет выполнено _
Пусковой контур
rsync
)Поскольку нам нужен IPC между основным процессом и параллельным inotifywait
процессом, я бы рассмотрел реализацию флага в виде файла, возможно, даже набора имен файлов.
Насколько я могу судить, непросто определить, передал ли rsync
новые файлы. Возможно, вам потребуется сравнить содержимое целевого каталога до и после.
Я полагаю, что ОП пытается создать запланированную задачу в Linux из сценария оболочки.
Из того, что они опубликовали, даже отдаленно не ясно, какая именно задача и почему, но обычно это может быть достигнуто путем автоматизации "crontab" из сценария оболочки.
Для этого требуются некоторые относительно продвинутые методы написания сценариев оболочки, поэтому, вероятно, это не рекомендуется для новичков в написании сценариев оболочки.
Примером того, как это можно сделать, является:
#!/bin/bash
# Create empty temporary file with safe name
TEMPFILE=$(mktemp)
# Put current crontab for user into the temporary file
crontab -l > $TEMPFILE
# Append new command to end of the created file using a shell 'here document'
cat << EOF >> $TEMPFILE
0 0 * * * /bin/df > /tmp/df-date-$(date +%d%b%Y)
EOF
# Load the new extended file in as the crontab for the user
crontab $TEMPFILE
Это всего лишь пример, а не то, что следует копировать напрямую. -Используйте его, чтобы исследовать каждую из демонстрируемых концепций и понимать их.
Возможны проблемы, если у пользователя еще нет файла crontab. Согласно справочной странице man 5 crontab
в моей системе, другая проблема заключается в том, что некоторые версии Linux crontab -l
добавляют строку заголовка, что означает, что crontab -l | crontab -
(, т.е. попытка экспортировать и повторно импортировать одни и те же данные ), будет продолжать добавлять дополнительные строки заголовка..
Также присутствует состояние гонки -возможно, что crontab для пользователя может быть отредактирован другим процессом между строкой crontab -l
и строкой в конце для повторного -импорта crontab. Но я видел вещи, похожие на этот процесс, успешно используемые в живых средах.
Значение строки 0 0 * * * /bin/df > /tmp/df-date-$(date +%d%b%Y)
см. в документации по cron
и crontab
. Результатом моего примера будет создание файла в /tmp
с выводом команды df
из системы один раз в день.