Articles of systemd

systemd,logrotate和PID文件

我正在为debian 8和systemd打包一些守护进程。 守护进程可以自己创buildPID文件,但由于非root用户,它没有写入/运行的权限。 它用来通过旧的sysV init-script创buildPID文件,但是它在systemd上不起作用。 我可以像这样在服务文件中使用解决方法: Environment="PIDDIR=/var/run/mydaemon" PermissionsStartOnly=true ExecStartPre=/bin/mkdir -p $PIDDIR ExecStartPre=/bin/chown -R mydaemon. $PIDDIR 但它看起来不正确。 我可以使用/ tmp作为$ PIDDIR,但它也似乎是错误的。 实际上,我需要一个PID文件的唯一原因是logrotate的postrotate发送SIGUSR1到守护进程: [ -s /run/mydaemon.pid ] && kill -USR1 `cat /run/mydaemon.pid` 也可以使用pgrepsearch守护进程的pid,但似乎是不可靠的。 logrotate中的copytruncate似乎不是最好的select,因为丢失了部分日志的risc。 那么,通过systemdpipe理PID文件的正确方法是什么? 有没有办法通过systemd发送随机信号到守护进程?

阻止closures,直到ExecStop脚本完成

我有一个在启动时无限运行的脚本,另一个脚本安全地closures它。 第二个脚本需要连接到远程数据库。 它们都分别在ExecStart和ExecStop的相同服务中ExecStart 。 我需要第二个脚本来阻止关机/重启,直到完成。 目前第一个脚本工作正常,但第二个脚本提前终止。 这是我到目前为止: [Unit] DefaultDependencies=no Wants=network-online.target After=network.target network-online.target Before=reboot.target shutdown.target halt.target [Service] Type=oneshot RemainAfterExit=true User=test ExecStart=/usr/bin/python /home/test/test.py ExecStop=/usr/bin/sh /home/test/test KillMode=none [Install] WantedBy=multi-user.target 我尝试使用以下命令 : systemd等待命令完成之前重新启动/关机或杀死其他进程,但它并没有解决我的问题,似乎他是命令运行相对较快。

如何configuration多个systemd服务来使用一个定时器?

我注意到一些系统文档中的方法有一些重大的变化,以及有关如何configuration一个或多个服务来使用同一个定时器的操作方法。 就我所能拼凑在一起(虽然我可能是错的),这将描述什么WantedBy和单位参数在一个服务和定时器文件需要设置(不使用实际的代码示例在这里 – 为了减less发布长度)为单个服务,相反,多个服务configuration使用一个定时器: 定时器为单一服务 My.Service1 'WantedBy' Param: N/A (1) My.Timer 'Unit' Param: My.Service1 (2) My.Timer 'WantedBy' Param: MultiUser/Basic.Target (3) (1) 服务文件不需要带有WantedBy参数的[Install]部分。 (2) 在定时器的[Timer]部分中,Unit参数应指向My.Service1服务文件。 (3) 定时器文件有一个WantedBy参数,指向一些特殊的系统目标,用来启动它。 定时器为多个服务 My.Service1 'WantedBy' Param: Timer.Target (1) My.Service2 'WantedBy' Param: Timer.Target (1) My.Service3 'WantedBy' Param: Timer.Target (1) Timer 'Unit' Param: Timer.Target (2) Timer 'WantedBy' Param: ??? (1) 服务需要使用WantedBy参数连接到相同的定义的目标。 (2) [Timer]单元参数也应该指向目标。 […]

有没有办法通过CoreOS上的云configuration来configurationjournald.conf?

尝试find一种方法来为systemd-journald.service自动设置SystemMaxUse 。 我知道我可以手动设置在/etc/systemd/journald.conf 。 但是按照我的经验,在CoreOS更新之后它会恢复到默认状态。 此外,在cloud-config中configurationdrop-ins不起作用,因为默认的服务定义文件不包含SystemMaxUse字段。 有没有办法通过CoreOS上的云configuration来configurationjournald.conf? 或者,有没有办法自动设置它?

Systemd不按预期的用户启动服务

我有这个SystemD脚本: [单位]说明= RTC客户服务 [Service] user=linuxuser WorkingDirectory=/usr/lib/systemd/scripts/ Type=forking ExecStart=/bin/bash rtc_client.sh start ExecStop=/bin/bash rtc_client.sh stop Restart=no RemainAfterExit=no TimeoutStartSec=0 TimeoutStopSec=60 [Install] WantedBy=multi-user.target 它正确启动脚本,但总是以root用户身份启动。 这是: #!/bin/bash RTCENGINEID=$HOSTNAME'_engine' RTCUSER='RTCUSER' RTCPW='RTCPWD' RTCSERVER='SERVER' RTCSERVERPORT='9443' RTCREPOSITORY=https://$RTCSERVER:$RTCSERVERPORT/ccm export WORKDIR='/opt/ibm/buildsystemtoolkit/buildsystem/buildengine/eclipse' export JAVACMD=/opt/ibm/java-s390x-71/jre/bin/java export ARGS="-cp ./plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar org.eclipse.equinox.launcher.Main -application com.ibm.team.build.engine.jazzBuildEngine -repository $RTCREPOSITORY -engineId $RTCENGINEID -userId $RTCUSER -pass $RTCPW" RTCJAR=org.eclipse.equinox.launcher PIDFILE='/var/run/rtc_client/rtc_client.pid' DEBUGLOG='/tmp/rtc_debug.log' . /home/linuxuser/.bash_profile start() { cd $WORKDIR […]

