Даже если ps не отражает реально используемую память, эта команда весьма полезна.
ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'
Отдельный поиск и поиск файлов с помощью find
и xargs
, см. страницы man
для каждого из них.
sudo find / -type f -print0 | \
xargs -0 --no-run-if-empty \
grep -l 'PATH'
, чтобы вывести список всех имен файлов, в которых упоминается PATH. Добавить
| xargs less
для просмотра файлов.
Нельзя искать /some/deep/path/bin
, потому что это можно выразить как $SDP/bin
, насколько нам известно.
Возможно, это излишество, и вам следует (конечно )попытаться найти его, отследив порядок запуска скриптов, но бывают случаи, когда такое дерево становится трудно разобрать. Так что его можно просто найти:
grep --regexp='PATH=.*/path/that/you/try/to/find' --binary-files=without-match -r /
Обратите внимание, что это очень долгий процесс, и ваш жесткий диск будет сходить с ума на протяжении (вы в основном читаете каждый имеющийся у вас текстовый файл ).
Попробуйте:
grep -rF --binary-files=without-match ':/the/undesired/path' / 2> /dev/null
Если /the/undesired/path
равно $UNKNOWN_VARIABLE_NAME_FOR_THE_UNDESIRED_PATH
или, это явно не сработает.
Обратите внимание, что /home/user/undesired/path
часто назначается как $HOME/undesired/path
.
Запустите то же самое без :
, чтобы также получить назначения переменных:
grep -rF --binary-files=without-match '/the/undesired/path' / 2> /dev/null
Если это не сработает, найдите все PATH
назначения и отфильтруйте их вручную:
grep -rwF --binary-files=without-match 'PATH=' / 2> /dev/null