Тем временем я обнаружил, что журнал аудита seccomp теперь находится в /var/log/audit/audit.log
вместо syslog после Я установил auditd
для получения инструмента ausyscall. Без инструмента журналы никуда не денутся.
Файл содержит строки типа
type=SECCOMP msg=audit(1444422928.758:649196): auid=0 uid=100033 gid=100033 ses=1 pid=18459 comm="nginx" exe="/usr/sbin/nginx" sig=31 arch=c000003e syscall=288 compat=0 ip=0x7f2f71555467 code=0x0
, в которых четко указано, какой процесс и какой системный вызов нарушили правила - это мне очень помогает.
Но я оставляю этот вопрос открытым. Есть еще вопросы, на которые нет ответа, и я все еще ищу более эффективный способ создания такого файла белого списка, чем попытка и ошибка.
Awk
раствор:
awk 'BEGIN{ head = "Geneid" }
FNR == 2{
gsub(/^.+documents\/|\.sorted\.bam$/, "", $NF);
head = head "\t" $NF
}
FNR > 2{
genes[$1] = genes[$1] "\t" $NF;
order[FNR-2] = $1
}
END{
print head;
for (i = 1; i <= FNR-2; i++) print order[i] genes[order[i]]
}' file*.txt
FNR
-номер считываемой записи $NF
-само значение последнего поля(NF
указывает на общее количество полей)genes
-массив, содержащий накопленную последовательность последних значений полей для гена id; массив индексируется по гену идентификаторам order
-вспомогательный массив, проиндексированный номерами записей для сохранения исходного порядка идентификаторов генов