Articles of systemd

在systemd单元的cgroup外运行进程

我们正在一个孤立的testing实验室中运行一个自定义的SystemD服务。 这项服务需要偶尔的更新,并且运行在各种发行版上,所以我们不打算为它创build软件包。 在新的更新被拉动之后,服务需要重新启动。 更新本身由原始服务产生的脚本运行。 然后,此脚本发出systemctl restart service ,现在使用新代码运行服务,但是,updater脚本本身与其他所有事件一起被终止。 我希望由服务调用的updater脚本能够运行并完成一些清理工作,而不会在服务重启期间被终止。 我试过用setsid调用updater脚本,但似乎没有保护它。 我相信我需要以某种方式将其从系统单元cgroup中移出,以防止其重新启动。

在systemd v232下运​​行,否则运行Caddy的错误

我正在努力使用https://github.com/mholt/caddy/tree/master/dist/init/linux–systemd中规范推荐的systemd单元模板来启动Caddy。 当在类似环境下的前台开始时,这一切都起作用,下面是我已经validation的事情以及重置失败状态的结果,并开始并立即在以下日记之后: validation: 开始使用# su -s /bin/bash -c '/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp' www-data有或没有tls off 。 相关的,DNS条目(编辑,以保护不称职)是正确的,例如, acrobat.example.orgparsing为默认WAN适配器的唯一的IP地址,这台机器只有一个(连接)的networking适配器。 好奇的花絮: 如果我tls off它的话,可能是因为它速度不够快,不会被systemd杀死 有人报告(旧版本)的Caddy尝试创build一个目录,可以在systemd的限制目录权限下失败,也许这只发生在TLS模式? 该杂志,caddyfile如下: root@acrobat ~ # systemctl start caddy && journalctl -flu caddy — Logs begin at Fri 2017-09-01 10:57:28 CEST. — Sep 01 10:57:42 acrobat systemd[1]: caddy.service: Service hold-off time over, scheduling restart. […]

autossh按照系统设置的预期启动失败

所以我设置我的sshvariables在〜/ .ssh / config中做一个反向隧道,并调用主机tunnel_reverse。 我testing了下面的命令,用autossh创build一个持久的隧道,它的工作方式和预期的一样: autossh -M 0 -N tunnel_reverse 在远程主机反向隧道创build后,我可以通过笔记本电脑连接到远程计算机。 但是,当我试图设置一个服务文件,所以它可以自动启动与systemd启动,它不会工作。 这里是我创build的/etc/systemd/system/tunnel.service文件: [Unit] Description=AutoSSH to reverse tunnel After=network.target [Service] Environment="AUTOSSH_GATETIME=0" ExecStart=/usr/bin/autossh -M 0 -v -N tunnel_reverse [Install] WantedBy=multi-user.target 所以我开始用 systemctl daemon-reload systemctl restart tunnel.service systemctl status tunnel.service 查看状态日志,似乎有一个错误,读取: debug1: Server host key: blah blah blah debug1: read_passpphrase: can't open /dev/tty: No such device or […]

分叉服务启动后如何在systemd中执行脚本

嗨我试图打开我的系统启动后的服务器。 到目前为止,我能够打开服务器,但我不能让systemd执行ExecStartPost脚本(已经debugging该脚本)。 这是有问题的文件的服务: [Unit] Description=Jupyter Notebook server Wants=s3fs.service After=s3fs.service [Service] ExecStart=/usr/local/bin/jupyter notebook –allow-root –no-browser \ –notebook-dir=/home/s3/ \ –config=/home/s3/.jupyter/jupyter_notebook_config.py ExecStartPost=/home/ubuntu/get_ip.sh Type=forking [Install] WantedBy=multi.user.target 我假设问题是,我的脚本types是分叉,但(纠正我,如果我错了)我需要保持服务作为分叉,以保持我的服务器工作后,此服务完成执行。 仅供参考我正在使用Ubuntu 16.04

系统计时器未被禁用

我今天注意到,我几天前禁用的systemd定时器仍在运行。 再次禁用它似乎没有效果。 我可能在这里错过了一些基本的东西(我对systemd很陌生),但是我所做的只是遵循网上一般的build议。 root@nla-cloud:/var/log# systemctl list-timers NEXT LEFT LAST PASSED UNIT ACTIVATES Fri 2017-10-13 00:00:00 UTC 13h left Thu 2017-10-12 00:00:01 UTC 10h ago delete_dummies.timer delete_dummies.service 没有反馈在这里说符号链接删除(这是什么发生了我第一次禁用它 – 日志丢失): root@nla-cloud:/var/log# systemctl disable delete_dummies.timer 是的,仍然活跃,等待… root@nla-cloud:/var/log# systemctl status delete_dummies.timer delete_dummies.timer – Deletes dummy devices at midnight Loaded: loaded (/lib/systemd/system/delete_dummies.timer; disabled; vendor preset: enabled) Active: active (waiting) […]

