Импорт 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
.
Размер сектора устройства не сохраняется в MBR.
Команды пользовательского пространства, такие как fdisk
, используют BLKBSZGET
иBLKSSZGET
ioctl
для получения размеров секторов с дисков. Эти ioctl
обрабатываются драйверами в ядре, которые извлекают соответствующую информацию с самих дисков.
(Существует не так много документации о соответствующих ioctl
s; вам нужно проверить исходный код ядра .)
Вы можете просмотреть соответствующую информацию с помощью других инструментов, которые напрямую опрашивают диски, например 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
[...]
Там есть несколько вопросов, я пытался найти ответ на вопрос "Где fdisk находит размер сектора диска?" Лучшее, что я нашел, это то, что он получает информацию от ioctl
.
ioctl
информация о Википедии и справочной странице Linux .