Я не держал бы пари на нем, особенно на занятой многопоточной системе, или если бы местоположение свалки находится на сетевой акции (незабываемо, преподаватель произвел бы основные файлы на 8 ГБ, которые должны были быть spooled Ethernet на более чем 10 мегабит через NFS). Атомарность файловой системы обычно требует блокировки или выполнения команды write-to-a-temporary-file-and-then- rename (1)
. Некоторые углубляющиеся в fs/coredump.c
для ядра linux 4,3,3 указывают на отсутствие таких трюков с блокировкой или переименованием, так как ядро определяет имя файла для использования (с условием несвязки гонки!), а затем инициализирует файл:
file_start_write(cprm.file);
core_dumped = binfmt->core_dump(&cprm);
file_end_write(cprm.file);
Поскольку, вероятно, нет гигантской блокировки ядра, чтобы предотвратить запуск других объектов на территории пользователя во время работы вышеперечисленного (это можно проверить, замедляя генерацию большого файла ядра, а затем видя, как ведет себя эта система), я не вижу ничего атомарного в этом процессе.
-121--12â9-
GRUB не знает, что вы удалили /boot
. Во время процесса загрузки GRUB загружается задолго до ядра и всегда должен выяснить, что происходит без удобства вещей, таких как смонтированные файловые системы. При установке GRUB указывается, где (как в разделе BIOS или EFI) найти файл конфигурации. Файл /etc/fstab
загружается и монтируются файловые системы только после передачи GRUB ядру.
-121--157299-
Похоже, что нет реальной альтернативы команде gnu time
. Итак, в конце концов я установил именно это. На OS X gnu-time можно установить с помощью homebrew: brew install gnu-time
. После этого загрузка ЦП для конкретной команды может быть измерена с помощью gtime
. Тест показывает, что моя программа действительно выполняется одновременно: 1 .73user 0 .13system 0: 01.61effaxed 115% CPU
.
Использовать косвенность:
function f() { if [ -z "${!1+x}" ]; then echo "$1 is unset"; else echo "$1 is set"; fi };
Это проверяет переменную, названную первым параметром функции. Вы можете захотеть -проверить работоспособность, чтобы пользователь предоставил аргумент функции.