我有 crontab 和一个简单的 bash 脚本,它会定期向我发送包含日志文件中的 PHP、NGINX、MYSQL 错误的电子邮件。这是一个简化的示例。
#/home/user/status.sh
[email protected]
PHP_ERROR=`tail -5 /var/log/php-fpm/error.log`
NGINX_ERROR=`tail -5 /var/log/nginx/error.log`
MYSQL_ERROR=`tail /var/log/mysqld.log`
DISK_SPACE=`df -h`
echo "
Today's, server report::
==================================
DISK_SPACE: $DISK_SPACE
---------------------------------
MEMORY_USAGE: $MEMORY_USAGE
-----------------------------------
NGINX ERROR: $NGINX_ERROR
-----------------------------------
PHP ERRORS: $PHP_ERROR
------------------------------------
MYSQL_ERRORS: $MYSQL_ERROR
-------------------------------------
" | mail -s "Server reports" $EMAIL
我知道这是一个非常基本的用法,但正如您所看到的,我试图分离错误,但不包括正在\n
工作的 html 标签。
所以,我的问题是,是否可以使用 HTML 标签来格式化文本,如果不行,那么有什么替代方法。
答案1
您可以使用邮件客户端可以读取的任何格式。为了更好地编码您的邮件,请使用以下<<EOF
语法:
#/home/user/status.sh
[email protected]
PHP_ERROR=`tail -5 /var/log/php-fpm/error.log`
NGINX_ERROR=`tail -5 /var/log/nginx/error.log`
MYSQL_ERROR=`tail /var/log/mysqld.log`
DISK_SPACE=`df -h`
mail -s "Server reports" $EMAIL <<EOF
Today's, server report::
==================================
DISK_SPACE: $DISK_SPACE
----------------------------------
MEMORY_USAGE: $MEMORY_USAGE
----------------------------------
NGINX ERROR: $NGINX_ERROR
----------------------------------
PHP ERRORS: $PHP_ERROR
----------------------------------
MYSQL_ERRORS: $MYSQL_ERROR
----------------------------------
EOF