Cron Bash 스크립트 - /var/spool/mail/root 대신 현재 터미널에 에코됩니다.

Cron Bash 스크립트 - /var/spool/mail/root 대신 현재 터미널에 에코됩니다.

Cron Bash 스크립트가 /var/spool/mail/root 대신 현재 세션 터미널에 에코될 수 있습니까?

로그 파일에 오류를 기록하는 스크립트가 있지만 보충/중요하지 않은 정보가 터미널에 반영됩니다.

cron에서 루트로 스크립트를 실행하면 메시지가 터미널 대신 /var/spool/mail/root로 리디렉션됩니다.

스토리지 대신 루트나 다른 사용자가 로그인한 경우 터미널에 표시되도록 하고 싶습니다. 아무도 로그인하지 않았을 때 이러한 메시지가 사라지더라도 괜찮습니다. Cisco IOS와 마찬가지로

답변1

에서 실행할 때 "현재 터미널"이 없습니다 cron.

기본적으로 cron작업 출력이 포함된 이메일이 전송됩니다. 로컬 메일 하위 시스템은 이를 파일로 전송합니다 . 이 파일은 이나 선호하는 로컬 이메일 클라이언트를 /var/spool/mail/$USER사용하여 읽을 수 있습니다 .mailmailx

cron다음과 같이 작업의 출력을 홈 디렉터리의 파일에 쓰도록 할 수 없는 특별한 이유는 없습니다 .

* * * * *    date >$HOME/.current_date 2>&1

GUI를 실행하는 경우 GUI를 사용하여 notify-send화면의 팝업에 메시지를 쓸 수 있습니다. 그러나 그것 을 만들어 내는 것은 간단 하지 않습니다 cron. 하나 있다찾다StackExchange 주변해결책이 하위 질문에.

tty에 쓰고 싶다면 실제로 와 같은 것을 사용할 수 있습니다 echo hello, world >/dev/tty1. 쓰기 전에 실제로 올바른 계정에 로그인했는지 확인하고 싶을 수도 있습니다 /dev/tty1(이는 장치의 소유권을 확인하여 수행할 수 있습니다 stat -c %U /dev/tty1).

#!/bin/bash
#
me=roaima    # userid to write messages to

log()
{
    local tty owner
    for tty in $( who | awk -v me="$me" '$1 == me {print $2}' )
    do
        owner="$( stat -c %U "/dev/$tty" 2>/dev/null )"
        [[ "$me" = "$owner" ]] && echo "$@" >"/dev/$tty"
    done
}

# ...

log "hello, world"
log "this is a message for you to read RIGHT NOW"
exit 0

그러나 이 명령을 사용하는 것이 더 좋습니다 write. 예를 들어 로그인 터미널에 "roaima" 사용자를 쓰려면 다음을 수행합니다.

* * * * *    echo hello from cron | write roaima >/dev/null 2>&1

답변2

당신은 그것을 사용할 수 있습니다쓰다특정 로그인 사용자에게 텍스트를 보내는 유틸리티입니다.

command that produces output | write root

설명서에서는 다음을 추가로 설명합니다.

여러 번 로그인한 사용자에게 쓰려면 터미널 매개변수를 사용하여 쓸 터미널을 나타낼 수 있습니다. 그렇지 않으면 수신자의 터미널이 구현 정의 방식으로 선택되고 정보 메시지가 발신자의 표준 출력에 기록됩니다. 어떤 터미널이 선택되었는지 표시합니다.

Red Hat/CentOS에서 구현 정의 접근 방식은 유휴 시간이 가장 짧은 터미널을 선택하는 것입니다.

로그인할 수 있는 여러 사용자 중 한 명에게 쓰기를 원할 경우 다음을 수행할 수 있습니다.

for u in root alice bob charlie
do
    if users|grep -w -q $u
    then
        user=$u
        break
    fi
done
if test -n "$user"
then
    command that produces output | write $user
fi

관련 정보