Как найти пакет, который установил команду, если “dpkg-S” не находит пути, потому что команда является символьной ссылкой?

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

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

sync
echo 3 > /proc/sys/vm/drop_caches

2
13.04.2017, 15:36
1 ответ

Вы можете использовать ReadLink , чтобы распечатать, где ссылка указывает на. Аргумент для ReadLink ReadLink без вариантов должен быть ссылкой, если вы передаете его файл, он не будет распечатать ничего. Вариант -F для ReadLink , из пакета COREUTILS рекурсивно следует ссылкам и и печатает имя файла, даже если аргумент уже является файлом.

Если вы делаете ( -N -N , выключает новую строку в конце ReadLink выхода):

dpkg -S "$(readlink -fn "$(which rename)")"

Вы получите ответ:

perl: /usr/bin/prename

, что ссылка была следила В этом случае ясно из Perment , но это не гарантируется в случае (например, если ссылка указывала на исполняемое исполнение в каталоге в каталоге, который не находится в вашем $ ДОРОЖКА).

Как указано @ 011c, и если у вас его установлено, вы можете использовать realPath как альтернатива readLink -F

3
27.01.2020, 22:05

Теги

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