Вероятно, проблема с командой locate
заключается в том, что база данных еще не обновлена для отражения вновь установленных файлов пакета. Вы можете принудительно выполнить обновление ( sudo updatedb
) или использовать вместо этого команду find
, но это, вероятно, самое простое решение в таких системах, как Ubuntu, которые используют инструменты управления пакетами dpkg
состоит в том, чтобы перечислить содержимое пакета
dpkg -L libgoogle-perftools-dev
или проверить расположение файла profiler.h
, в частности
dpkg -L libgoogle-perftools-dev | grep 'profiler.h'
При заданных условиях:
terminal command which doesn't require the executing user to be in the sudoers group and also to be universal and not requiring to install additional packages.
очевидный простейший метод для немодифицированных ВМ, владельцы которых намеренно не пытались скрыть тот факт, что ОС является ВМ,
cat /sys/class/dmi/id/product_name
Больше возможностей:
Вне условий, указанных автором ОП, существуют более сложные подходы, подобные этому:Где я? Идентификация операционной системы и виртуализации без системных вызовов
Для этого также требуется systemd (, которая в наши дни довольно распространена ), ноsystemd-detect-virt
является лучшим инструментом для определения того, работает ли это на физическом или виртуальном оборудовании.
Вы можете взглянуть на логику , используемую systemd-detect-virt
, вы заметите, что она на самом деле смотрит во многих местах, чтобы обнаружить несколько различных технологий виртуализации...
Я думаю, что что-то наивное, например просмотр lscpu
вывода, может работать в некоторых случаях некоторое время, но я думаю, что это вряд ли будет работать все время. Также обратите внимание, что многие технологии позволяют (и даже )виртуальным машинам иметь более одного потока на ядро, поэтому я даже не думаю, что этой конкретной функции достаточно для надежного обнаружения.