Это - мое понимание ситуации, но я не эксперт, таким образом, это является менее техническим, чем другие ответы. Это - то, что я понимаю после использования этих систем много лет, я не изучил их во всех подробностях.
Существует три основных плеера здесь, и между ними они управляют монтированием:
FUSE: Это в центре всего, как описано на его странице Википедии:
Файловая система в Пространстве пользователя (FUSE) является механизмом операционной системы для подобных Unix операционных систем компьютера, который позволяет непривилегированным пользователям создать свои собственные файловые системы, не редактируя код ядра. Это достигается путем выполнения кода файловой системы в пространстве пользователя, в то время как модуль FUSE предоставляет только "мост" фактическим интерфейсам ядра.
Так, в основном это - то, что позволяет непривилегированным пользователям монтировать файловые системы.
gvfs
: В семействе Gnome настольных сред (который включает Gnome, Помощника, Корицу), это - (среди прочего) демон, который автоматически смонтирует недавно подключенные диски. Это делает так через FUSE. Я верю (но может быть неправильным), эквивалент для семейства KDE называют KIO
Основные процессы gvfs
(взятый от man gvfs
):
udev
: Это - система, которая обнаруживает новые устройства и позволяет Вам выполнять сценарии/команды, когда они соединены. Например, это udev
это обнаруживает новый экран и может зеркально отразить Ваш рабочий стол на нем:
udev является диспетчером устройств для ядра Linux. Прежде всего, это управляет узлами устройства в/dev. Это - преемник devfs и замены в горячем режиме, что означает, что это обрабатывает/dev каталог и все действия пространства пользователя при добавлении/удалении устройств, включая микропрограммную загрузку.
А именно, gvfs
кажется, работает через gvfs-udisks2-volume-monitor
который является находящимся в udisks монитором объема. udisks
самостоятельно однако, полагается udev
(см. man 7 udisks
).
Так, в основном (чтение "ужасное упрощение") то, что происходит, является этим, когда Вы подключаете свой диск, udev
обнаруживает его и предупреждает gvfs
демон, который затем смонтирует его как устройство FUSE.
FUSE и udev
будет то же для всех настольных сред, что изменения является демоном DE, который контролирует udev
и монтирует диск как файловую систему FUSE.
Для получения желаемого результата можно использовать комбинацию find
, grep
и awk
. Ниже приведен oneliner, который распечатает файл с записанной максимальной температурой. Вывод
find . -mindepth 3 -exec echo -n "{} " \; -exec grep "PROCESSOR_ZONE" {} \; |
awk '{
split($4,val,"/");
gsub("C","",val[1]);
if (max<val[1]) {file=$1; max=val[1]}
} END {print(file)}'
Вывод
./2012.04.16/00:10/temps.txt
Ниже приведена версия сценария script
oneliner.
#!/bin/bash
# The path where temperature directories and files are kept
path="/tmp/tmp.ADntEuTlUT/"
# Temp file
tempfile=$(mktemp)
# Get the list of files name and their corresponding
# temperature data.
find "${path}" -mindepth 3 -exec echo -n "{} " \; -exec grep "PROCESSOR_ZONE" {} \; > "${tempfile}"
# Parse though the temp file to find the maximum
# temperature based on Celsius
awk '{split($4,val,"/");gsub("C","",val[1]);if(max<val[1]){file=$1;max=val[1]}} END{print(file)}' "${tempfile}"
# Removing the temp file
rm -f "${tempfile}"
Это решение использует функцию разделения в awk для разделения полей и выполняет числовую обратную сортировку, чтобы вывести максимальное число наверх.
find . -name "temps.txt" -print|xargs tail -n 1 | awk '{split($NF,temp,"[CF/]");print temp[1]}'|sort -r | head -n 1
С GNU grep
, при условии, что пути к файлам не содержат символов новой строки:
grep -rHPo 'PROCESSOR_ZONE\s+\K\d+C' . | awk -F: '
0+$NF >= max {max = $NF; text = $0}; END {print text}'