我的服务器日志名称为:
server.log.2020-12-01 server.log.2020-12-02 server.log.2020-12-03 server.log.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
显示结果。如果没有显示任何内容,通常意味着没有找到任何内容。