2010-10-11

Question of the day

вопрос 1:
как можно очистить буферы и кеши ядра?
например если нам не хочется что б наши фоновые приложения уходили глубоко в своп

ответ:
используем  файл /proc/sys/vm/drop_caches
если в файл записать 1, то очищается  только pagecache.
если в файл записать 2, то очищаются dentries и inodes.
если в файл записать 3, то очищаются pagecache, dentries и inodes.
см. man proc

улучшить эфективность можно, сделав перед очисткой кеша запись на диск "грязных" inode, dentry и pagecache (т.е. тех, которые были изменены в памяти и еще не сохранены обратно на диск):

# sync
# echo 4 > /proc/sys/vm/drop_caches


вопрос 2:
как можно вывести на экран 10 последовательных чисел (например от 1 до 10)? а 10 раз определенное сообщение, например messageX где X число от 1 до 10?

ответ:
1. seq 10
2. вариантов просто бесконечное количество :)
а) for i in $(seq 10); do
echo message${i}
done
б) for i in {1..10}; do
echo message${i}
done
в) for i ({1..10}) echo message${i}
г) echo message{1..10}
д) ваш вариант :)

стоит обратить внимание:
1) что у seq может быть 3 аргумента (начальное значение, конечное, шаг) и ключи(например использовать фиксированную ширину):
seq -w 10 10 100
выведет числа 010 020 030 ... 100
2) подстановка $(command) эквивалентна подстановке `command`
3) {X..Y} не совместимо с sh, зато удобно, и поддерживается bash/zsh/...
4) for i (values) command так же несовместимо с sh, и тоже бывает удобно для выполнения в цикле 1й команды :)

Немає коментарів: