Задержка, вероятно, вызвана udisk2
& udev.
$ ps -eaf|grep [u]disk
root 17041 1 0 09:48 ? 00:00:00 /usr/libexec/udisks2/udisksd
Может запрашивать устройства хранения вот так:
$ udisksctl status
MODEL REVISION SERIAL DEVICE
--------------------------------------------------------------------------
VBOX HARDDISK 1.0 VBc5aaf476-f419b1f1 sda
Если вы посмотрите на процесс udisk2
:
$ lsof -p $(pidof udisksd) | tail
udisksd 17041 root 3u unix 0xffff88003a49d400 0t0 611852 socket
udisksd 17041 root 4u a_inode 0,9 0 4852 [eventfd]
udisksd 17041 root 5u a_inode 0,9 0 4852 [eventfd]
udisksd 17041 root 6u unix 0xffff88003a49c000 0t0 611853 socket
udisksd 17041 root 7u a_inode 0,9 0 4852 [eventfd]
udisksd 17041 root 8r REG 0,3 0 611907 /proc/17041/mountinfo
udisksd 17041 root 9r REG 0,3 0 4026532019 /proc/swaps
udisksd 17041 root 10r a_inode 0,9 0 4852 inotify
udisksd 17041 root 11u netlink 0t0 611910 KOBJECT_UEVENT
udisksd 17041 root 12u a_inode 0,9 0 4852 [eventfd]
Там не так много всего, главное, что бросается в глаза, это inotify
. Всякий раз, когда я это вижу, я сразу же думаю об udev.
$ find /etc/udev/rules.d/ /usr/lib/udev/rules.d | grep sto
/usr/lib/udev/rules.d/90-alsa-restore.rules
/usr/lib/udev/rules.d/60-persistent-storage.rules
/usr/lib/udev/rules.d/60-persistent-storage-tape.rules
Второй файл выглядит интересно, загляните внутрь. Эта строка выглядит как причина:
$ cat /usr/lib/udev/rules.d/60-persistent-storage.rules
...
# enable in-kernel media-presence polling
ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_poll_msecs}=="0", ATTR{parameters/events_dfl_poll_msecs}="2000"
ATTR{parameters/events_dfl_poll_msecs}=="0", ATTR{parameters/events_dfl_poll_msecs}="2000"
Существует команда install
из GNU coreutils
с опцией -D
, которая может копировать файл и создавать каталоги, ведущие к ним, за один раз (, а также позволяет указать владельца и разрешения ). По умолчанию он создает исполняемые файлы и не учитывает umask, поскольку он обычно используется в качестве инструмента разработки на этапах make install
.
install -m u=rw,go=r -D /dev/null some/new/file
(разрешения компонентов каталога, которые он создает, всегдаu=rwx,go=rx
).
Или вы всегда можете реализовать это как create
функцию Zsh, такую как:
create() {
local file ret=0
for file do
mkdir -p -- "$file:h" && true >> "$file" || ret=$?
done
return "$ret"
}
Хотя создание пустого обычного файла кажется мне немного бессмысленным.
Как правило, вы бы сделали:
mkdir -p some/dir
your-editor some/dir/some-file
Чтобы создать некоторый -файл (, файл будет создан, как только вы сохраните его (с фактическим содержимым )в вашем редакторе ).
Или любая другая команда, создающая контент, например:
some-command > some/dir/some-file
wget -o some/dir/some-file https://example.com/whatever
cp source some/dir/some-file
...etc.