Существует ли структурированный формат информации о версии для исполняемых файлов уровня ОС?

Система памяти Linux заполнена многими стандартными программами утилит оптимизации памяти и совместного использования памяти, создания самой идеи того, как память совместно используется и используемый среди, громоздкий подход. Вывод PS и других связанных с PS команд все обрабатывают их вывод от данных под /proc файловая система. Особенно ps, RSS (резидентная память размера) и VSIZE (Размер виртуальной памяти) и важен, однако VSIZE не показывает точное использование памяти и различия между VSIZE, и RSS - то, что на самом деле предназначается и выделяется программе во время инициализации, но еще не может быть сослано. Как программа может иметь много связанных библиотек, но они еще не загружаются, потому что на них еще не ссылаются в фактическом времени выполнения программы. RSS дает общую память, на самом деле используемую программой, но не может дать истинное изображение потребления памяти, так как большая часть выделенной памяти может быть совместно использована с другими экземплярами того же процесса или других процессов. Взгляд под /proc/<processid>/maps может дать общее представление о том, как память использовалась, но они подавляют шумы, может вводить в заблуждение иногда. Использовать pmap -x <pid> от командной строки, полезной для наблюдения spreadup.

Часто лучшие утилиты free и vmstat. free даст Вам, в целом текущие детали потребления памяти и vmstat могут использоваться для наблюдения, как часто он обновляется.

2
21.12.2012, 00:08
4 ответа

Я склонен сказать, что нет никакого простого способа сделать это. Я говорю это, потому что управление версиями нисколько не является standarized процедурой в UNIX/Linux или ни с одним из поставщиков, по крайней мере, на уровне программы.

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

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

Чтобы быть абсолютно уверенными, необходимо будет, вероятно, пойти с некоторым типом тестирования контрольных сумм между системами.

3
27.01.2020, 21:51

Когда Вы уже получили ответ от @mdpc, который я просто обеспечу мнению Вашей исходной проблеме. Я не шел бы по этой дороге, поскольку это открывает кучу проблем, и Ваши программы в целом должны работать на всех системах (также проверка, если Ваша система все еще работает, если Вы работаете в другом локальном). Вы не должны также действительно полагаться на вывод/команды самостоятельно, но использовать соответствующий API для получения доступ/изменения к информации.

Так или иначе вот некоторые пути, которые могли помочь смягчить Вашу проблему:

  1. Используйте управление конфигурацией и укажите, какие программы/библиотеки должны быть установлены на машине. Можно обычно также указывать номер версии. Другая большая вещь об использовании управления конфигурацией состоит в том, что можно обычно получать всю информацию о системе, т.е. какое ядро работает, сколько NICs находится в системе и т.д.
  2. В зависимости от языка программирования Вы используете Вас, может хотеть изучить виртуализированные среды, т.е. bundler для рубина или virtualenv для Python.
  3. Используйте chroots для установки среды к определенным потребностям или (еще лучше)
  4. Просто поставьте свою среду как образ виртуальной машины
2
27.01.2020, 21:51
  • 1
    Да, я сделал бы все это, если бы я был директором по информационным технологиям/техническим директором здесь, который может продиктовать такие решения, которые будут реализованы. Но я - end-of-the-food-chain разработчик в крупной организации, которая, очевидно, не имеет лучшего контроля над их управлением изменениями - таким образом, я должен найти обходные решения –  amphibient 20.12.2012, 23:59
  • 2
    , таким образом, я не имею никакого контроля над платформой ОС, которая вручена мне для хостинга моего приложения на. они дают мне корневой каталог, где я могу развернуть свое приложение, но я не имею никакого контроля над тем, что находится в/usr/bin, даже / выбирают. если я хочу изменить какое-либо из этого, даже с лучшей из документации, показывающей страшную потребность, я веду тяжелый бой бюрократизма и буду длинным и твердым –  amphibient 21.12.2012, 00:02
  • 3
    @foampile, затем просят VM и обеспечивают все, что необходимо, большинство организаций уже имеет решение для виртуализации и может выполнить такие изображения. –  Ulrich Dangel 21.12.2012, 00:24

Пакеты являются ответом (необходимо знать это, если Вы приезжаете из SunOS).

На CentOS необходимо использовать RPMs - ничто иное.

Вынудите своих разработчиков поставить все как об/мин - затем у Вас будет та структурированная информация в Вашей БАЗЕ ДАННЫХ ОБ/МИН (который может даже быть запрошен со стандартными инструментами SNMP).

2
27.01.2020, 21:51
  • 1
    спасибо, но, как я сказал выше: "Я - end-of-the-food-chain разработчик в крупной организации", который не находится ни в каком положении для "вынуждения" других разработчиков в любую практику. но Ваша идея звучит как привлекательный –  amphibient 21.12.2012, 00:05
  • 2
    IOW, я работаю в рамках твердых ограничений –  amphibient 21.12.2012, 00:06
  • 3
    @foampile, Если Вы не можете вынудить других сделать материал хорошо, говорит с Вашим начальником и делает ту идею его (или убедите своих коллег). –  Nils 21.12.2012, 23:12

Что касается Соляриса 10, файлы, принадлежащие ОС и файлы, обеспеченные третьими лицами в форме пакетов SVR4 уже, versioned/checksumed и определены. например:

 # pkgchk -l -p /usr/bin/ls
Pathname: /usr/bin/ls
Type: regular file
Expected mode: 0555
Expected owner: root
Expected group: bin
Expected file size (bytes): 18700
Expected sum(1) of contents: 1763
Expected last modification: Mar 25 00:04:57 2010
Referenced by the following packages:
        SUNWcsu
Current status: installed

Большая часть этой информации находится в /var/sadm/install/contents файл. Файлы, которые не были установлены с помощью стандартных инструментов, т.е. файла, обеспеченного как tarball или заархивированный архив, неизвестны из базы данных пакета, так должен быть обработан другой путь. Сравнение контрольных сумм похоже на хороший подход для обнаружения несоответствий, поскольку нет никакого стандарта так или иначе.

1
27.01.2020, 21:51

Теги

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