我有一个守护进程,它需要在/var/run拥有自己的目录来为其PID文件提供写入权限给守护进程的用户。 我发现我可以用这些命令创build这个目录: # mkdir /var/run/mydaemon 然后,我可以将其所有权更改为我希望运行该stream程的用户/组: # chown myuser:myuser /var/run/mydaemon 但是,只要我重新启动,这个目录将会是GONE! 每次机器启动时如何获得这个目录?
我发现这些syslogd的解决scheme发送电子邮件在某些事件,如local0.crit或local1.err 我怎样才能使syslogd电子邮件特定的日志消息给我? http://www.johnandcailin.com/blog/john/how-setup-real-time-email-notification-critical-syslog-events 但是,我的系统在systemd上运行,因此使用日志进行系统日志的目的。 我怎样才能实现基于事件的电子邮件没有一个cron运行,每5分钟检查所有日志,并将日志发送到一个地址或类似?
我有三个systemd服务(Docker容器,但这不重要)。 所有这三项服务都必须运行才能使应用程序function齐全。 为了简化ops团队的程序,我创build了PartOf systemd服务,使用Requires和PartOf指令将它们组合在一起。 现在启动和停止这个服务将开始并以正确的顺序停止三个容器。 最后一个挑战是让第四个系统服务显示正确的状态。 现在它启动服务后显示“加载/不活动”。 是否有可能configuration它的方式,它会显示“加载/主动”当且仅当三个第一个服务启动和运行? [Unit] Description=This is the group Requires=a.service b.service c.service [Service] ExecStart=/bin/echo "Starting" ExecStop=/bin/echo "Stopping" [Install] WantedBy=local.target a.service , b.service和c.service包含PartOf=group.service
我的Debian 8 vm有很多像这样的systemd日志: Apr 28 23:02:09 foo systemd[22305]: Starting Shutdown. Apr 28 23:02:09 foo systemd[22305]: Reached target Shutdown. Apr 28 23:02:09 foo systemd[22305]: Starting Exit the Session… Apr 28 23:02:09 foo systemd[22305]: Received SIGRTMIN+24 from PID 22461 (kill). Apr 28 23:02:10 foo systemd[22469]: Starting Paths. Apr 28 23:02:10 foo systemd[22469]: Reached target Paths. Apr 28 […]
我一直在做一个systemd服务来包装一个pipe理脚本,我正在试图优雅地处理它完全破坏。 现在我的Restart设置为always所以当某些事情失败时它会再次尝试,但是某些失败状态需要注意(缺lessconfiguration文件,错误的SQL等),所以我不希望它在后台以不可纠正的状态继续旋转。 我发现StartLimitInterval , StartLimitBurst和StartLimitAction ,它会在Y秒内X失败后停止尝试重新启动它,但事实certificate,只有StartLimitAction可用的StartLimitAction是重新启动或closures计算机,这有点矫枉过正。 我一直在寻找OnFailure并写了一个小型服务,当它被触发时发送一个警报邮件 ,但是OnFailure触发每次服务死亡,而不是当它达到起始限制,所以我们得到一堆电子邮件,而不是一个。 任何想法接下来要尝试什么?
我有一个服务与这个伙伴单位,并不断收到错误:[/run/fleet/units/[email protected]:11]尾随垃圾,忽略。 [email protected]没有ExecStart =设置,只允许RemainAfterExit = yes服务。 拒。 我似乎已经尝试了所有我能想到的不同的组合,并成功地从terminaltesting了命令而没有问题。 如果我删除了第一个调用etcdctl,第二个set命令也可以在服务文件中正常工作。 任何想法,我到哪里错了? [Unit] Description=Tomcat web server etcd registration # Requirements Requires=etcd.service Requires=tomcat@%i.service # Dependency ordering and binding After=etcd.service After=tomcat@%i.service BindsTo=tomcat@%i.service [Service] # Get CoreOS environmental variables EnvironmentFile=/etc/environment # Start ExecStart=/bin/bash -c "\ while true; do \ etcdctl set /services/tomcat/tomcat-%i/ip ${COREOS_PRIVATE_IPV4}:$(docker inspect –format='{{(index (index .NetworkSettings.Ports "8080/tcp") 0).HostPort}}' tomcat.%i) –ttl […]
我有一个运行Ubuntu 15.04的Vagrant框,它有一个启动脚本,在系统启动时启动服务。 它有一个start on vagrant-mounted节,因为服务要求/ vagrant目录安装Vagrant。 我现在正在将这个脚本迁移到systemd(我完全熟悉这个脚本),并且无法让脚本在启动过程中成功运行,因为脚本运行时没有挂载/ vagrant。 After=vagrant-mounted不起作用,但可能有助于显示我正在尝试做什么。 如何在启动过程中安装Vagrant目录时运行systemd单元? 注意systemctl start my.service 确实成功启动服务,并且服务是systemctl enabled的。
journalctl看起来像是一个很好的工具来查看日志,但我坚持什么感觉就像一个简单的问:我想看到包含短语update-ipsets所有cron消息。 当然,我可以做到这一点 journalctl -u cron.service | grep update-ipsets 但是你却失去了journalctl输出的所有其他好处(颜色编码,自动分页,实时查看等) 我试过了: journalctl -u cron.service MESSAGE=update-ipsets journalctl -u cron.service "MESSAGE=*update-ipsets*" journalctl -u cron.service "MESSAGE=.*update-ipsets.*" journalctl -u cron.service "MESSAGE=/.*update-ipsets.*/" 而且你不想通过在MESSAGE=之后点击tab来实验 – 挂起(zsh / Debian Jessie)shell并且Ctrl-C也没有帮助! 我有点不敢相信它没有内置这个基本function,所以我肯定我一定错过了什么? 谢谢。
nginx-common包附带的systemd单元文件以root身份运行主进程,这让我感到紧张。 我假设它以root身份运行的唯一原因是绑定端口80,但作为root是为了矫枉过正,所以我以普通用户的身份运行它,并为其提供CAP_NET_BIND_SERVICEfunction。 我已经调整了单元文件,看起来像这样: [Service] Type=forking PIDFile=/var/run/nginx/nginx.pid ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;' ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;' ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload ExecStop=/usr/sbin/nginx -s quit CapabilityBoundingSet=CAP_NET_BIND_SERVICE Capabilities=cap_net_bind_service+=ep user=www-data 这种方法有什么缺点吗? nginx是否因为其他原因而期望成为root? 有没有更好的方法来lockingnginx? 我知道一些人喜欢做这个,但是这似乎很麻烦。
如何找出哪些命令适用于systemctl的服务? # systemctl reload nagios.service failed to reload nagios.service: Job type reload is not applicable for unit nagios.service. 使用init.d,你可以不用命令就运行这个脚本,并查看适用命令的使用信息: # /etc/init.d/nagios Usage: /etc/init.d/nagios {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}