Размер резидентного набора процесса является объемом памяти, который принадлежит ему и в настоящее время существует (резидентный объект) в RAM (реальная RAM, не подкачанная или иначе не - резидентный объект).
Например, если процесс выделяет блок памяти (скажите, что 100 МБ), и использует его активно (читает/пишет в него), его размер резидентного набора составит приблизительно 100 МБ (плюс издержки, сегмент кода, и т.д.). Если после того, как процесс затем прекращает использовать (но не выпускает), что память некоторое время, ОС могла решить подкачать блоки той памяти, чтобы подкачать, создать место для других процессов (или кэш). Размер резидентного набора затем уменьшил бы суммой выгруженное ядро. Если бы процесс просыпается и начинает снова использовать ту память, ядро перезагрузило бы данные из подкачки, и размер резидентного набора повысится снова.
ru_maxrss
поле struct rusage
"метка паводка" размера резидентного набора. Это указывает на пиковое использование RAM для этого процесса (при использовании RUSAGE_SELF
).
Можно ограничить размер резидентного набора процесса, чтобы не иметь отдельное приложение, "съедают" всю RAM в системе и том, чтобы вынуждать другие приложения подкачать (или перестать работать полностью с условиями из памяти).
local
встроенное, не ключевое слово, таким образом, local files=(…)
не анализируется как присваивание массива, но как строковое присвоение. Запишите присвоение отдельно из объявления. (Уже найденный llua, но примечанием, которое необходимо инициализировать files
к пустому массиву или объявляют переменную с typeset -a
, иначе массив запускается с побочного пустого элемента.)${files[0]}
должен быть записан $files[1]
. С другой стороны, скажите zsh вести себя способом, что это более совместимо с ksh и ударом: поместить emulate -L ksh
в начале функции.emulate
маршрут, Ваш _notes
функция распечатает zsh: no matches found: foo*
если нет никакого завершения для foo
, потому что значением по умолчанию, несоответствующим шарикам, инициировали ошибку. Добавьте спецификатор шарика N
получить пустой массив, если там не идет ни в какое сравнение и тестируют, пуст ли массив._notes
функция, которая влияет на примечания в подкаталогах: необходимо снять префикс до завершения, так, чтобы если, например. ~/notes/foo/bar
существует и Вы вводите n b<TAB>
, COMPREPLY
набор должен содержать b
, нет foo/b
.Если Вы хотите сохранить файл, это читаемо и ударом и zsh:
type emulate >/dev/null 2>/dev/null || alias emulate=true
function n() {
emulate -L ksh
local arg; typeset -a files
for arg; do files+=( ~/".notes/$arg" ); done
${EDITOR:-vi} "${files[@]}"
}
function nls() {
tree -CR --noreport $HOME/.notes | awk '{
if (NF==1) print $1;
else if (NF==2) print $2;
else if (NF==3) printf " %s\n", $3
}'
}
# TAB completion for notes
function _notes() {
emulate -L ksh
local x files
files=($HOME/.notes/**/"$2"*)
[[ -e ${files[0]} ]] || return 1
COMPREPLY=()
for x in "${files[@]}"; do
COMPREPLY+=("$2${x#$HOME/.notes*/$2}")
done
}
complete -o default -F _notes n
Если Вы хотите портировать свой код на zsh:
function n() {
local files
files=(${@/#/~/.notes/})
${EDITOR:-vi} $files
}
function nls() {
tree -CR --noreport $HOME/.notes | awk '{
if (NF==1) print $1;
else if (NF==2) print $2;
else if (NF==3) printf " %s\n", $3
}'
}
# TAB completion for notes
function _notes() {
setopt local_options bare_glob_qual
local files
files=(~/.notes/**/$2*(N))
((#files)) && COMPREPLY=($2${^files##~/.notes*/$2})
}
complete -o default -F _notes n
набранная (локальная) команда zsh не может определить массивы с, он - синтаксис. Можно создать массивы, но Вы не можете также установленные значения все в одной команде.
function n() {
local arg files; for arg; do files+=( ~/.notes/$arg ); done
vim ${files[@]}
}
один путь состоит в том, чтобы зафиксировать его.
n() { $EDITOR "${@/#/.notes/}"; }
и предотвратите цикл при работе в ударе и zsh
– llua
09.01.2013, 05:45
.zshrc
? Я чувствую, учитывая качество двух ответов, что должен пропускать что-то. – jasonwryan 01.01.2013, 03:52n
и выполнение_notes
вручную (я не протестировал с эмуляцией завершения удара) вzsh -f
, и оба, кажется, работают. Отправьте трассировку выполненияn
и_notes
сset -x
. файл трассировки – Gilles 'SO- stop being evil' 01.01.2013, 04:01n
корректные взгляды, что случилось с ним?_notes
взгляды на его второй аргумент, таким образом, необходимо протестировать его с_notes _ irc
. – Gilles 'SO- stop being evil' 01.01.2013, 04:36