누적 sendmail 프로세스

누적 sendmail 프로세스

특정 프로세스의 인스턴스가 많이 표시되는 문제가 발생했습니다.

/usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t

몇 가지 내용을 읽었는데 프로세스가 cron 작업의 stdout 출력을 보내기 시작한 것 같지만 어떤 이유로 종료되지 않습니다.

하루에 하나의 프로세스가 있으므로 일일 크론 작업과 관련이 있다고 믿습니다. 이 프로세스의 시작 시간 ps aux(매일 04:01)은 일일 크론 작업의 시작 시간(매일 04:02)과 일치하는 것으로 보입니다. 그 내용은 /etc/cron.daily다음과 같습니다:

0anacron  0logwatch  cups  logrotate  makewhatis.cron  mlocate.cron  rpm  tmpwatch

그 내용은 /etc/crontab다음과 같습니다:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
 # run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

지금까지는 프로세스 수가 많을 때 수동으로 프로세스를 종료했습니다. 그렇지 않으면 서버의 리소스가 부족해지고 서버에서 실행되는 서비스가 중지됩니다. 최악의 시나리오에서는 이러한 프로세스를 종료하기 위해 다른 cron을 설정하기만 하면 되지만 소스에서 문제를 방지하는 것이 좋습니다. 이 문제의 원인을 아는 사람이 있나요? 누구든지 디버깅 단계를 제공할 수 있나요?

답변1

문제는 sendmail에 전혀 없습니다. crond 를 사용하여 pstree중단되지 않고 종료되지 않고 crond의 부모가 되는 프로세스가 더 많다는 것을 확인할 수 있었습니다. 각 프로세스를 살펴본 결과 그 중 하나가 다음을 수행하는 것으로 나타났습니다.

cat /var/log/some_log_file

그렇게 하다가 ls /var/log/some_log_file보니

/var/log/some_log_file|

some_log_file실제로 명명된 파이프입니다! 크론 작업이 파이프에서 데이터를 읽으려고 시도하지만 파이프에 아무 것도 전송되지 않기 때문에 종료되지 않는 것 같습니다.

수정사항으로 삭제하고 일반파일로 만들었습니다.

답변2

내 경우에는 5개의 크론 작업이 있고기본적으로 이메일을 보냅니다.. 따라서 cron 작업 끝에 이 표현식을 추가해야 합니다.

>/dev/null 2>&1

예를 들어:

*/5 * * * * /bin/sh /usr/share/shell/gnk-loader-rev2-20028-0027.sh > /dev/null 2>&1

더 많은 정보를 확인하실 수 있습니다여기또는여기.

관련 정보