Articles of 系统

通过系统日志添加Apache日志导出仍然写本地日志

为了安全和日志检查的原因,我们将syslog / syslog-ngconfiguration为将Apache日志导出为专用的日志服务器。 但是我想在Apache服务器上保留一个错误日志的副本,以便在出现问题时方便理解。 这是configuration文件 ErrorLog /space/www/vhost/data/logs/errors.log ErrorLog "|/usr/bin/logger -t vhost_error -p local6.info" CustomLog /space/www/vhost/data/logs/access.log combined CustomLog "|/usr/bin/logger -t vhost_access -p local6.info" combined access.log在两台服务器(apache one和log one)上,但是errors.log只在日志服务器上。 我不明白为什么。 也许我可以在Apache服务器上configurationsyslog来编写本地日志并将其发送到日志服务器?

docker集装箱系统单元集成

我运行一个附加data容器的dockerapp容器容器。 为了保持它与CoreOS主机更新,我使用systemd单位文件如下。 我有点困惑,为什么systemctl restart drone不起作用。 初始运行: docker rm -f drone_data; docker rm -f drone; docker run –name "drone_data" drone_data sh; docker run -d -p 1234:4321 –volumes-from=drone_data -v /var/run/docker.sock:/var/run/docker.sock –name "drone" drone systemctl单元文件: Description=Drone CI (Docker Container) Requires=docker.service After=docker.service [Service] User=core Restart=on-failure RestartSec=10 ExecStart=/usr/bin/docker start drone ExecStop=-/usr/bin/docker stop drone [Install] WantedBy=multi-user.target

从systemd单元获取日志到平面文件和logstash

我正在CentOS 7下运行systemd下的应用程序。它logging到stdout,systemd正在将它捕获到journalctl中。 我也想: 得到一个旋转的文本日志文件也保存到本地文件系统熟悉我们的系统pipe理员 将这些数据干净地放到logstash中,理想情况下只是应用程序日志,而不是所有的syslog,其中还包括OS消息,其他应用程序等 我最初使用djb的daemontools中的multilog进行了研究,但是由于systemd中的单元文件并不喜欢ExecStart shellpipe道, ExecStart对于CentOS中的daemontools没有官方的RPM,所以我希望有一个不太复杂的方法。 我目前有从/var/log/messages和/var/log/secure logstash-forwarder读取系统日志,但我宁愿不包括从这个特定的应用程序以外的消息。

如何确定执行systemd manager作业的Linux用户/组?

我试图确定哪个Linux用户/组运行systemd作业,以便我可以相应地设置D-Bus权限。 当我这样做: sudo systemctl start myservice 这最终调用了一个可执行文件,它试图在D-Bus上注册自己,但是为了工作,我需要在D-Busconfiguration中提供用户权限。 我怎么知道哪个Linux用户/组与上面有关联?

systemd:授予非特权用户权限以更改一个特定服务

我正在一个无头的Linux机器上运行一个私人游戏服务器。 因为我不是白痴,所以说服务器作为自己的非特权用户运行,只需要最小的访问权限就可以下载更新并修改世界数据库。 我还创build了一个systemd单元文件,以便在需要时正确启动,停止和重新启动服务器(例如,对于所述更新)。 但是,为了实际调用systemctl或service <game> start/stop/restart我仍然需要以root用户或sudo能力用户身份login。 有没有办法告诉systemd对于<game>服务,非特权用户gamesrv被允许运行start / stop / restart命令?

在systemctl中显示自定义退出状态

我想在有人运行systemctl status并且脚本失败时显示自定义消息。 Systemd似乎有一些内置的。 如果我有一个脚本运行exit 200 systemctl状态将出(code=exited, status=200/CHDIR) 如何设置自定义消息的状态? 我想能够做exit 199 ,并显示像status=199/MY_CODE

如何从systemd服务的内容输出日志到文件

