Ваш сервер работает в UTC? Большинство работало бы в зоне местного времени, которую я предполагаю, UTC+1 (ВСТРЕЧЕННЫЙ или CET) для Вас. Я спрашиваю, потому что мы должны знать, какой часовой пояс используется в crontab, например, возможно 3.05 не назван 3.05 в crontab.
Общие задачи, которые делают большой доступ к диску, включают makewhatis
/man-db
и slocate
/mlocate
. Двойная проверка они не выполняются приблизительно 3,05, например, смотрят на /etc/crontab
и /etc/cron.daily
. Регистрируйте пользовательские вкладки крона /var/spool/cron
.
Существует два способа, которыми я могу думать для выяснения то, что достигает 3,05 без журналов крона.
Первое auditctl
, который является немного болезненным для использования.
На основе страницы справочника я попробовал бы что-то как:
$ sudo auditctl -a entry,always -S open -S creat \
-S read -S readv -S write -S writev -S sendfile \
-S fork -S clone -S execve -k 305
настраивать аудит, затем
$ sudo aureport -s -i -ts 03:04 -te 03:06
когда Вы входите в систему после 3.05 для проверки то, что произошло.
Вторым является простое ps
. Просто запишите сценарий для выполнения ps
несколько раз, и расписание это для достижения 3,04.
Много аспектов ps
может быть полезным здесь, например, wchan
и status
поля для наблюдения, какие процессы делают ввод-вывод и pcpu
видеть, какие процессы используют большую часть ЦП в то время. Конечно, любой процесс, который не появляется в списке в 3.04.59, но действительно появляется в или вскоре после 3.05.01, является очевидным подозреваемым также.
BEGIN
шаблоны выполняются, прежде чем любой вход читается, поэтому следовательно, ни одна из переменных, которые относятся для ввода, как NR
, поля как $0
..., будет определен в любом из BEGIN
блоки. Ваш второй подход корректен и намного лучше. ¹ От POSIX awk спецификация (шахта акцента):
awk утилита должна распознать два специальных шаблона, НАЧАТЬСЯ и ЗАКОНЧИТЬСЯ. Каждый НАЧИНАЕТ, шаблон должен быть подобран однажды и его связанное действие, выполняемое, прежде чем первая запись входа будет считана...
¹ Просто примечание стороны, это также хорошо, потому что это не делает предположения о минимуме или максимуме, ограничиваемом конкретным значением как 0, что-то, много острот, которые каждый находит в Интернете, принимают.
Если Вы хотите выполнить команду на первой строке входного текста, необходимо использовать NR==1
шаблон, нет BEGIN
.
awk -F'=' '
NR==1 {
MIN=$2; MAX=$2; print MIN;
}
NR>1 {
if ( $2 > MAX )
{
MAX = $2;
}
...
Как указано @jw013, BEGIN
шаблон - чтобы действия выполнились перед чтением первой строки.