我根据此页面上的教程创建了一个脚本: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
这是我的克龙
00 22 * * 5 /bin/bash -c /home/user/goaccess.sh
输出文件信息如下,这让我认为管道不起作用:
GoAccess - 1.2 用法: goaccess [文件名] [ 选项 ... ] [-c][-M][-H][-q][-d][...]还可以向命令提供以下选项:日志和日期格式选项 --date-format= - 指定日志日期格式。例如,%d/%b/%Y --log-format= - 指定日志格式。内部引号需要转义,或使用单引号。--time-format= - 指定日志时间格式。例如,%H:%M:%S 用户界面选项 -c --config-dialog - 提示日志/日期/时间配置窗口。-i --hl-header - 颜色突出显示活动面板。-m --带鼠标 - 在主仪表板上启用鼠标支持。--color= - 指定自定义颜色。有关更多详细信息和选项,请参见手册页。--配色方案=<1|2|3> - 方案:1 => 灰色,2 => 绿色,3 => 物语。--html-custom-css= - 在 HTML 报告中指定自定义 CSS 文件。--html-custom-js= - 在 HTML 报告中指定自定义 JS 文件。--html-prefs= - 设置默认的 HTML 报告首选项。--html-report-title=
提前谢谢你。
我遇到了同样的问题,并在这里找到了答案。
您需要在goaccess
命令后使用破折号来告诉它您正在管道传输日志:
/bin/zcat `find /var/log/nginx/ -name "myhost_access.log.*.gz" -mtime -20` | goaccess - > $GOACCESSREPORT_DIR/$HOST-monthly-$DATE.html
这也帮助了我,谢谢大家。
我发现这对我最有效:
#!/bin/bash
# create the report
/usr/bin/zcat -f /var/log/nginx/nhh-access.* | /home/linuxbrew/.linuxbrew/bin/goaccess - --log-format=COMBINED > /var/www/logs/nhh.html
/usr/bin/zcat -f /var/log/nginx/no-host-access.* | /home/linuxbrew/.linuxbrew/bin/goaccess - --log-format=COMBINED > /var/www/logs/no-host.html
# change the title:
/usr/bin/sed -i 's/Server /nhh /' /var/www/logs/nhh.html
/usr/bin/sed -i 's/Server /no-host /' /var/www/logs/no-host.html
克龙:
# every 13 minutes:
*/13 * * * * /var/www/logs/goaccess-job.sh > /var/www/logs/go.log 2>&1