具有ExecStartPre = git的SystemD服务

我怎样才能cd /path/to/repo && git pull在systemd服务的ExecStartPre部分?

看门狗不运行使用systemctl自定义testing

我正在最新的CentOS 7系统上运行watchdog版本5.13(通过yum安装)。 当看门狗运行时,它应该读取/etc/watchdog.conf由test-directory定义test-directory中的所有可执行文件。 默认情况下,我的test-directory设置为/etc/watchdog.d 。 这些文件将被执行每个watchdog检查,以testing系统故障,如果可能的话,重新执行修复文件。 我目前在/etc/watchdog.d拥有两个testing/修复脚本,拥有权限-rwxr-xr-x 。 如果我直接运行watchdog ,例如 看家狗 自定义testing按预期执行。 但是,如果watchdog由systemd运行,例如 systemctl启动看门狗 守护进程会在高负载下重启系统,但不会运行任何用户testing。 watchdog的单元文件的Execvariables只是/usr/sbin/watchdog ,也就是我在CML中input的内容,这会导致我的testing运行。 我做了大量的研究,发现Debian(8)的旧版本存在一个bug,但是找不到任何有关现存问题的东西。 有没有人遇到过这种行为? 如果是的话,你是如何解决的?

在GNU / Linux上运行Java httpd服务器作为服务

我有内置grizzly http服务器的Java应用程序。 而且我无法运行它,无论是前台还是systemd的服务。 开始后它正在closures。 我错过了什么吗? 如果我从bash运行shell仍然打开 – everythink是好的: [root@Test-LAPP02 RL_acskidd] java -jar RestListener-3.3-jar-with-dependencies.jar Oct 24, 2017 5:00:37 PM org.glassfish.grizzly.http.server.NetworkListener start INFO: Started listener bound to [192.168.18.41:1177] Oct 24, 2017 5:00:37 PM org.glassfish.grizzly.http.server.HttpServer start INFO: [HttpServer] Started. Oct 24, 2017 5:00:38 PM org.glassfish.grizzly.http.server.NetworkListener start INFO: Started listener bound to [192.168.18.41:1188] Oct 24, 2017 5:00:38 PM org.glassfish.grizzly.http.server.HttpServer […]

如何正确地为多个systemd服务设置logrotate,它将stdout stderr发送到rsyslog

假设我在ubuntu 16.04上有很多systemd服务单元,如下所示: [Unit] Description=Do something script After=default.target [Service] ExecStart=/usr/local/sbin/some-script-x.sh Type=simple StandardOutput=syslog StandardError=syslog SyslogIdentifier=some-script [Install] WantedBy=default.target 另外我已经configurationrsyslog像这样: if $programname == 'some-script-x' then /var/log/some-script-x.log 完成。 服务日志写入他们的日志。 我想旋转/var/log/some-script-x.log像默认的日志文件,如syslog。 我有一个configuration原型: /var/log/some-script-x.log { rotate 30 daily missingok notifempty delaycompress compress postrotate invoke-rc.d rsyslog rotate > /dev/null endscript } 但系统已经有一个文件/etc/logrotate.d/rsyslog ,其中包含以下的invoke-rc.d rsyslog rotate > /dev/null 。 在这种情况下,系统日志服务器会有多个循环调用。 这让我担心。 如何告诉rsyslog我只想旋转特定的服务日志。 或者如何正确设置旋转,没有额外的电话?

Getty服务没有启动

在我的一台Centos 7服务器上启动multi-user.target时遇到了麻烦。 起初我注意到运行runlevel命令确实返回一个“未知”的级别。 # runlevel unknown 我怀疑这可能是由非活动multi-user.target (默认目标)引起的。 # systemctl status multi-user.target multi-user.target – Multi-User System Loaded: loaded (/usr/lib/systemd/system/multi-user.target; enabled; vendor preset: disabled) Active: inactive (dead) Docs: man:systemd.special(7) # systemctl get-default multi-user.target 当我尝试手动启动时,命令只是挂起而没有任何事情发生。 我注意到, getty.target , multi-user.target依赖于,也是closures,并有一个挂起的start工作。 # systemctl -t target UNIT LOAD ACTIVE SUB JOB DESCRIPTION basic.target loaded active active Basic System cryptsetup.target loaded […]