Я решил это :Мне пришлось перейти к Settings->Settings Editor->xfce4-session
. Атрибут chooser
был проверен AlwaysDisplay
. Я снял флажок и вышел из Settings
. Затем, после выключения, перезагрузки и выхода из системы, мне больше не предлагается сеанс.
Я понятия не имею, как этот параметр изменился по сравнению с прежним значением. Но в любом случае хорошо то, что хорошо кончается.
Это связано с кэшированием. У вас есть как минимум два варианта.
Используйте флаг -D
:
-D Causes debugfs to open the device using Direct I/O, bypassing the buf‐ fer cache. Note that some Linux devices, notably device mapper as of this writing, do not support Direct I/O.
Удалить буферный кеш:
echo 1 | sudo tee /proc/sys/vm/drop_caches
См., например,:
Если вы не передадите флаг -D
, вы все равно можете увидеть какое-то действие, передав результат, например, вxxd
:
sudo debugfs -R "cat <$(stat --printf %i data.txt)>" /dev/sda3 | xxd -a -c 32
Вы увидите, что файлcat
заполнен нулевыми байтами, а иногда и данными (, если было записано достаточно ).
Например,послеecho A >data.txt
00000000: 410a A.
Потом послеfor i in {1..7}; do echo A >>data.txt; done
:
00000000: 410a 0000 0000 0000 0000 0000 0000 0000 A...............
Вы также можете отслеживать, используя что-то вроде этого:
Использование:sudo./script file_to_monitor
Он запускает watch
со сценарием awk
, который печатает статистику для устройства из /sys/block
в дополнение к печати результата cat <inode>
для файла.
#!/bin/sh
if [ "$1" = "-h" ]; then
printf '%s FILE\n' "$0"
exit 1
fi
file="$1"
inode=$(stat --printf %i "$file")
dev_path="$(df -P -- "$file" | awk 'END{print $1}')"
dev_name="$(lsblk -no NAME "$dev_path")"
dev_core="$(lsblk -no PKNAME "$dev_path")"
if [ "$dev_core" = "loop" ]; then
fn_stat=/sys/block/$dev_name/stat
else
fn_stat=/sys/block/$dev_core/$dev_name/stat
fi
printf 'File : %s\n' "$file"
printf 'Inode: %s\n' "$inode"
printf 'Stat : %s\n' "$fn_stat"
printf 'Dev : %s\n' "$dev_path"
printf "Continue? [yN] " >&2
read -r ans
if ! [ "$ans" = "y" ] && ! [ "$ans" = "Y" ]; then
exit
fi
watch -n 0.2 'awk \
-v inode="'$inode'" \
-v dev_path="'$dev_path'" \
"{
rs = \$3 * 512
rsk = rs / 1024
rsm = rsk / 1024
ws = \$7 * 512
wsk = ws / 1024
wsm = wsk / 1024
printf \" 1: Reads Completed : %9d\n\", \$1
printf \" 2: Reads Merged : %9d\n\", \$2
printf \" 3: Read Sectors : %9d %6d MiB %9d KiB %d bytes\n\",
\$3, rsm, rsk, rs
printf \" 4: Read ms : %9d\n\", \$4
printf \" 5: Writes Completed : %9d\n\", \$5
printf \" 6: Writes Merged : %9d\n\", \$6
printf \" 7: Write Sectors : %9d %6d MiB %9d KiB %d bytes\n\",
\$7, wsm, wsk, rs
printf \" 8: Write ms : %9d\n\", \$8
printf \" 9: I/Os in progress : %9d\n\", \$9
printf \"10: I/O ms : %9d\n\", \$10
printf \"11: I/O ms weighted : %9d\n\", \$11
printf \"\n\nFILE <%d> %s:\n\", inode, dev_path
system(\"sudo debugfs -R '\''cat <\"inode\">'\'' \"dev_path\" | xxd -a -c 32\")
}
"' "$fn_stat"