Почему Linux хранит температуры ЦП на таком количестве файлов?

У меня нет конкретной причины, но мое инстинктивное чувство говорит мне, что следующее может быть лучшим подходом:

  1. Приложения закрытия.
  2. Скопируйте все данные из VM через сеть к местоположению резервирных копий.
  3. Размонтируйте файловые системы из VM.
  4. Закройте VM. (Существует только один VM, работающий на этом хосте теперь).
  5. Удостоверьтесь, что никакие domUs не установлены запуститься автоматически.
  6. Вытащите питание на хосте, чтобы препятствовать тому, чтобы гипервизор выполнил любые "заключительные" действия, синхронизацию выдающегося ввода-вывода, и т.д.
  7. Загрузите VM, надеясь, что сам гипервизор пережил рывок питания.
  8. Если это перестало работать, восстановите среду. (Загрузочные диски VMs являются базирующимся файлом, но точки монтирования данных находятся на внешнем диске, выделенном как блочные устройства),
  9. Проверьте, монтирует ли гипервизор какие-либо файловые системы, принадлежащие domUs. Размонтируйте их, прежде чем любые domUs будут запущены),
  10. Выключите автомонтирование KDE.
  11. Запустите VM и вызовите полную проверку FS.

Альтернатива 11: запустите VM и смонтируйте файловые системы без полного fsck.

Обоснование состоит в том, что я не хочу, чтобы гипервизор Xen больше имел шанс что абсолютно необходимый для порождения повреждения в domU файловых системах.

9
11.11.2014, 01:54
3 ответа

scp не очень умный: при использовании нескольких аргументов командной строки, являющихся файлами с одного удаленного узла, открывается новое подключение для каждого аргумента.

Можно использовать rsync вместо scp , это умнее (и другими способами).

rsync -r -e 'ssh -P PORT' user@host:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/

Другой подход состоит в том, чтобы передать один аргумент в scp , который описывает несколько файлов .

Другой подход состоит в том, чтобы настроить систему таким образом, чтобы не приходилось постоянно проверять подлинность. Предпочтительно установить аутентификацию ключа , которая в большинстве сценариев является более удобной и более безопасной. В качестве альтернативы или в дополнение установите общий доступ к соединениям , чтобы аутентификация выполнялась только один раз в сеансе. В любом случае набор псевдоним, чтобы не указывать имя пользователя и порт каждый раз. В файле ~/.ssh/config :

ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r

Host nick
HostName real-host-name.example.com
User bob
Port 1234

Выполните команду ssh -Nf nick , чтобы открыть соединение, а затем все последующие подключения к nick будут подключены к существующему соединению. Теперь вы можете просто запустить

scp -r nick:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/
-121--43157-

На земле GNU:

find . -mindepth 1 -maxdepth 1 -type d -printf . | wc -c

в другом месте

find . -type d ! -name . -printf . -prune | wc -c

В bash:

shopt -s dotglob
count=0
for dir in *; do
  test -d "$dir" || continue
  test . = "$dir" && continue
  test .. = "$dir" && continue
  ((count++))
done
echo $count
-121--66671-

На самом деле температура не хранится нигде. /sys является файловой системой в памяти , и чтение из файлов в /sys вызывает код в ядре, который вычисляет значения на лету.

Различные каталоги соответствуют различным способам, с помощью которых аппаратные средства могут сообщать о температурах. Файлы temp * _ input имеют соответствующую метку temp * _ , определяющую температуру компонента.

Расположение в /sys , как правило, варьируется от версии ядра к версии ядра (не от распространения к распространению). Это трудность, с которой приходится работать авторам программ, считывающих данные в /sys ( пример ).

11
27.01.2020, 20:05

Первый, /sys/class является удобным способом найти вещи в /sys. Вы найдете, что все внутри - на самом деле символьная ссылка; я вполне уверен, ваша первая строка файла конфигурации является symlink'd к вашей третьей строке файла конфигурации.

2-я строка файла конфигурации является ядром, читая температуру непосредственно из ЦП/чипсета. 3-я строка файла конфигурации является ядром, получая значение от BIOS через ACPI. В то время как в вашей системе они могут дать тот же ответ, им нужно не (например, BIOS мог использовать различные датчики, составляя в среднем некоторых вместе, или применяя некоторую определенную для платы корректировку).

Наконец, каждая строка файла конфигурации имеет два различных чтения, потому что там вероятны два термометра. Или по крайней мере, API аппаратных средств допускает его.

7
27.01.2020, 20:05

Взгляните на файлы * _label, чтобы узнать, о чем идет речь - вот мой i5:

$ grep "" /sys/devices/platform/coretemp.?/hwmon/hwmon?/temp?_label
/sys/devices/platform/coretemp.0/hwmon/hwmon1/temp1_label:Physical id 0
/sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_label:Core 0
/sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_label:Core 1

(grep "" просто используется как "кот с именами файлов")

Итак, вот общая температура CPU, плюс температура на ядро.

В более крупной многопроцессорной системе вы можете увидеть десятки записей.

2
27.01.2020, 20:05

Теги

Похожие вопросы