Я сделал это, отправил слишком скоро, это кажется!
Я должен был позволить Xinerama (в приложении настроек Nvidia) иметь два дисплея, сотрудничают.
Прежде чем у меня были свои значки на рабочем столе на обоих экранах, таким образом, я должен был предположить, что они не работали одним непрерывным рабочим столом их. Теперь они находятся только на левом экране.
Инструмент для отображения деталей inode для файловой системы будет зависеть от файловой системы. Для файловых систем ext2
, ext3
, ext4
(наиболее распространенные файловые системы Linux) вы можете использовать debugfs
, для XFS xfs_db
, для ZFS zdb
. Для btrfs
некоторая информация доступна с помощью команды btrfs
.
Например, чтобы исследовать каталог в файловой системе ext4
(в данном случае /
это dev / sda1
):
# ls src
Animation.js Map.js MarkerCluster.js ScriptsUtil.js
Directions.js MapTypeId.js markerclusterer.js TravelMode.js
library.js MapUtils.js Polygon.js UnitSystem.js
loadScripts.js Marker.js Polyline.js Waypoint.js
# ls -lid src
664488 drwxrwxrwx 2 vagrant vagrant 4096 Jul 15 13:24 src
# debugfs /dev/sda1
debugfs: imap <664488>
Inode 664488 is part of block group 81
located at block 2622042, offset 0x0700
debugfs: dump src src.out
debugfs: quit
# od -c src.out
0000000 250 # \n \0 \f \0 001 002 . \0 \0 \0 204 030 \n \0
0000020 \f \0 002 002 . . \0 \0 251 # \n \0 024 \0 \f 001
0000040 A n i m a t i o n . j s 252 # \n \0
0000060 030 \0 \r 001 D i r e c t i o n s . j
0000100 s \0 \0 \0 253 # \n \0 024 \0 \n 001 l i b r
0000120 a r y . j s \0 \0 254 # \n \0 030 \0 016 001
0000140 l o a d S c r i p t s . j s \0 \0
0000160 255 # \n \0 020 \0 006 001 M a p . j s \0 \0
0000200 256 # \n \0 024 \0 \f 001 M a p T y p e I
0000220 d . j s 257 # \n \0 024 \0 \v 001 M a p U
0000240 t i l s . j s \0 260 # \n \0 024 \0 \t 001
0000260 M a r k e r . j s \0 \0 \0 261 # \n \0
0000300 030 \0 020 001 M a r k e r C l u s t e
0000320 r . j s 262 # \n \0 034 \0 022 001 m a r k
0000340 e r c l u s t e r e r . j s \0 \0
0000360 263 # \n \0 024 \0 \n 001 P o l y g o n .
0000400 j s \0 \0 264 # \n \0 024 \0 \v 001 P o l y
0000420 l i n e . j s \0 265 # \n \0 030 \0 016 001
0000440 S c r i p t s U t i l . j s \0 \0
0000460 266 # \n \0 030 \0 \r 001 T r a v e l M o
0000500 d e . j s \0 \0 \0 267 # \n \0 030 \0 \r 001
0000520 U n i t S y s t e m . j s \0 \0 \0
0000540 270 # \n \0 240 016 \v 001 W a y p o i n t
0000560 . j s \0 305 031 \n \0 214 016 022 001 . U n i
0000600 t S y s t e m . j s . s w p \0 \0
0000620 312 031 \n \0 p 016 022 001 . U n i t S y s
0000640 t e m . j s . s w x \0 \0 \0 \0 \0 \0
0000660 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
В приведенном выше примере мы начинаем с поиска inode каталога src
( 664488
), а затем выгружаем его содержимое в файл src.out
, а затем отображаем его, используя od
. Как видите, содержимое всех файлов в этом каталоге ( Animation.js
и т. Д.) Видно в дампе.
Это только начало - см. Страницу руководства debugfs
или введите help
в debugfs
для получения дополнительной информации.
Если вы используете ext4
, вы можете найти дополнительную информацию о структуре и структуре записей каталогов в документации ядра .
Вы можете использовать язык программирования по своему выбору, открыть каталог, как если бы это был файл, и прочитать байты из полученного дескриптора файла. Однако это мало что вам скажет, поскольку это будет просто мусор (с несколькими узнаваемыми строками в нем), если вы не знаете, как он организован. То, как это организовано, в значительной степени является проблемой реализации рассматриваемой файловой системы. Если вы хотите глубже изучить эти вещи, я предлагаю вам начать с чтения man dirent.h
. Этого должно быть достаточно, чтобы направить вас дальше к тому, что поражает ваше воображение.
Предположим, что все данные находятся в файле с именем file, затем
awk -F "=" '{print $1"("$2")="$2}' file
-121--117411- Вообще говоря, при выполнении рекурсивного разделения между двумя каталогами для каждого файла diff включает команду diff, показывающую, что он делает для каждого файла. Например:
$ diff -ru a b
diff -ru a/file b/file
--- a/file 2015-07-17 01:06:14.078875805 -0700
+++ b/file 2015-07-17 01:06:21.969077076 -0700
@@ -1 +1 @@
-hello
+goodbye
Git хочет производить исправления в одном формате, поэтому каждому файлу должна предшествовать строка, начинающаяся с « diff
».... Но поскольку git использует собственную внутреннюю реализацию diff, чтобы дать понять людям, считывающим выходные данные, на что они смотрят, git добавляет воображаемый флаг --git
.
В действительности, если вы хотите использовать git для разделения двух файлов или каталогов в файловой системе, вы можете запустить
git diff --no-index a b
(флаг -no-index
указывает на игнорирование любого репозитория git, в котором вы находитесь. Этот параметр может быть опущен, если вы не находитесь в репозитории git.) Git выдает выходные данные в формате «unidiff». При необходимости аппроксимации с помощью системной команды diff можно использовать diff -ru a b
. (Флаг -u
выбирает формат unidiff, в то время как -r
рекурсирует в каталоги.)
Можно попробовать (раздел является примером).
sudo debugfs /dev/xvda1
использовать дамп для записи данных inode в файл.
sudo dumpe2fs /dev/xvda1
человек - ваш друг, они должны дать вам некоторые идеи.