Articles of systemd

需要帮助将init.d服务脚本转换为systemd(CentOS)

我已经花了好几天的时间来解决这个令人难以置信的问题,而且我没有select。 我正在为我们的网站使用CentOS 6.8服务器。 CentOS 6(Enterprise Linux 6或EL6)使用较早的init.d模型来启动脚本。 有一个我老板要求我使用的程序,SonicWALL CDP Agent。 他有一个SonicWALL备份服务器,他们的“代理”软件在后台运行,将特定的文件和文件夹备份到服务器。 它实际上build立在Acronis TrueImage之上,但这是另一回事。 最大的问题是他们的CDP代理使用Adobe AIR。 他们必须以这种方式将其devise成跨平台的(因为他们有Windows / OSX / Linux的安装程序),但是当然Adobe在一段时间之前完全停止在64位Linux上支持AIR。 他们的网站提供了一些安装步骤,但是可以追溯到Red Hat 5.5,甚至是6。 我确实设法通过遵循EL6的步骤来让EL安装在EL7上,只是注意到软件包名称在repos中的变化。 有趣的是,正常的GUI安装程序(AdobeAIRInstaller.bin)不起作用,甚至在以root身份运行时也会给出一些关于“也许你的pipe理员禁止安装”的错误),但是.rpm文件可以工作。 我有最新的: adobeair核心,2.6.0-19170.noarch.rpm adobeair-2.6.0-19170.i686.rpm 结合GTK2 i686库,这实际上工作。 但是,CDP Agent比这更复杂。 有两种系统服务需要运行,以便代理软件能够正常工作(如果您仔细想想,自动备份无论如何都需要这样做)。 然而,他们的安装程序已经有几年了,并将启动脚本放在init.d中。 这是“应该”在EL7中工作,但事实并非如此。 我花了几个小时摆弄这个,它根本不起作用。 所以基本上,有两个需要运行的二进制文件。 启动它们的命令是: /sbin/cdp/cdpagentproxy /sbin/cdp/cdpdaemon start 如果我打开一个terminal并手动运行这些terminal,它们就可以工作 – 而且我可以打开CDP代理并运行。 但是,由于init.d / systemd不兼容,它们不能在启动时启动。 所以我做了一些简单的“服务”,并把它们放在正确的位置上。 cdpdaemon.service文件,例如: [Unit] Description=CDP Daemon Service After=syslog.target network.target […]

systemd在停止networking之前不会卸载NFS共享

背景: RHEL 7.2截至2016年10月 物理系统 NetworkManager已禁用 通过将2x10G网卡(eth0和eth1)组合为lacp0来configurationnetworking (不相关的)IP地址在VLAN子接口lacp0.XXX和lacp0.YYY上configuration (也无关紧要)这些系统注定要成为Oracle 12c节点 networking连接是100%OK,基准testing证实LACPfunction完全正常,接近20 GBps理论最大值。 问题: systemd在关机期间没有检测到networking堆栈已经停止,并且等到为时已经太晚才能卸载NFS共享,从而无法卸载它们,从而导致NFS服务器无限期地挂起以供NFS服务器响应。 症状: 运行“systemctl stop network.service”之后,network.target和network-online.target仍被视为活动的 。 我到目前为止: 通过/etc/fstab文件添加的NFS挂载被转换为*.mount systemd单元。 这些单元自动依赖于依赖于network-online.target的remote-fs.target 。 从文档看来,networking* .target依赖于networkingpipe理工具来检测networking是否启动等。 这可以是NetworkManager , systemd-nerworkd ,或其他任何东西(但什么?)。 我想我的问题可能在这里,因为看起来我们的jumpstart模板依赖于旧的init脚本来pipe理接口。 我怀疑systemd可以与它交互,以获知networking正在启动或closures(尽pipe用于停止与systemctl stop network的networking堆栈) 我的第二个假设是,即使通过ifcfg- *文件使用libteam / teamd的networking组合也超出了systemd的network.target范围。 团队系统单元(包括[email protected])和networking单元似乎没有依赖关系。 这就解释了为什么唯一显示这个问题的系统是那些LACP支持的系统,而我们在使用典型的绑定之前没有这个问题。 所以我的问题:我有什么解决scheme,以确保我的NFS共享被卸载之前,我的networking堆栈被closures,通常是在重新启动系统? PS:如果上述解决scheme不是来自创buildNFS挂载的方式,那么会更好,因此必须向此服务器添加共享的人员不必知道要采取的特殊步骤。 考虑到我们的生产stream程,这似乎几乎不可能

为什么我的CUPS调度程序重复重新启动?

在我的/var/log/syslog ,我看到(过滤不相关的部分): Dec 30 15:00:10 myhost systemd[1]: Started CUPS Scheduler. Dec 30 15:13:11 myhost systemd[1]: Started CUPS Scheduler. Dec 30 15:26:11 myhost systemd[1]: Started CUPS Scheduler. Dec 30 15:39:12 myhost systemd[1]: Started CUPS Scheduler. Dec 30 15:52:13 myhost systemd[1]: Started CUPS Scheduler. Dec 30 16:05:13 myhost systemd[1]: Started CUPS Scheduler. Dec 30 16:18:14 myhost systemd[1]: […]

我见过的最奇怪的docker错误

