Индексный дескриптор — это файл, который идентифицируется исключительно своим номером индексного дескриптора.Имя файла — это просто метаданные в файловой системе, которые ссылаются на файл. Один файл/inode может иметь несколько имен файлов, ссылающихся на него :
.$ touch foo
$ ln foo bar
$ ls -li foo bar
28098391 -rw-r--r-- 2 xxxxxxx xxxxx 0 Jul 6 22:15 bar
28098391 -rw-r--r-- 2 xxxxxxx xxxxx 0 Jul 6 22:15 foo
Первый столбец — это номер инода; обратите внимание, что это то же самое для обоих файлов. Первое число после разрешений — это количество ссылок; и foo
, и bar
имеют счетчик ссылок, равный 2, поскольку каждое из двух имен относится к одному и тому же файлу.
$ rm foo
$ ls -li bar
28098391 -rw-r--r-- 1 xxxxxxx xxxxx 0 Jul 6 22:15 bar
rm foo
удаляет только эту конкретную ссылку на базовый файл; bar
по-прежнему ссылается на него (обратите внимание, что номер инода не изменился, но счетчик ссылок теперь равен 1 вместо 2 ). Также обратите внимание, что ни foo
, ни bar
не были "настоящими" именами файла; тот факт, что foo
был создан первым, никоим образом не делал его особенным. Файл фактически не удаляется до тех пор, пока все ссылки не будут удалены (, т. е. пока счетчик ссылок не уменьшится до 0 ). Даже в этом случае файл фактически не удаляется; блоки, выделенные для этого индекса, просто помечаются файловой системой как доступные для повторного использования.
https://stackoverflow.com/questions/3433203/how-to-determine-if-lcd-monitor-is-turned-on-from-linux-command-line нашел код сценария оболочки для проверки, а-ля:
#!/bin/bash export DISPLAY=:0.0
if [ $# -eq 0 ]; then
echo usage: $(basename $0) "on|off|status"
exit 1
fi
if [ $1 = "off" ]; then
echo -en "Turning monitor off..."
xset dpms force off
echo -en "done.\nCheck:"
xset -q|grep "Monitor is"
elif [ $1 = "on" ]; then
echo -en "Turning monitor on..."
xset dpms force on
echo -en "done.\nCheck:"
xset -q|grep "Monitor is"
elif [ $1 = "status" ]; then
xset -q|sed -ne 's/^[ ]*Monitor is //p'
else
echo usage: $(basename $0) "on|off|status"
fi