Чистые страницы являются страницами, которые не были изменены, так как они были отображены (обычно, текстовые разделы из общих библиотек только читаются из диска (когда необходимый), никогда изменяемый, таким образом, они будут на общих, чистых страницах).
Грязные страницы являются страницами, которые не являются чистыми (т.е. были изменены).
Частные страницы доступны только тому процессу, поделившиеся страницы отображаются другим processes*.
RSS является общим количеством страниц, поделившихся или нет, в настоящее время отображаемый в процесс. Так Shared_Clean
+ Shared_Dirty
была бы общая часть RSS (т.е. часть RSS, который также отображается в другие процессы), и Private_Clean
+ Private_Dirty
половой орган RSS (т.е. только отображенный в этом процессе).
PSS (пропорциональный размер доли) - как Вы описываете. Частным страницам подводят итог, как, и размер каждого общего отображения разделен на количество процессов, которые совместно используют его.
Таким образом, если бы процесс имел 100k частные страницы, 500k страницы, поделившиеся с еще одним процессом и 500k, совместно использованным с четырьмя другими процессами, то PSS был бы:
100k + (500k / 2) + (500k / 5) = 450k
Дополнительные материалы для чтения:
Documentation/filesystems/proc.txt
в источнике ядраman proc(5)
Относительно сумм всего процесса:
RSS
может быть (приблизительно +) получен путем подведения итогов Rss:
записи в smaps
(Вы не должны складывать общие/частные общие/грязные записи).
awk '/Rss:/{ sum += $2 } END { print sum }' /proc/$$/smaps
Pss:
оценивает тот же путь, для получения глобальным процессом PSS
.USS
в не сообщают smaps
, но действительно, это - сумма частных отображений, таким образом, можно получить его то же слишком*Обратите внимание, что "совместно используемая" страница считается как частное отображение, пока она на самом деле не совместно используется. т.е. если существует только один процесс в настоящее время с помощью libfoo
, текстовый раздел той библиотеки появится в частных отображениях процесса. Это будет считаться в общих отображениях (и удаляться из частных), только, если/когда другой процесс начнет пользоваться той библиотекой.
Значения +The не складывают точно для всех процессов. Не абсолютно уверенный, почему... прошу прощения.
history
команда просто воздействует на Ваш файл истории, $HISTFILE
(обычно ~/.history
или ~/.bash_history
). Будет намного легче, если Вы просто удалите строки из того файла, который может быть сделан много путей. grep
один путь, но необходимо бояться перезаписывать файл, все еще читая его:
$ grep -v searchstring "$HISTFILE" > /tmp/history
$ mv /tmp/history "$HISTFILE"
Иначе с sed
:
$ sed -i '/searchstring/d' "$HISTFILE"
Ответ Michael Mrozek будет работать, если Вы не будете заботиться об удалении команд от текущей сессии. Если Вы делаете, необходимо записать в файл истории прежде, чем сделать операции в его сообщении путем выполнения history -a
.
Кроме того, после удаления записей, которые Вы хотите из своего файла истории, можно перезагрузить его путем издания history -c
, затем history -r
.
на основе Michael и Chris ' Ответы, я придумал следующее. Добавьте его в свой файл ~ / .bashrc
, а затем загрузите его либо . ~ / .bashrc
или Источник ~ / .bashrc
.
:<<COMMENT
Deletes all lines from the history that match a search string, with a
prompt. The history file is then reloaded into memory.
Examples
hxf "rm -rf"
hxf ^source
See:
- https://unix.stackexchange.com/questions/57924/how-to-delete-commands-in-history-matching-a-given-string
COMMENT
#The unalias prevents odd errors when calling". ~/.bashrc" (May result in
#"not found" errors. That's okay).
unalias hxf
hxf() {
read -r -p "About to delete all items from history that match \"$1\". Are you sure? [y/N] " response
response=${response,,} # tolower
if [[ $response =~ ^(yes|y)$ ]]
then
#Delete all matched items from the file, and duplicate it to a temp
#location.
echo -e "grep -v \"$1\" \"$HISTFILE\" > /tmp/history"
grep -v "$1" "$HISTFILE" > /tmp/history
#Clear all items in the current sessions history (in memory). This
#empties out $HISTFILE.
echo "history -c"
history -c
#Overwrite the actual history file with the temp one.
echo -e "mv /tmp/history \"$HISTFILE\""
mv /tmp/history "$HISTFILE"
#Now reload it.
echo -e "history -r \"$HISTFILE\""
history -r "$HISTFILE" #Alternative: exec bash
else
echo "Cancelled."
fi
}
Для тех, кто ищет односложную инструкцию:
while history -d $(history | grep 'SEARCH_STRING_GOES_HERE'| head -n 1 | awk {'print $1'}) ; do :; history -w; done
Итак, если вы хотите, например, удалить несколько строк с паролем, просто замените "SEARCH_STRING_GOES_HERE" на пароль. Это приведет к поиску этой строки во всей истории и ее удалению.
2 вещи, о которых следует знать
$HISTFILE
мог содержать пробелы, которые вероятно, стоит заключить его в кавычки. – Chris Down 07.12.2012, 22:50