从 logrotate 的手册页:
minsize size
日志文件在大于 size 字节时轮换,但不会在额外指定的时间间隔(每天、每周、每月或每年)之前轮换。相关的大小选项类似,只是它与时间间隔选项互斥,并且它会导致日志文件轮换而不考虑上次轮换时间。使用 minsize 时,会同时考虑日志文件的大小和时间戳。size size
日志文件在增长到大于 size 字节时进行轮换。如果 size 后跟 k,则假定大小以千字节为单位。如果使用M,则大小以兆字节为单位,如果使用G,则大小以千兆字节为单位。所以大小 100、大小 100k、大小 100M 和大小 100Gare 都是有效的。
我将大小设置为5M,将间隔设置为每周,认为日志将每周轮换一次,如果日志的大小超过 5M,则会发生额外的轮换。但是发生的情况是日志不会被轮换,除非它超过 5M,这似乎是minsize应该做的。
我是否错误地解释了手册?如果日志超过 5M,如何让日志每周轮换一次?
编辑:
我不确定以下信息是否相关,仅作为补充:
我正在使用 rsyslog 对消息、安全、cron、邮件日志、引导进行主要日志记录。以下是倒数第二个日志的轮换日期和文件大小,其中大小和间隔的设置如上所述:
filename rotation date file size
messages 20130129 5.3MB
secure 20130113 5.1kB
cron 20130113 3.6kB
maillog 20130113 1.1kB
Run Code Online (Sandbox Code Playgroud)
可以看出,只有消息被轮换。
编辑2:
我应该检查一下man logrotate
。他们实际上使用maxsize选项升级了它。这应该是我正在寻找的:
maxsize size
当日志文件在额外指定的时间间隔(每天、每周、每月或每年)之前增长超过 size 字节时,它们会被轮换。相关的大小选项类似,只是它与时间间隔选项互斥,并且它会导致日志文件轮换而不考虑上次轮换时间。使用 maxsize 时,会同时考虑日志文件的大小和时间戳。
为了为我的文件系统创建一个连续的空间来增长,我在 sda1 处创建了一个新的 EFI 系统分区,以便我可以从 sda5 处的当前分区迁移它。除了警告说:
内核:FAT-fs (sda1):卷未正确卸载。某些数据可能已损坏。请运行 fsck。
当我第一次创建 EFI 分区时,我没有注意到已经存在两天的警告。我卸载了文件系统并按如下方式执行了文件系统检查:
# umount /dev/sda1
# fsck -V /dev/sda1
fsck from util-linux 2.24
[/sbin/fsck.vfat (1) -- /boot/efi] fsck.vfat /dev/sda1
fsck.fat 3.0.24 (2013-11-23)
0x25: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
1) Remove dirty bit
2) No action
? 1
Leaving filesystem unchanged.
/dev/sda1: 14 files, 2435/51145 clusters
Run Code Online (Sandbox Code Playgroud)
我认为去除脏位可以解决这个问题。但它没有。实际应该怎么做?
我尝试使用 phpmail()
函数发送电子邮件,但不知何故失败,抱怨需要真实域名。在邮件日志中观察到以下内容:
sendmail 4984 r25984:from=apache,size=273,class=0,nrcpts=1,msgid=<201.r25@localhost.localdomain>,relay=apache@localhost
sendmail 4985 r25985:规则集=check_mail,arg1=,relay= mydomain.com [127.0.0.1], reject=553 5.5.4 ... 发件人地址需要真实域名
sendmail 4984 r25984: to=external@server.com, ctladdr=apache (48/48), delay=00: 00:01,xdelay=00:00:00,mailer=relay,pri=30273,relay=[127.0.0.1] [127.0.0.1],dsn=5.6.0,stat=数据格式错误
sendmail 4984 r25984:r259 DSN:数据格式错误
每当 logrotate 出现问题时,cron 都能够向 external@server.com 发送电子邮件。我不确定为什么 php 无法这样做。我尝试使用以下内容更改 `sendmail.mc 中的默认配置:
MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(mycom)dnl
Run Code Online (Sandbox Code Playgroud)
但是,它似乎没有任何影响。php 邮件功能中的地址标题已经设置好了。我还确保httpd_can_sendmail
启用了 SELinux 。我还需要做什么才能使邮件送达?
以下是取自Apache 网站的示例服务器状态页面:
Current Time: Thursday, 01-May-2014 07:38:59 UTC
Restart Time: Friday, 11-Apr-2014 18:30:33 UTC
Parent Server Config. Generation: 27
Parent Server MPM Generation: 26
Server uptime: 19 days 13 hours 8 minutes 26 seconds
Server load: 4.90 5.10 5.39
Total accesses: 200912024 - Total Traffic: 24965.1 GB
CPU Usage: u5133.55 s2390.16 cu0 cs0 - .445% CPU load
119 requests/sec - 15.1 MB/second - 130.3 kB/request
351 requests currently being processed, 417 idle workers
Run Code Online (Sandbox Code Playgroud)
我需要了解其中的值Server load
代表什么,因为文档 …
我试图生成自签名证书,以确保这两个example.com
和*.example.com
。看看这个和这个问题的答案,似乎有同样数量的人同意和不同意这是否可以做到。但是,来自认证机构的网站似乎表明可以这样做。
目前,这些是添加到我的 openssl 配置文件中的更改:
[req]
req_extensions = v3_req
[req_distinguished_name]
commonName = example.com
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = example.com
DNS.2 = *.example.com
Run Code Online (Sandbox Code Playgroud)
我尝试了上述配置并生成了证书。导航到 时https://example.com
,它会产生通常的警告,表明证书是“自签名”的。接受后,我导航到https://abc.example.com
并产生一个额外的警告,说该证书仅对example.com
.
证书详细信息仅example.com
在证书层次结构中列出,不存在任何通配符子域的迹象。
我不确定这是由于配置错误还是通用名称应该有通配符或无法做到这一点。
进一步更新:
这是我通过使用 openssl 查看证书请求得到的结果:
# openssl req -text -noout -in eg.csr
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=xx, L=Location, O=Example Pte Ltd, CN=example.com/emailAddress=admin@example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit) …
Run Code Online (Sandbox Code Playgroud) 我已经启用了 iptables 的日志记录。现在,我需要了解一些缩写。
2 月 23 日 20:43:08 蜘蛛侠内核 [2905.992450]:IN=wlan0 OUT=MAC=ff:ff:ff:ff:ff:ff:00:06:25:09:6a:b5:08:00 SRC=192.168 .1.100 DST=192.168.1.255 LEN=241 TOS=0x00 PREC=0x00 TTL=64 ID=64564 DF PROTO=UDP SPT=138 DPT=138
以下各项是什么意思:
任何帮助表示赞赏。谢谢。
执行软件更新后,我收到了数百个这样的错误:
2013-11-11 19:00:00 err user audispd - queue is full - dropping event
Run Code Online (Sandbox Code Playgroud)
不确定这是否是一个错误,但它以每秒几行的速度迅速填满我的日志文件,使我很难查看其他错误。我已经在使用日志轮换来防止我的光盘填满。有什么办法可以通过排除这样的重复错误来进一步优化 rsyslog 配置?
我正在使用该LocationMatch
指令在匹配某些 URL 模式时设置标头:
# 1
# Expected matches: //mysite.com/any-page-with-at-least-a-character-and-no-dot
<LocationMatch "^/[^\.]+$">
Header set X-Intelligence "STUPID"
</LocationMatch>
# 2
# Expected matches: //mysite.com/ , //mysite.com/main , //mysite.com/about
<LocationMatch "^/(|main|about)$">
Header set X-Intelligence "CLEVER"
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)
但是,URL //mysite.com/ 匹配#1 而不是#2。这是一个错误还是我做错了什么?
我什至尝试"^/(main|about)?$"
在 #2 中使用正则表达式,但仍然没有爱。
我有一个 virtualhost 指令,如果输入无效的子域,它会提供自定义 404 错误:
<VirtualHost *:80> # the first virtual host
ServerName site_not_found
RedirectMatch 404 ^/(?!custom_error)
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias ??.example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我想设置一个虚拟主机以通过 HTTPS 连接显示相同的自定义错误。我尝试了以下方法:
<VirtualHost *:443> # the first virtual host
ServerName site_not_found
RedirectMatch 404 ^/(?!custom_error)
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias ??.example.com
# SSL options, other options, and stuff defined here.
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但是服务器不会启动并发出错误:
服务器应该是 SSL-aware 但没有配置证书 [提示:SSLCertificateFile] ((null):0)
即使没有为这个虚拟主机打开 SSLEngine,似乎也需要 SSL 证书。除了提供证书之外,还有没有办法解决这个问题?关闭模块不是一个选项,因为我需要为虚拟服务器 example.com 使用 SSL。
我正在尝试使用 systemd 来构建 Apache、PHP-FPM 和 MariaDB 服务的关闭和启动:
这些是文件/etc/systemd/system
夹中的其他配置文件:
# httpd.service
.include /usr/lib/systemd/system/httpd.service
[Unit]
After=mariadb.service php-fpm.service
Before=php-fpm.service
# php-fpm.service
.include /usr/lib/systemd/system/php-fpm.service
[Unit]
Before=mariadb.service
Run Code Online (Sandbox Code Playgroud)
我的意图是仅在 PHP-FPM 和 MariaDB 启动后才启动 Apache,并在停止 PHP-FPM 之前停止 Apache,在 MariaDB 之前停止 PHP-FPM。
但是,我在启动和关闭时都遇到错误:
12:42:09 systemd[1]: Found ordering cycle on php-fpm.service/stop
12:42:09 systemd[1]: Found dependency on mariadb.service/stop
12:42:09 systemd[1]: Found dependency on php-fpm.service/stop
12:42:09 systemd[1]: Job httpd.service/stop deleted to break ordering cycle starting with php-fpm.service/stop
12:42:09 systemd[1]: Stopping MariaDB database server...
12:42:12 systemd[1]: Stopped MariaDB database server. …
Run Code Online (Sandbox Code Playgroud) 我正在使用 IPTABLES 在我的服务器上进行出口日志记录,其中包含以下行,该行应该提供有关记录的所有流量的 UID 信息:
-A OUTPUT -j LOG --log-prefix "IPTABLES(O): " --log-level info --log-uid
Run Code Online (Sandbox Code Playgroud)
然而,偶尔我会得到没有 UID 的日志,如下所示:
IPTABLES(O): IN= OUT=eth0 SRC=1.2.3.4 DST=5.6.7.8 LEN=83 TOS=0x00 PREC=0x00 TTL=64 ID=54321 DF PROTO=TCP SPT=50505 DPT=443 WINDOW=342 RES= 0x00 ACK PSH FIN URGP=0
传出流量不包含任何 UID 信息的原因是什么?
对我来说,从 SMART 导出的一个磁盘的温度读数与 RAID 1 配置中的双胞胎的温度读数相差多达9°C,这对我来说似乎很奇怪:
# smartctl -d scsi -A /dev/sg1
=== START OF READ SMART DATA SECTION ===
Current Drive Temperature: 34 C
Drive Trip Temperature: 68 C
# smartctl -d scsi -A /dev/sg2
=== START OF READ SMART DATA SECTION ===
Current Drive Temperature: 43 C
Drive Trip Temperature: 68 C
Run Code Online (Sandbox Code Playgroud)
该服务器是一款1U的Dell PowerEdge R210与规格在这里。造成这种异常的原因可能是什么?
我正在托管一个允许用户使用 HTTP 或 HTTPS 连接的站点。默认的 apache 配置为通过 HTTPS 发出的请求生成一个单独的日志文件,其中包含两个附加信息,即协议(例如 TLSv1)和密码(例如 DHE-RSA-CAMELLIA256-SHA)。我想知道记录这两个额外信息的好处,或者我是否应该将它与没有这两列的访问日志合并以便于故障排除。