В системе без заголовка Ubuntu 16.04 у меня есть две директории. Я хочу, чтобы cronjob перемещал каждый файл из каталога A в каталог B (тот же раздел, тот же жесткий диск, та же файловая система и т. Д.). Проблема в том, что / могут быть: файлы будут довольно большими, и по некоторым причинам cronjob должен запускаться довольно часто, как каждую минуту или около того.
Таким образом, вполне вероятен следующий сценарий: cronjob запускается для в первый раз находит большой файл в каталоге A, начинает перемещать его в каталог B. Пока процесс mv все еще запущен, cronjob выполняется во второй раз. Это вызовет проблемы?
Я нашел этот вопрос и ansers. Что происходит, когда несколько процессов пытаются mv одни и те же файлы между двумя разными файловыми системами, но я думаю, что это касается процессов с одновременным запуском. Надеюсь, у кронов есть способ предотвратить нежелательное поведение.
Это может быть да.
Как правило, я бы советовал создать скрипт, установить в этом скрипте блокировку исключения (MUTEX) и прекратить выполнение скрипта, если существует блокировка и удалить блокировка, когда «mv» выполняется с первой cronjob.
Очень простой пример:
if mkdir /var/lock/mylock; then
mv your_file /to/a/directory/
rm -rf /var/lock/mylock
else
exit 1
fi
Это может быть да.
Как правило, я бы советовал создать скрипт, установить в этом скрипте блокировку исключения (MUTEX) и прекратить выполнение скрипта, если существует блокировка и удалить блокировка, когда «mv» выполняется с первой cronjob.
Очень простой пример:
if mkdir /var/lock/mylock; then
mv your_file /to/a/directory/
rm -rf /var/lock/mylock
else
exit 1
fi
Это может быть да.
Как правило, я бы советовал создать скрипт, установить в этом скрипте блокировку исключения (MUTEX) и прекратить выполнение скрипта, если существует блокировка и удалить блокировка, когда «mv» выполняется с первой cronjob.
Очень простой пример:
if mkdir /var/lock/mylock; then
mv your_file /to/a/directory/
rm -rf /var/lock/mylock
else
exit 1
fi