Как команды, такие как FDISK -L, находят размер сектора?

Импорт ImageMagick может сделать скриншот корня Xorg автоматически и с помощью -crop будет использоваться только требуемая деталь. xrandr предоставляет параметр для crop .

Чтобы минимизировать накладные расходы, необходимо создать команду import один раз, а не запрашивать отображаемое имя при каждом выполнении скриншота:

mapfile -t displays < <(xrandr | grep ' connected')
get_date='`date +"%Y%m%d-%H%M%S"`'
for (( i=0; i<${#displays[@]}; i++)); do
  name=`echo ${displays[i]} | cut -d " " -f 1`
  crop=`echo ${displays[i]} | cut -d " " -f 3`
  echo import -silent -window root -crop ${crop} \"${name}-${get_date}.png\"
done

Объяснение файла mapfile и цикла можно найти в этом вопросе .

Это даст следующие команды:

import -silent -window root -crop 1920x1080+0+0 "DFP5-`date +"%Y%m%d-%H%M%S"`.png"
import -silent -window root -crop 1920x1080+1920+0 "DFP7-`date +"%Y%m%d-%H%M%S"`.png"

, которые теперь можно использовать в цикле времени (остановитесь с помощью ctrl + c ).

while [ 1 ]; do
  import ...
  sleep 1 # for 1 second delay between screenshots
done

Это единственный метод, который я знаю. Надеюсь, есть способы с меньшими накладными расходами.

-121--105092-

Адаптировано из https://stackoverflow.com/questions/10163675/merge-xml-files-in-php

$doc1 = new DOMDocument();
$doc1->load('xml1.xml');

$doc2 = new DOMDocument();
$doc2->load('xml2.xml');

// get 'app' element of document 1
$app1 = $doc1->getElementsByTagName('app')->item(0);

// iterate over 'bbb' elements of document 2
$items2 = $doc2->getElementsByTagName('bbb');
for ($i = 0; $i < $items2->length; $i ++) {
    $item2 = $items2->item($i);

    // import/copy item from document 2 to document 1
    $item1 = $doc1->importNode($item2, true);

    // append imported item to document 1 'app' element
    $app1 ->appendChild($item1);

}
$doc1->save('merged.xml');

-121--184706-

Чтобы ответить на вопрос: Когда полезно разрешить пользователю делать sudo su, но не sudo su -?

Дефис после su , но перед username дает команду su разрешить текущему пользователю наследовать среду username. До тех пор, пока среда clarkkent имеет необходимые переменные среды, настроенные для выполнения как superman , нет необходимости запускать sudo su - superman .

Правдоподобная "причина" НЕ разрешать sudo su - superman может заключаться в том, что системный администратор считает, что sudo su - superman создает угрозу безопасности. Это связано с тем, что sudo su - без указания имени пользователя предписывает системе войти в систему как пользователь root , чего, вероятно, пытается избежать системный администратор. Я на самом деле не знаю наверняка добавление дефис создает этот риск, или нет, но я думаю, что когда дело доходит до безопасности, это лучше, чем извините .

Как этот параметр устанавливается/отменяется?

Конфигурация определяется в файле /etc/sudoers .

5
01.11.2018, 21:31
2 ответа

Размер сектора устройства не сохраняется в MBR.

Команды пользовательского пространства, такие как fdisk, используют BLKBSZGETиBLKSSZGETioctlдля получения размеров секторов с дисков. Эти ioctlобрабатываются драйверами в ядре, которые извлекают соответствующую информацию с самих дисков.

(Существует не так много документации о соответствующих ioctls; вам нужно проверить исходный код ядра .)

Вы можете просмотреть соответствующую информацию с помощью других инструментов, которые напрямую опрашивают диски, например hdparm. На маленьком SSD hdparm -Iговорит мне

[...]
Logical  Sector size:                   512 bytes
Physical Sector size:                   512 bytes
Logical Sector-0 offset:                  0 bytes
[...]
cache/buffer size  = unknown
Form Factor: 2.5 inch
Nominal Media Rotation Rate: Solid State Device
[...]

На большом вращающемся диске с секторами 4 КБ вместо этого я получаю

[...]
Logical  Sector size:                   512 bytes
Physical Sector size:                  4096 bytes
Logical Sector-0 offset:                  0 bytes
[...]
cache/buffer size  = unknown
Form Factor: 3.5 inch
Nominal Media Rotation Rate: 5400
[...]
8
27.01.2020, 20:34

Там есть несколько вопросов, я пытался найти ответ на вопрос "Где fdisk находит размер сектора диска?" Лучшее, что я нашел, это то, что он получает информацию от ioctl.

ioctlинформация о Википедии и справочной странице Linux .

ссылка на исходный код fdisk

2
27.01.2020, 20:34

Теги

Похожие вопросы