我在我的一台服务器上使用docker-mailserver的Docker。 将一些服务从传统的Debian Jessie服务器迁移到Ubuntu 16.04 LTS服务器后出现了一个非常奇怪的麻烦。 服务器参数: 遗产: someuser@legacyserver:~$ uname -r 3.16.0-4-amd64 someuser@legacyserver:~$ dpkg -l | grep systemd …215-17+deb8u7… someuser@legacyserver:~$ cat /proc/cmdline root=ZFS=rpool/ROOT/debian-1 ro boot=zfs quiet 新服务器: someuser@newserver:~$ uname -r 4.4.0-21-generic someuser@newserver:~$ dpkg -l | grep systemd …229-4ubuntu4… someuser@newserver:~$ cat /proc/cmdline root=ZFS=rpool/ROOT/debian-1 apparmor=0 ro 我在systemd-nspawn Debian Jessie容器中的docker上运行docker-mailserver。 我鼓励的第一个问题是在新systemd上的只读cgroup,这解决了这个问题: mount | grep cgroup | tail -n +2 […]

networking“启动”事件时重新启动systemd服务

我的系统需要使用一个vpn,其中我使用基于OpenVpn的expressvpn ,但是使用它自己的systemd守护进程。 所有连接/断开命令都必须通过提供的二进制文件。 为了不在每次重新启动或从睡眠中唤醒时input这些命令(并configuration一些iptable规则),我在/etc/NetworkManager/dispatcher.d/中/etc/NetworkManager/dispatcher.d/了一个脚本来捕获'up'事件。 虽然脚本工作,我遇到与expressvpn connect问题。 在从睡眠中醒来之后,就好像多个连接命令已经被调用一样。 一个简单的解决scheme是重新启动其服务。 我可以发出一个systemctl restart expressvpn然后从terminal(作为用户和sudo) expressvpn connect命令没有任何问题,但如果我将重新启动命令添加到调度程序脚本中断。 这是脚本中有问题的部分(包括我的临时logging器行): date "+%H:%M:%S %d/%m/%y" &> /home/twifty/Desktop/up-log.txt echo "restarting…" >> /home/twifty/Desktop/up-log.txt #systemctl stop expressvpn >> /home/twifty/Desktop/up-log.txt #systemctl start expressvpn >> /home/twifty/Desktop/up-log.txt systemctl restart expressvpn.service echo "connecting…" >> /home/twifty/Desktop/up-log.txt #/usr/bin/expressvpn status >> /home/twifty/Desktop/up-log.txt /usr/bin/expressvpn disconnect >> /home/twifty/Desktop/up-log.txt /usr/bin/expressvpn connect >> /home/twifty/Desktop/up-log.txt echo "setup…" >> […]

在Beowulf计算节点上启用cgroups

我们使用来自Penguin Computing的Scyld发行版运行Beowulf集群,看起来cgroups是在头节点上configuration的,而不是在计算节点上configuration的。 我试图configurationSlurm使用proctrack/cgroup插件,但它不能在计算节点上工作。 例如,我可以列出头节点上的cgroup,但不能在计算节点上列出: $ bpsh -1 systemd-cgls ├─1 /usr/lib/systemd/systemd –switched-root –system –deserialize 21 ├─user.slice … $ bpsh 1 systemd-cgls Failed to create bus connection: No such file or directory $ 如果我查看cgroup系统的安装点,它将安装在头节点上,而不是安装在计算节点上。 计算节点在该位置只有一个空目录。 $ bpsh -1 findmnt /sys/fs/cgroup TARGET SOURCE FSTYPE OPTIONS /sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,mode=755 $ bpsh 1 findmnt /sys/fs/cgroup $ bpsh 1 ls […]

如何在Fedora 16(x86_64)中创buildsystemd.service?

我用新的方式创build服务有很大的问题 – 通过Fedora 16中的systemctl(systemd.service)。我想为minidlna服务器创build非常简单的服务。 我在/ lib / systemd / system /中创build了一个名为minidlna.service的新文件,如下所示: [Unit] Description=Mini DLNA [Service] Type=oneshot ExecStart=/usr/sbin/minidlna [Install] WantedBy=multi-user.target 不幸的是systemctl状态minidlna.service输出: Loaded: loaded (/lib/systemd/system/minidlna.service; enabled) Active: inactive (dead) since Sat, 03 Dec 2011 20:49:23 +0100; 9s ago Main PID: 1580 (code=exited, status=0/SUCCESS) CGroup: name=systemd:/system/minidlna.service 任何想法如何解决它? 干杯!

如何设置从systemd中的单引号开始的环境值

我试图设置以下在我的systemd的服务文件 Environment=SETTINGS=\'{"a"=1}\' 但似乎这两个单引号已被删除,所以我得到{“a”= 1}作为环境variables的值SETTINGS 我如何正确设置?

无法从systemd日志网关读取事件

我试图转发系统日志到远程主机,无法使systemd-journal-gateway工作。 我可以连接到http://localhost:19531/entries?follow但是没有任何条目。 同时journalctl -f显示新的日记帐分录。 我已经阅读了systemd-journal-gatewayd.service的文档 ,但是对于这种情况没有任何粘合剂 。 编辑: $ systemctl status systemd-journal-gatewayd systemd-journal-gatewayd.service – Journal Gateway Service Loaded: loaded (/usr/lib64/systemd/system/systemd-journal-gatewayd.service; indirect; vendor preset: disabled) Active: active (running) since Tue 2015-07-07 07:35:48 UTC; 2h 23min ago Main PID: 5183 (systemd-journal) Memory: 1.0M CPU: 236ms CGroup: /system.slice/systemd-journal-gatewayd.service └─5183 /usr/lib/systemd/systemd-journal-gatewayd Jul 07 07:35:48 ip-10-4-1-91.ec2.internal systemd[1]: Started Journal Gateway […]

如何在systemd的journalctl中显示系统日志优先级

journalctl允许我过滤优先级( -p )并对输出中的优先级进行颜色编码。 但有什么办法让它直接输出优先级,作为文本?