那么,我有一个configurationsystemctl服务。 这是configuration文件: [Unit] Description=The description of the service (: After=network.target [Service] ExecStartPre=/bin/echo 'Starting Service' >> /var/log/node/myapp.log ExecStart=/root/.nvm/versions/node/v5.0.0/bin/node ./bin/www ExecStopPost=/bin/echo 'Stopping Service' >> /var/log/node/myapp.log Restart=always #StandardOutput=/var/log/node/myapp.log #StandardError=/var/log/node/myapp.log SyslogIdentifier=myapp Environment=NODE_ENV=production WorkingDirectory=/home/user/node-apps/theapp [Install] WantedBy=multi-user.target 我需要的?: 1) ExecStartPre和ExecStopPost可以将消息'starting service'或'stopping service'写入文件/var/log/node/myapp.log 。 使用上述configuration,不起作用,它只输出'Starting Service' >> /var/log/node/myapp.log和'Stopping Service' >> /var/log/node/myapp.log到journalctl 。 (我查了journalctl -u myapp ) 2)我需要,而不是应用程序的所有日志,输出到journalctl ,可以输出到一个文件。 例如: /var/log/node/myapp.log 。 我的意思是,如果在我的应用程序,我有一个console.log() […]

在Docker服务重新启动之前,Docker容器不能访问互联网

我正在用这个命令手动创build一个桥: docker network create –driver bridge –internal –subnet=172.20.0.0/24 br0 然后我启动容器使用该桥参数–net=br0 –ip=172.20.0.x 问题是这些容器没有互联网接入,我甚至不能ping通外面。 真正的问题是与iptables有关。 当我重新启动服务器,iptables显示我一些规则,容器没有互联网接入。 但是,当我重新启动docker服务,然后iptables有不同的规则和容器有互联网接入。 我只会在这里粘贴规则集之间的区别。 当我重新启动服务器,此规则显示: *filter -A DOCKER-ISOLATION ! -s 172.20.0.0/24 -o br-aa4c507d3f06 -j DROP -A DOCKER-ISOLATION ! -d 172.20.0.0/24 -i br-aa4c507d3f06 -j DROP COMMIT 当我重新启动docker服务,这2条规则消失,我看到这个: *filter -A FORWARD -o br-aa4c507d3f06 -j DOCKER -A FORWARD -o br-aa4c507d3f06 -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT […]

systemd,每个用户的cpu和/或内存限制

还有类似的问题: Cgroups,限制每个用户的内存 ,但该解决scheme在“现代”系统中不起作用,其中cgroups层次由systemdpipe理。 直截了当的解决scheme – 模板user-UID.slice – 将不起作用,因为它不被支持,请参阅https://github.com/systemd/systemd/issues/2556 。 有没有办法达到预期的效果 – 以每个用户为基础pipe理CPU和/或内存资源? UPD :为了历史的缘故,我会保留我的解决scheme,但是应该在login时使用pam_exec来调用systemctl set-property ,请参阅https://github.com/hashbang/shell-etc/pull/183 。 在这种方法中,用户login和限制设置之间没有时间窗口。 我的解决scheme 接口org.freedesktop.login1.Manage of /org/freedesktop/login1对象发出UserNew(u uid, o object_path)信号。 我已经写了一个简单的守护进程来监听信号,每次发出时都设置CPUAccounting=true用于刚login的用户片。

系统重启服务,如果它没有监听端口

我在Debian 8中一直使用Systemd。我使用Restart = on-failure选项来唤醒服务,以防出现故障。 我想知道是否有办法强制重新启动服务,如果它没有监听特定的端口(即使进程仍在运行)。 我之所以需要这个原因是因为我们正在开发新的function来解决这个问题,但这需要一段时间。 同时我们需要一个解决方法。 我已经开发了一个脚本来检查这个状态: #! /bin/bash PORTS=( 1452 542 ) for port in ${PORTS[@]}; do netstat -anp | grep $port > /dev/null 2>&1 if [ "$?" -ne 0 ]; then # Port blocked. Kill the running process and start it again after a while done 这个脚本是使用cron定期触发的。我知道这是一个肮脏的伎俩。 这就是为什么我想在Systemd检查中集成该行为的原因。 那可能吗? 先谢谢你。 干杯, 一个。