Система памяти Linux заполнена многими стандартными программами утилит оптимизации памяти и совместного использования памяти, создания самой идеи того, как память совместно используется и используемый среди, громоздкий подход. Вывод PS и других связанных с PS команд все обрабатывают их вывод от данных под /proc
файловая система. Особенно ps
, RSS (резидентная память размера) и VSIZE (Размер виртуальной памяти) и важен, однако VSIZE не показывает точное использование памяти и различия между VSIZE, и RSS - то, что на самом деле предназначается и выделяется программе во время инициализации, но еще не может быть сослано. Как программа может иметь много связанных библиотек, но они еще не загружаются, потому что на них еще не ссылаются в фактическом времени выполнения программы. RSS дает общую память, на самом деле используемую программой, но не может дать истинное изображение потребления памяти, так как большая часть выделенной памяти может быть совместно использована с другими экземплярами того же процесса или других процессов. Взгляд под /proc/<processid>/maps
может дать общее представление о том, как память использовалась, но они подавляют шумы, может вводить в заблуждение иногда. Использовать pmap -x <pid>
от командной строки, полезной для наблюдения spreadup.
Часто лучшие утилиты free
и vmstat
. free
даст Вам, в целом текущие детали потребления памяти и vmstat могут использоваться для наблюдения, как часто он обновляется.
Я склонен сказать, что нет никакого простого способа сделать это. Я говорю это, потому что управление версиями нисколько не является standarized процедурой в UNIX/Linux или ни с одним из поставщиков, по крайней мере, на уровне программы.
Предложение могло бы быть должно исследовать установленную информацию о пакете, которая действительно содержит информацию об управлении версиями.
Однако, если люди установят продукты, не используя стандартный диспетчер пакетов для Вашего распределения, то у Вас будет дефектная информация также.
Чтобы быть абсолютно уверенными, необходимо будет, вероятно, пойти с некоторым типом тестирования контрольных сумм между системами.
Когда Вы уже получили ответ от @mdpc, который я просто обеспечу мнению Вашей исходной проблеме. Я не шел бы по этой дороге, поскольку это открывает кучу проблем, и Ваши программы в целом должны работать на всех системах (также проверка, если Ваша система все еще работает, если Вы работаете в другом локальном). Вы не должны также действительно полагаться на вывод/команды самостоятельно, но использовать соответствующий API для получения доступ/изменения к информации.
Так или иначе вот некоторые пути, которые могли помочь смягчить Вашу проблему:
Пакеты являются ответом (необходимо знать это, если Вы приезжаете из SunOS).
На CentOS необходимо использовать RPMs - ничто иное.
Вынудите своих разработчиков поставить все как об/мин - затем у Вас будет та структурированная информация в Вашей БАЗЕ ДАННЫХ ОБ/МИН (который может даже быть запрошен со стандартными инструментами SNMP).
Что касается Соляриса 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 или заархивированный архив, неизвестны из базы данных пакета, так должен быть обработан другой путь. Сравнение контрольных сумм похоже на хороший подход для обнаружения несоответствий, поскольку нет никакого стандарта так или иначе.