在系统日志上创建触发器

在系统日志上创建触发器

有一个脚本(在这里找到),旨在监视日志文件:如果关键字触发则执行命令:

journalctl -f | \
while read line ; do
    echo "$line" | grep "apcu"
    if [ $? = 0 ]
    then
           systemctl restart php7.2-fpm.service
    fi
done 

我使用以下几行创建并启用了 systemd 服务:

[Service]
ExecStart=/home/alex/journal-trigger.sh
StandardOutput=file:/home/alex/journal-trigger.log
StandardError=file:/home/alex/journal-trigger.error.log

这是一个临时措施,当 apcu.so 模块失败时会重新启动 php 服务。然而,我面临一个缺点(当命令包含“apcu”时):

sudo php cachetool.phar apcu:cache:info --fcgi

In FastCGI.php line 133:          
  FastCGI error: Stream got blocked, or terminated. (/var/run/php/php7.2-fpm.sock)

In Socket.php line 525:
  Stream got blocked, or terminated.

我该如何修复它?

答案1

好的,我通过解决了这个问题,grep kernel\:\ traps\:.*apcu\.so
但真正的修复是在应用程序级别:apcu_clear_cache()无意中留在了产品服务器上的 PHP 代码中...

相关内容