
우분투 14.04를 실행하는 서버가 있습니다. /var/log/auth.log에는 매시간 실행되는 일종의 자동화된 프로세스가 있는데 그 프로세스가 무엇인지 알고 싶습니다.
사용자가 예약한 크론 작업이 없다는 것을 이미 확인했습니다. 내가 해야 할 일은 매시간 auth.log에 다음 샘플 라인을 작성하는 것뿐입니다.
Dec 2 03:17:01 fi CRON[23537]: pam_unix(cron:session): session opened for user root by (uid=0)
Dec 2 03:17:01 fi CRON[23537]: pam_unix(cron:session): session closed for user root
Dec 2 04:17:01 fi CRON[23557]: pam_unix(cron:session): session opened for user root by (uid=0)
이를 추적하는 방법에 대한 아이디어가 있습니까?
답변1
사용자가 예약한 크론 작업이 없다는 것을 이미 확인했습니다.
/etc/crontab
아마도 및 에서 시스템 전체 cron 작업을 놓쳤을 것입니다 /etc/cron.d/*
.
아무것도 없는 것으로 나타나면 strace
cron 프로세스에 연결하여 읽는 파일이나 실행하는 명령을 확인할 수 있습니다.
strace -p 23537 -e file
strace -p 23537 -f -e execve [-s 10000]
이전 시스템에서는 cron이 자동 다시 로드 지원 없이 컴파일되었을 수 있으므로 누군가 /etc/crontab에서 작업을 수동으로 제거했지만 cron을 다시 로드하지 않은 경우 누군가가 다시 로드를 트리거할 때까지 해당 작업이 계속 실행됩니다.
답변2
당신이 사용할 수있는atop
.
설치되면 프로세스와 리소스 사용량을 자동으로 계산하고 로그 파일에 데이터를 기록하기 시작합니다. 충분한 데이터를 수집할 때까지 잠시 기다린 다음 로그를 검사하거나 구문 분석할 수 있습니다.
예를 들어, 로그를 수집한 후 어떤 프로세스가 실행 중인지 확인하려면 다음 명령을 권장합니다.
atop -r /var/log/atop/atop_<current date> -b 03:16 -e 03:18 -P PRG | grep -P 'PRG.*\s23557\s\('
이는 다음을 수행합니다.
- 오늘 03:16부터 03:18 사이의 로그 파일을 읽습니다.
- 프로세스에 대한 일반 데이터(프로세스 이름 포함)와 함께 기계에서 구문 분석 가능한 출력으로 데이터를 출력합니다.
- PID 23557이 포함된 프로세스가 고려된 줄을 검색하면 대괄호로 묶인 프로세스 이름이 무엇인지 확인할 수 있습니다. grep 패턴은 더 높은 정확도를 위한 것입니다. 행은 항상 로 시작하고
PRG
, 값 열은 공백으로 구분되며(PID는 별도의 열), PID 뒤의 열은 대괄호로 묶인 프로세스 이름입니다( 로 시작(
).