Ubuntu Linux에서 mandb가 지속적으로(분명히 백그라운드에서) 실행되는 것이 정상입니까?

Ubuntu Linux에서 mandb가 지속적으로(분명히 백그라운드에서) 실행되는 것이 정상입니까?

우리 기관의 Ubuntu Linux 노드에 액세스할 수 있습니다. 노드는 그룹 간에 공유되지만 일반적으로 해당 특정 노드를 사용하는 유일한 사람은 나입니다.

노드의 8개 CPU 모두에서 계산을 병렬로 실행하고 있습니다. 계산이 실행 중이지만 활성 프로세스 보기를 사용하면 top사용자 man및 명령이 기록된 추가 프로세스가 표시됩니다 mandb. 에 따르면, 이 mandb명령은 볼 때마다 실행되는 것으로 보이며 , 상당한 양의 CPU 성능( )과 메모리( )를 top차지하는 것으로 보입니다 .6 %CPU2.5 %MEMtop

인터넷에서 찾아보니 이런 내용인 것 같습니다.

mandb일반적으로 사람이 유지 관리하는 인덱스 데이터베이스 캐시를 초기화하거나 수동으로 업데이트하는 데 사용됩니다.

그렇다면 왜 mandb이 노드에서 계속 실행됩니까? (다른 노드에 따르면 top내 에이전시 클러스터 내의 다른 노드에서는 이 문제가 발생하지 않습니다.) 왜 mandb항상 실행되어야 합니까?아니요현재 매뉴얼을 보고 계시나요?

이 프로세스가 안전하게 종료할 수 있는 가상 프로세스일 가능성이 있습니까 kill?

답변1

mandb연속작동이 비정상입니다. 일반적으로 mandb하루에 한 번 실행예약 된 일들설치된 매뉴얼 페이지의 색인 업데이트, 형식화된 매뉴얼 페이지의 캐시 구축 또는 정리와 같은 유지 관리 작업을 수행하는 작업입니다. 일일 작업은 몇 초 안에 실행되어야 합니다. 매뉴얼 페이지가 많고 디스크가 느린 경우 몇 분이 걸릴 수 있습니다. 작업을 실행하는 데 이보다 시간이 더 오래 걸리면 문제가 발생한 것입니다.

6% CPU는 높지 않지만 프로세스가 디스크 I/O를 수행 중일 수 있습니다. 클러스터 노드의 메모리 중 2.5%가 높다고 들립니다. 작업이 잘못 구성되어 있어서는 안되는 위치를 찾거나, 프로그램에 버그가 있거나 mandb, 하드웨어 오류로 인해 mandb작업이 중단될 수 있습니다.

/etc/crontab또는에서 cron 스크립트를 볼 수 있습니다 /etc/cron.*/*(정확한 위치는 배포판에 따라 다르며 /etc/cron.daily/man-db가능한 /etc/cron.weekly/man-db위치입니다). mandb프로세스를 자세히 살펴보면 프로세스를 실행 pstree | less하고 검색하여 호출되는 내용을 파악할 수 있습니다 . mandb실행 ps ww 12345(여기서 12345는 문제가 있는 프로세스의 PID임)하면 전체 명령줄이 표시됩니다.

이 문제를 직접 진단할 수는 있지만 루트 액세스 없이는 문제를 해결할 수 없습니다. 루트 권한이 있는 경우 프로세스를 안전하게 종료할 수 있습니다 ( 루트가 된 방법에 따라 또는 mandb명령을 사용하여 ). 어쨌든 시스템 관리자에게 연락하여 증상을 설명하십시오. 사용 가능한 모든 정보(예: 호출된 프로그램 , 사용된 매개변수 등)를 제공합니다.sudo pkill mandbsu -c 'pkill mandb'mandb

답변2

cron 스크립트를 확인했는데, 이는 man 인덱스를 업데이트하고, 수동 검색 속도를 높이고, 매일 실행되며, 안전하게 종료할 수 있는 명령일 뿐입니다.

마음에 안드시면 그냥 꺼주세요chmod -x /etc/cron.daily/man-db

답변3

이것은 최신 버전의 mandb에서 수정되었을 수 있는 Heisenbug입니다. 이는 손상된 맨페이지, 파일 시스템 순회 순서 및 mandb의 증분 재구축이 매우 느린 전체 재구축으로 바뀌었다는 사실과 관련이 있었습니다(~1,500만 페이지 오류, 회전하는 녹이 몇 분 소요됨).

문제를 해결하려면 다음을 실행하세요.

sudo mandb --no-purge --debug

--create그리고 그것의 유무에 관계없이 mandb를 실행하지 마십시오 --no-purge. 그런 다음 최신 버전인지 확인하고 cjwatson이 볼 수 있는 버그를 보고하세요.

반면에 문제를 해결하려면 다음을 실행하세요.

echo 'man-db man-db/auto-update boolean false' |sudo debconf-set-selections

이렇게 하면 man-db cronjob(매일 실행)과 dpkg 트리거(패키지가 설치될 때 실행)가 비활성화됩니다.

관련 정보