Я сначала попытался бы узнать то, что процесс пытается сделать и почему он, возможно, застрял там. Это наиболее вероятно проблема, которая несколько независима от недостающего списка файлов (который Вы уже решили путем установки той же самой версии пакета на вершине; dpkg просто генерирует новый список файлов от нового пакета затем).
Я думаю, что может быть что-то не так с Вашей файловой системой, такой как цикл каталога hardlinks или другого несоответствия, которое путает ядро здесь; таким образом первый шаг для меня в этой ситуации должен был бы подтвердить это (например, путем проверки, какая функция ядра процесс заблокирован в), и, если это действительно имеет место, чтобы перезагрузить и вызвать проверку файловой системы.
Вот пример того, как это можно сделать, но я надеюсь, что у кого-то есть способ получше. Определите службу для будних дней:
define service{
name foo-weekday
host_name linux-server
service_description check-disk-sda1-weekday
check_command check-disk!/dev/sda1
max_check_attempts 5
check_interval 5
retry_interval 3
check_period weekday
notification_interval 360
notification_period weekday
notification_options w,c,r
contact_groups linux-admins
}
Затем наследуйте от нее, переопределив check_period, notification_interval, notification_period и service_description (которые должны быть уникальными для каждого хоста) на выходные:
define service{
name foo-weekend
use foo-weekday
service_description check-disk-sda1-weekend
check_period weekend
notification_interval 1440
notification_period weekend
}
Изменить: интересно, будут ли работать макросы пользователя в эта ситуация? Например, есть только одно определение службы:
define service{
host_name linux-server
service_description check-disk-sda1
check_command check-disk!/dev/sda1
max_check_attempts 5
check_interval 5
retry_interval 3
check_period 24x7
notification_interval $USER21$
notification_period 24x7
notification_options w,c,r
contact_groups linux-admins
}
Затем, имейте два разных файла ресурсов. Один определяет USER21 как «360», а другой как «1440». Когда начнутся выходные, скопируйте последний на место и перезагрузите конфигурацию nagios. Когда выходные закончатся, скопируйте первое на место и перезагрузите.