내 서버 로그 이름은 다음과 같습니다.
서버.로그.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
결과를 표시할 필요가 없습니다. 아무 것도 표시되지 않으면 일반적으로 아무 것도 발견되지 않았음을 의미합니다.