CentOS环境configuration文件的语法

我正在修改CentOS 7上的文件/ etc / sysconfig / httpd。 这个文件修改systemd下httpd服务的环境。 我想通过添加它来修改PATHvariables。 我可以设置它,但我正在努力与正确的语法添加到它。 如果我使用这个: PATH="/export/home/www/perl5/bin:$PATH" ..然后我在PATH上得到的Apache实际上是: /export/home/www/perl5/bin:$PATH 换句话说,它不是插入$ PATHvariables。 我尝试了一堆不同的语法,但我还没有得到它的工作。 有人知道正确的语法吗?

Ubuntu 16.04,PHP-FPM在使用libsodium-php模块启动时超时

问题(修改:用REPRO步骤!) 重新制作一个新的VPS与Ubuntu 16.04(可能适用于任何Debian发行版,但没有testing),并按照这些指示: 通过实验,我将指令简化为绝对最低限度的重现 apt-get install php7.0 php7.0-dev php-pear apt-get install libsodium-dev pecl install libsodium echo "extension=libsodium.so" >> /etc/php/7.0/fpm/php.ini shutdown -r 0 当我重新启动服务器( shutdown -r 0 )PHP-FPM死了(通过service php7.0-fpm status确认) 如果我运行service php7.0-fpm start ,它启动毫秒service php7.0-fpm start 。 我在libsodium-php跟踪器上创build了一个问题,希望有人能find解决方法: https : //github.com/jedisct1/libsodium-php/issues/94 问题 现在我已经缩小了这个问题,我真正想要的是: 一个方法来弄清楚为什么它是超时(是否有一个好的方法来configuration什么资源被访问或什么是启动时间过程?) 一种方法来解决它(有没有办法改变引导顺序,以便libsodium引导最后,以防万一它的依赖性问题?) 新的更新 我一直在研究这个,并发现所有的PHP在libsodium库的初始化过程中都会停顿(对sodium_init()的调用)。 这个调用大概需要3-4分钟才能完成,直到这个时间过去了,甚至一个调用php -v失败。 作为解决方法,我已经将以下内容添加到/lib/systemd/system/php7.0-fpm.service : TimeoutStartSec=600 这会导致我的Web服务器在重新启动后返回HTTP状态码502几分钟,但最终会再次开始工作(比手动login和修复更好) 我将尝试与libsodium和libsodium-php的开发人员联系,以find更好的解决scheme,但现在我相信我已经解决了这个问题: 解决scheme 当启动时没有运行某个东西时,开始使用journalctl […]

未使用软件包pipe理器安装的软件的适当系统单元位置

根据https://www.freedesktop.org/software/systemd/man/systemd.unit.html ,默认的单位path是… / etc / systemd / system:本地configuration / run / systemd / system:运行时单位 / usr / lib / systemd / system:已安装软件包的单位 如果我正在编写脚本来将软件安装到服务器,而不是使用软件包pipe理器,那么这些位置在技术上都不是正确的。 由于这是由安装程序脚本设置的,即使没有使用Linux发行版的软件包pipe理器,/ usr / lib / systemd / system目录似乎也比/ etc / systemd / system更为正确。 是对的吗? 我想过尝试修改SYSTEMD_UNIT_PATH以增加类似/ opt / lib / systemd / system的内容,但我确信这是一个坏主意。

如何为所有systemd cgroup设置默认的memory.swappiness?

在CentOS 7中,我如何为所有的systemd cgroup设置默认的memory.swappiness? 我可以通过ControlGroupAttribute选项为每个cgroup执行此操作,但是我想覆盖所有cgroup的默认值60。

系统计时器rsnapshot每周

我已经configuration了一个systemd 定时器,用于每小时,每天和每周的备份,在外部HD上使用rsnapshot 。 当我在工作高清它连接,我已经configuration了rsnapshot.conf选项 no_create_root 1 这样如果备份path不存在,则目录不会被创build,备份也不会完成。 我的问题是,当备份的时间到期的时候我不在工作,高清没有连接,所以没有rsnapshot运行,但每周定时器重置,而不是重新启动下次重新启动机器(重试)希望在工作)。 这是我的计时器configuration [Unit] Description=rsnapshot weekly backup [Timer] OnCalendar=weekly Persistent=true [email protected] [Install] WantedBy=timers.target 如果我希望每周运行一次 在/ var / log / messages中 在每天或每小时的手术中,没有任何手术成功的证据。 如果我要求定时器状态 sudo systemctl status rsnapshot-weekly.timer Oct 24 13:30:35 criniv rsnapshot[10991]: /usr/bin/rsnapshot daily: completed successfully rsnapshot-weekly.timer – rsnapshot weekly backup Loaded: loaded (/etc/systemd/system/rsnapshot-weekly.timer; enabled) Active: active (waiting) since lun […]