타임스탬프가 표시된 서버 로그에 액세스하는 방법은 무엇입니까?

타임스탬프가 표시된 서버 로그에 액세스하는 방법은 무엇입니까?

내 서버 로그 이름은 다음과 같습니다.

서버.로그.2020-12-01 서버.로그.2020-12-02 서버.로그.2020-12-03 서버.로그.2020-12-02

매일 업데이트되는지 확인하고 마지막 몇 줄을 출력으로 인쇄하고 싶습니다(로그가 있는 경우).

나는 이것을하려고 노력한다

Present_log=find  /home/username/example_server_logs/server.log.$(date +%Y-%m-%d)
echo "tail -2 /home/username/example_server_logs/server.log.$(date +%Y-%m-%d) | grep $(date +%Y-%m-%d)" 

하지만 이건 도움이 안 돼

답변1

이를 수행하는 방법은 다음과 같습니다.

# save the current logfile name in a variable once for all
Present_log="/home/username/example_server_logs/server.log.$(date +%Y-%m-%d)"

if [ -f "$Present_log" ]; then # checking whether today's logfile exists
    # dealing with today's logfile
    # you may add further processing of the logfile here if required
    tail -2 "$Present_log"
else
    echo 'no logfile found'
fi
  • 그런 일은 할 수 없습니다 myVariable=find.... 명령 결과를 변수로 검색하려면 $(...)연산자를 사용해야 합니다.myVariable=$(find...)
  • find전체 경로 + 파일 이름을 이미 알고 있으므로 그럴 필요가 없습니다.
  • 자세히 알아보기[ -F ...]운영자
  • 이 라인으로 무엇을 달성하고 싶은지 명확하지 않습니다 echo "tail ...". tail, grep다른 것들은 실제로 텍스트를 출력하고(물론 입력 + 매개변수에 따라) echo결과를 표시할 필요가 없습니다. 아무 것도 표시되지 않으면 일반적으로 아무 것도 발견되지 않았음을 의미합니다.

관련 정보