0

我正在尝试创建一个 shell 脚本:

  • 将文件从我的日志目录复制到单独的目录以进行分析。

  • Gunzip 压缩该文件并查找文本模式

  • 将该模式输出到文件以供进一步分析

  • 删除所述文件

我正在尝试分阶段进行。到目前为止,我还无法离开地面。叹...

我从这里提取了这个例子并开始修改它:

#!/bin/bash


FILES= `ls /opt/dir1/scripts/access_*.gz`



for i in $FILES
  do
    cp $i /tmp/apache
    gunzip $i | grep -i 'Mozilla' >> output.txt
  done

每次我这样做时,我都会收到这样的权限被拒绝消息:

./test1.sh: line 7: /opt/dir1/scripts/access_log.1.gz: Permission denied

即使我以 root 身份运行此脚本,并且如果我手动执行这些命令,我​​也没有问题。有任何想法吗?

谢谢

4

1 回答 1

0

Root 似乎没有写入权限/opt/dir1/scripts/。你所做的不是你打算做的;)

首先,您应该创建文件夹以确保它存在:mkdir -p /tmp/apache

随着cp $i /tmp/apache您将文件复制到该目录中。

gunzip $i不会提取您刚刚复制的文件,而是提取上面行中的原始文件。我建议使用更简单的方法来做到这一点zgrep。zgrep 类似于 grep,但也适用于 gzip 压缩文件。试试这个:

#!/bin/bash
# create the folder (-p supreses warnings if the folder exists)
mkdir -p /tmp/apache
# create the output file (empty it, if it exists)
echo "" > /tmp/apache/output.txt
zgrep -i 'Mozilla' /opt/dir1/scripts/access_*.gz >> /tmp/apache/output.txt
于 2013-03-14T17:10:11.020 回答