해당 사용자가 읽지 않은 메일이 있는지 확인하기 위해 사용자 ID를 매개변수로 허용하는 쉘 스크립트를 작성 중입니다 /var/spool/mail
.
사용자의 메일 상태를 어떻게 확인하나요? /var/spool/mail
읽지 않은 이메일만? 그렇다면 파일 크기가 0보다 큰 사용자만 확인한다고 가정합니다.
답변1
읽지 않은 메시지를 찾는 한 가지 방법은 메일 스풀 파일의 타임스탬프를 확인하는 것입니다. 파일이 액세스(읽기)된 후 기록된 경우, 즉 파일이 mtime
보다 큰 atime
경우 읽지 않은 메시지가 있습니다.
for f in /var/spool/mail/* ; do
[ $(stat -c '%Y -gt %X' "$f") ] && echo "$f has unread mail"
done
물론 편지함을 열면 누군가가 개별 메시지를 보는지 여부에 관계없이 편지함에 있는 모든 내용은 "읽은" 것으로 간주됩니다.
많은 경우 읽고 있는 메시지도 ~/mbox
스풀 디렉터리에서 이동(으로 이동)되므로 파일 크기만 확인하면 됩니다.
답변2
옵션 및 다음과 함께 mailx
(이전 mail
) 명령을 사용할 수 있습니다 .-e
u
-e 시스템 메일함에서만 메일을 확인합니다. 그렇다면 종료 상태 0이 반환되고, 그렇지 않으면 0이 아닌 값이 반환됩니다.
-u user 주어진 사용자 이름의 메일함을 읽습니다.
루트가 아닌 사용자가 다른 사용자의 이메일을 확인할 수 있도록 허용하려면 해당 사용자가 루트로 실행할 수 있도록 허용하는 sudo
파일에 규칙을 만들어야 합니다 . 예:/etc/sudoers
mailx
fred localhost=/bin/mailx -e -u *
man sudoers
전체 형식을 확인하세요 .
그런 다음 종료 상태를 테스트하면 됩니다.
sudo mailx -e -u tom
프레드에 의해 처형됨