Да, это возможно, если вы удалите и заново -создадите свой раздел из того же сектора. Система не выполняет «полный формат» при создании файловой системы. Кстати, вы можете сделать то же самое, чтобы расширить раздел. Удалите и создайте заново, начиная с того же сектора и заканчивая другим
Наиболее распространенное состояние гонки такого типа, которое я вижу на этом сайте, связано с обработкой идентификаторов процессов (PID )и сигнализацией на их основе.
Кто-то может использовать ps
+ grep
, чтобы получить PID для некоторого именованного процесса, а затем kill
, чтобы сигнализировать об этом. Между получением PID и его сигнализацией PID мог исчезнуть. Использование pkill
минимизирует окно для возникновения этой ошибки.
В других сценариях удержание PID и ожидание, что он всегда будет ссылаться на один и тот же процесс в течение длительного периода времени (, например, в «файле PID» ), может привести к отправке сигналов. к неправильным процессам. Это связано с тем, что все системы Unix повторно используют идентификаторы PID.
Другой распространенной проблемой является блокировка файлов, то есть использование файловой системы для обеспечения механизма блокировки для синхронизации нескольких процессов и критических разделов. Например, можно проверить, существует ли какой-либо «файл блокировки», и если нет, создать его и тем самым «получить блокировку». В -между проверкой существования файла и созданием файла блокировки есть возможность для другого процесса также понять, что файл блокировки не существует :
while [ -e "$lockfile" ]; do
sleep 10
done
touch "$lockfile"
echo 'got lock' # or did I?
# do work
rm -f "$lockfile"
Решение в этом случае заключается в использовании специального инструмента блокировки файлов -, такого как flock
,или использовать блокировку каталога , так как mkdir
является атомарным:
while ! mkdir "$lockdir" 2>/dev/null; do
sleep 10
done
echo 'got lock'
# do work
rmdir "$lockdir"
Это по-прежнему не будет надежно работать в сетевых файловых системах, таких как NFS, поскольку они не обеспечивают атомарных операций для создания каталогов.
Несомненно, есть много других примеров.