我正在寻找一个命令来检查 Debian 和 RHEL 发行版上 Apache 服务器中配置文件的有效性。我需要在重新启动之前执行此操作,因此不会有停机时间。
我需要做的就是以特定用户身份运行特定脚本,该用户nologin/false在/etc/passwd.
我会以 root 身份运行脚本,这应该以另一个用户身份运行。跑步:
~# su -c "/bin/touch /tmp/test" testuser
Run Code Online (Sandbox Code Playgroud)
会工作,但我需要一个有效的测试用户外壳。我知道我可以禁用密码passwd -d testuser并将外壳保留为/bin/bash这种方式会安全一点,但我需要有nologin/false外壳。
基本上我需要的是crontab当我们将作业设置为以特定用户身份运行时会做什么,而不管这个用户是否有nologin/falseshell。
ps 我发现这个线程Executing a command as a nologin user,但我不知道如何concatenate将命令su -s /bin/sh $user发送到我需要运行的脚本。
我有一台服务器一直正常工作,直到 2013 年 10 月 3 日上午 10:50,它开始间歇性地向客户端返回“502 Bad Gateway”错误。
大约五分之四的浏览器请求成功,但大约五分之一的请求失败并显示 502。
nginx 错误日志包含数百个这样的错误;
2013/10/05 06:28:17 [error] 3111#0: *54528 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 66.249.66.75, server: www.bec-components.co.uk request: ""GET /?_n=Fridgefreezer/Hotpoint/8591P;_i=x8078 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.bec-components.co.uk"
Run Code Online (Sandbox Code Playgroud)
但是 PHP 错误日志不包含任何匹配的错误。
有没有办法让 PHP 给我更多关于它为什么要重置连接的信息?
这是nginx.conf;
user www-data;
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 30;
tcp_nodelay on;
client_max_body_size 100m; …Run Code Online (Sandbox Code Playgroud) 我在使用 Linux 系统时遇到问题,我发现sysstat并sar报告了磁盘 I/O、平均服务时间以及平均等待时间的巨大峰值。
下次发生这些峰值时,我如何确定哪个过程导致了这些峰值?
有可能sar吗?我可以从已经录制的sar文件中找到这些信息吗?
的输出sar -d,系统停顿发生在下午 12.58-13.01 左右。
12:40:01 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
12:40:01 dev8-0 11.57 0.11 710.08 61.36 0.01 0.97 0.37 0.43
12:45:01 dev8-0 13.36 0.00 972.93 72.82 0.01 1.00 0.32 0.43
12:50:01 dev8-0 13.55 0.03 616.56 45.49 0.01 0.70 0.35 0.47
12:55:01 dev8-0 13.99 0.08 917.00 65.55 0.01 0.86 0.37 0.52
13:01:02 dev8-0 6.28 0.00 400.53 63.81 0.89 141.87 141.12 88.59 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用在 Docker 中运行的 CentOS 映像列出服务
systemctl list-units
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息:
Failed to get D-Bus connection: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
任何建议可能是什么问题?
我正在尝试在 KVM 上使用不同的存储池,以便存储我的 VM 的虚拟磁盘以及我正在使用的操作系统的 ISO。
例如:我想使用/media/work/kvm挂载的目录/dev/sda5作为所有未来情况的默认存储池
要配置、创建和启动一个新的存储池,这很容易,但至少在 Ubuntu 中,如果我从不同的存储池中选择 ISO 并不重要,Virtual Machine Manager总是将我指向默认存储池 ( /var/cache/libvirt) 作为将创建来自我的 VM 的虚拟磁盘的存储。
我怎样才能避免这种情况?
在 Nginx 配置中,当你想通过使用limit_req_zone/来限制请求处理速率时limit_req instructions,我不太明白该nodelay选项的用途。
在我的理解中,它会在不延迟它们的情况下终止超过定义速率的请求。所以它似乎相当于burst=0. 这就是为什么我不理解以下示例的原因:
limit_req zone=one burst=5 nodelay;
Run Code Online (Sandbox Code Playgroud)
burst定义了可以延迟的请求数量,那么定义burst是否有nodelay选项是什么意思?
我正在使用 Debian Stretch (9.7) 配置 GNU/Linux 路由器,在重新启动服务器之前,从一个接口到另一个接口的所有流量都正常,但在那之后,我收到了这样的消息 (tty):
enp1s6: Something Wicked happened! ffff.
Run Code Online (Sandbox Code Playgroud)
我在同一交换机和同一网络上有一台主机,用于测试目的,基本上,路由器的 LAN 不响应回显请求。
这里有一些关于服务器的信息。
内核日志
Jan 25 08:58:02 server001 kernel: [25060.494127] enp1s6: Link changed:
Jan 25 08:58:02 server001 kernel: [25060.494127] 100Mbps, half duplex
Jan 25 08:58:02 server001 kernel: [25060.494254] enp1s6: Something Wicked happened! ffff.
Jan 25 08:58:02 server001 kernel: [25060.497338] enp1s6: Link up
Jan 25 08:58:02 server001 kernel: [25060.497557] enp1s6: Link changed:
Jan 25 08:58:02 server001 kernel: [25060.497557] 100Mbps, full duplex
Jan 25 08:58:02 server001 kernel: [25060.499986] …Run Code Online (Sandbox Code Playgroud) 我的 Apache logrotate 配置如下所示:
/var/log/http/*log {
monthly
dateext
dateformat .%Y.%m
[... rest stripped for brevity ...]
}
Run Code Online (Sandbox Code Playgroud)
这很好用,除了旋转文件名上的日期比日志实际涵盖的时间晚一个时间段,例如error_log.2012.09涵盖 2012-08-01 到 2012-08-31。
我意识到 Apache 有其他选项(例如 cronolog),但我还有一堆其他日志需要轮换,除了这个问题之外,logrotate 确实正是我所需要的。
有没有办法让 logrotate 在生成旋转的文件名时使用日期偏移量——或者,更好的是,找出前一个时间段?
对于我的新服务器上的所有站点,似乎一旦nginx提供了一定数量的流量,它就会开始提供“错误 502 - 错误网关! ”。
让我们来看看一些日志和配置...
操作系统:Ubuntu 16.04(服务器)
硬件:6核,12GB内存
面板:ISPConfig
nginx 版本:1.10.3
来自/var/www/example/log/error.log:
11: Resource temporarily unavailable) while connecting to upstream, client: 216.170.123.179, server: example.com, request: "GET /KHFxygk9 HTTP/1.1", upstream: "fastcgi://unix:/var/lib/php7.0-fpm/web3.sock:", host: "example.com", referrer: "http://example.com/"
2017/08/10 06:01:06 [error] 15408#15408: *31372 connect() to unix:/var/lib/php7.0-fpm/web3.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 192.3.114.12, server: example.com, request: "GET /jiPNQjwp HTTP/1.1", upstream: "fastcgi://unix:/var/lib/php7.0-fpm/web3.sock:", host: "example.com", referrer: "http://example.com/"
Run Code Online (Sandbox Code Playgroud)
这是我的配置文件:
[www]
user = …Run Code Online (Sandbox Code Playgroud) 我想将所有 HTTP 和 HTTPS 流量重定向为squid充当透明代理。然后,该流量将在特定时间内被阻止或授权(批量)。具体来说,我不想解密/重新加密 HTTPS 流量,而是按原样推送。
HTTP 部分起作用,REDIRECT规则将shorewall所有打算发送到目标端口的流量传输80到模式下的侦听3128鱿鱼端口transparent。
同样的技巧对于端口443不起作用。
有关于如何为 HTTPS 流量设置透明代理的教程,但我发现的所有教程都描述了创建证书对来解密/重新加密流量 - 这是我不想做的事情。
鱿鱼维基提到 CONNECT 作为隧道 HTTPS 流量的一种方式,但添加http_access allow CONNECT all到配置(并禁用默认值deny)不会改变任何东西。
然后,之前的 一些答案表明,在不破坏 TLS 隧道的情况下,透明的 HTTPS 流量是不可能的。
因此:是否有一种方法可以配置,squid以便通过重新路由到它的 HTTPS 流量iptables然后透明地传输,而不需要任何修改?
(当满足某些时间规则时,我最终会阻止(这就是说,该阻止不会基于 HTTPS 流本身内的任何内容))
linux ×3
nginx ×3
http ×2
apache2 ×1
bash ×1
centos ×1
date ×1
debian ×1
docker ×1
ethtool ×1
https ×1
icmp ×1
io ×1
libvirt ×1
linux-kernel ×1
logging ×1
login ×1
logrotate ×1
php ×1
php-fpm ×1
php7 ×1
shell ×1
squid ×1
storage ×1
su ×1
systemctl ×1
systemd ×1
virsh ×1
zabbix ×1
zabbix-agent ×1