Некоторые процессы сохраняют файлы открытыми для записи. Они могли быть, например, программами, которые пишут журналы, как rsyslogd
, сетевые инструменты, как dhclient
или что-то еще. Завершение работы их один за другим и попытка перемонтирования могли бы работать.
Можно найти процессы, которые используют определенные файлы при помощи программы fuser
. Например, fuser -v -m /
возвратит список процессов. Однако я не уверен, является ли это один из них, который заставляет файловую систему напряженно трудиться.
Вы могли сделать:
code=$(
awk '
NR == 3 {
for (i=1; i<=NF; i++)
if ($i > 5) { printf "%s", sep "$" i; sep="," }
exit sep == ""
}' file
) &&
awk "{print $code}" file
Это - вызов awk
дважды на том же файле. Первый читает 3-ю строку для построения кода для второго awk
вызов. Это выходит после обработки 3-й строки, так не считает целый файл полностью. Это производит что-то как $5,$6,$7
, так следующее awk
вызов становится:
awk '{print $5,$6,$7}' file
Я получил другое awk решение совместно использовать:
cat > extract.columns.awk
BEGIN {
infil=ARGV[1]
while (getline < infil > 0)
if (++n==3)
{
for(i=1;i<=NF;i++)
if ($(i) > 5) x[++j]=i
}
close(infil)
}
{
for (i=1;i<j;i++)
printf("%s ",$x[i])
printf("%s\n",$x[j])
}
awk-f extract.columns.awk файл
j == 0
постараться не обрабатывать файл, если нет ничего для отображения.
– Stéphane Chazelas
05.04.2013, 18:05
Пожалуйста, не забудьте упомянуть имя файла дважды, как указано в приведенном ниже коде
awk 'NR == FNR{if(FNR == line) {for(i=1; i<=NF; i++) {if($i > lmt) a[i]} close(FILENAME)} next}
{for(i=1; i<=NF; i++) {for(i in a) {out = (out == "") ? $i : (out FS $i)}}
print out; out=""}' line=3 lmt=5 file file