2

我根据此页面上的教程创建了一个脚本:https ://johnveldboom.com/posts/goaccess-automated-reports-last-30-days-via-cron/ 。当脚本从终端运行时,它可以完美运行。问题是当 cron 运行脚本时,管道似乎不起作用。

我用谷歌搜索可能的解决方案。我尝试在 cron 上的 bash 中添加“-c”,但这没有帮助。

这是脚本

 #!/bin/bash
 # filename: goaccess.sh (with +x permission)
 HOST="myHost"
 GOACCESSREPORT_DIR=/home/user/goaccess_reports/
 DATE=$(date +'%Y.%m')
 /bin/zcat `find /var/log/nginx/ -name "myhost_access.log.*.gz" -mtime -20` | goaccess > $GOACCESSREPORT_DIR/$HOST-monthly-$DATE.html
 echo "My Host GoAccess Report" | sudo mail -s "My Host GoAccess Report" email@test.com -A $GOACCESSREPORT_DIR/$HOST-monthly-$DATE.html

这是我的 cron

 00 22 * * 5 /bin/bash -c /home/user/goaccess.sh

输出文件信息如下,这让我认为管道不起作用:

GoAccess - 1.2 用法:goaccess [filename] [ options ... ] [-c][-M][-H][-q][-d][...] 以下选项也可以提供给命令: 日志和日期格式选项 --date-format= - 指定日志日期格式。例如,%d/%b/%Y --log-format= - 指定日志格式。内引号需要转义,或者使用单引号。--time-format= - 指定日志时间格式。例如,%H:%M:%S 用户界面选项 -c --config-dialog - 提示日志/日期/时间配置窗口。-i --hl-header - 颜色突出显示活动面板。-m --with-mouse - 在主仪表板上启用鼠标支持。--color= - 指定自定义颜色。有关更多详细信息和选项,请参见手册页。--color-scheme=<1|2|3> - 方案:1 => 灰色,2 => 绿色,3 => Monokai。--html-custom-css= - 在 HTML 报告中指定自定义 CSS 文件。--html-custom-js= - 在 HTML 报告中指定自定义 JS 文件。--html-prefs= - 设置默认的 HTML 报告首选项。--html-报告-标题=

先感谢您。

4

1 回答 1

2

我遇到了同样的问题,在这里找到了答案。

您需要在goaccess命令后使用破折号来告诉它您正在通过管道输入日志:

/bin/zcat `find /var/log/nginx/ -name "myhost_access.log.*.gz" -mtime -20` | goaccess - > $GOACCESSREPORT_DIR/$HOST-monthly-$DATE.html
于 2020-12-14T03:22:29.147 回答