Пределом размера управляет способная опция APT::Periodic::MaxSize
. Можно отобразить текущее значение с помощью следующей команды:
apt-config dump | grep Periodic
Для установки размера отредактируйте или создайте файл /etc/apt/apt.conf.d/99local-archive
и любая из следующих строк:
APT::Periodic::MaxSize "<size_in_MiB>";
APT::Periodic::MaxAge "<days>";
APT::Periodic::MinAge "<days>";
Посмотрите /etc/cron.daily/apt
для комментариев к доступным вариантам и переходу от APT::Archives::*
. (Поставки Ubuntu 14.04 /etc/apt/apt.conf.d/20archive
который устанавливает APT::Archives::MaxSize
. Когда они переходят к APT::Periodic
в том файле будет иметь значение, что Вы помещаете свои локальные изменения в файл с более высоким количеством.)
Это устанавливает максимальный размер кэша в мебибайт. Если кэш больше, кэшируемые файлы пакета удалены, пока требованию размера не отвечают (самые большие пакеты будут удалены сначала).
Удостоверьтесь, что сделали это на всех машинах, которые монтируют каталог.
POSIX определенная длина в awk
является строковой функцией, аргумент принимается за строку. Использование длины с массивом в качестве аргумента является неуточненным поведением.
В некоторых реализациях awk
, таких как gawk (version >= 3.1.6), OS X версии AWK, в качестве аргумента можно использовать длину awk
с массивом, который вернет количество элементов в массиве.
Массив в awk
является ассоциативным массивом, петля через ассоциативный массив ничего не гарантирует о порядке. В этом случае можно воспользоваться функцией split, которая возвращает количество полей, чтобы получить количество элементов в массиве.
POSIXly можно попробовать:
$ awk -vA="$tstArr2" '
BEGIN{n = split(A,B," ");}
{
if(NR > 1) {
for(i = 1;i <= n;i++) {
printf "%s ",$B[i];
}
}
print " ";
}
' file
SA AUS BRA
INDIA NZ WI
(Для не-GNU awk, см. ответ @cuonglm.)
С этим как тестовый файл:
$ cat testUnix3.txt
test my array which array is better array
INDIA USA SA NZ AUS ARG GER BRA
US AUS INDIA ENG NZ SRI PAK WI BAN NED IRE
Этот код выбирает столбцы 3, 5, и 8:
$ tstArr2='3 5 8'
$ awk -vA="$tstArr2" 'BEGIN{split(A,B," ");} NR>1{for(i=1; i<= length(B); i++) printf "%s ",$B[i]; print "";}' testUnix3.txt
SA AUS BRA
INDIA NZ WI
Вышеупомянутое было протестировано с GNU awk
.
awk
циклы и порядок awk
имеет ассоциативные массивы. Как учебное руководство Grymoire awk объясняет:
существует одна незначительная проблема с ассоциативными массивами, особенно если вы использовать , чтобы команда произвела каждый элемент: вы не имеете никакого контроля порядок вывода.
, Который является причиной, почему другой код, который вы процитировали, который использует для (я в B)
цикл, может, время от времени, печатать столбцы не в порядке.
GNU awk имеет расширение для преодоления этой проблемы:
$ gawk -vA="$tstArr2" 'BEGIN{split(A,B," "); PROCINFO["sorted_in"]="@ind_num_asc"} {if(NR>1){for(i in B){printf "%s ",$B[i]}print " "}}' testUnix3.txt
SA AUS BRA
INDIA NZ WI
Путем настройки PROCINFO ["sorted_in"] = "@ind_num_asc"
, индексы будут циклично выполнены в числовом порядке по возрастанию. Это расширение GNU документируется здесь .
Есть много накладных расходов, чтобы использовать такой мощный инструмент, как awk
для такой простой задачи:
tstArr2='3,5,8'
tail -n+2 testUnix3.txt | cut -d' ' -f"$tstArr2"