Я хотел бы найти каждое устройство, у которого есть опция / файл повторного сканирования в / sys / devices (чтобы я мог изменять размер дисков на лету), но UNIX find, похоже, их не находит. Например:
# file /sys/class/block/sda/device/rescan
/sys/class/block/sda/device/rescan: writable, regular file, no read permission
Но:
# find /sys/class/block -name 'rescan'
Возвращается пустым.
Кроме того, find находит только родительское устройство, т.е.
# find /sys/class/block
/sys/class/block
/sys/class/block/fd0
/sys/class/block/sda
/sys/class/block/sr0
/sys/class/block/dm-0
/sys/class/block/dm-1
/sys/class/block/dm-2
/sys/class/block/sda1
/sys/class/block/sda2
/sys/class/block/sda3
Когда на самом деле под этими устройствами находится много опций / файлов (если вы знаете, где искать), например:
# ls -1 /sys/class/block/sda/device/
block
bsg
delete
device_blocked
device_busy
dh_state
driver
eh_timeout
evt_capacity_change_reported
evt_inquiry_change_reported
evt_lun_change_reported
evt_media_change
evt_mode_parameter_change_reported
evt_soft_threshold_reached
generic
inquiry
iocounterbits
iodone_cnt
ioerr_cnt
iorequest_cnt
modalias
model
power
queue_depth
queue_ramp_up_period
queue_type
rescan
rev
scsi_device
scsi_disk
scsi_generic
scsi_level
state
subsystem
timeout
type
uevent
unpriv_sgio
vendor
vpd_pg80
vpd_pg83
wwid
Заранее спасибо,
Патрик
Содержимое ниже / sys содержат много символических ссылок, например родительские устройства ты хочешь искать в / системный / класс / блок.
find
по умолчанию не следует по символическим ссылкам, что означает find
не будет искать в каталогах, содержащих символические ссылки.
Это поведение можно изменить с помощью -L
переключатель find
чтобы он переходил по символическим ссылкам.
Из-за характера / sys и множество символических ссылок в этой структуре каталогов, find
обнаружит петли файловой системы и сообщите об этом в командной строке на stderr
. Чтобы отфильтровать эти сообщения, вы можете запустить find
команду следующим образом.
find -L /sys/class/block -name 'rescan' 2> /dev/null