Questions tagged «systemd»

systemd是Linux的SystemV和Upstart初始化守护程序的替代方法。它旨在提供一个更好的框架来表达服务的依赖性,允许在系统启动时并行完成更多工作,并减少Shell开销。

3
如何在不使用'systemctl disable'的情况下禁用服务
我有一项服务仅在其他服务失败时才要运行([Unit] OnFailure=foo),但我不希望该服务(foo)在启动时自动启动。一个选项正在运行systemctl disable foo,但我正在寻找另一种方式。 背景:我正在创建一个OS映像,并且我不想启动计算机,运行该命令(systemctl disable foo),然后在声明最终映像之前将其关闭。
12 systemd 

2
如何允许非root用户使用实例控制systemd服务?
我需要允许dba组中的用户控制database@服务。这个相关问题的答案是仅列出systemctl我要允许在sudoers文件中使用的所有“动词” ,但是,这不适用于我的情况,因为我事先不知道系统中可能存在哪些数据库。例如,如果我列出 %dba = /usr/bin/systemctl start database@awsesomeapp %dba = /usr/bin/systemctl start database@anotherawsesomeapp %dba = /usr/bin/systemctl start database@yetanotherawsesomeapp %dba = /usr/bin/systemctl start database@wowyetanotherawsesomeapp # ... other "verbs" omitted for brevity 它不包括将来可能存在的实例,因此dba将无法 $ sudo systemctl start database@omgwowyetanotherawsesomeapp 无论如何,我在包装方面的想法比在特定系统上的想法更多。 请注意,正如对另一个相关问题的惊人回答所示,为此使用sudo glob最终是不安全的: %dba ALL = /usr/bin/systemctl start database@[a-z]* # UNSAFE! 确实允许 $ sudo systemctl …


1
编写udev规则以停止systemd下的服务的正确方法是什么
我正在运行Arch Linux,并且具有udev规则,该规则可在插入设备时启动服务。在这种情况下,当插入3G调制解调器时,它将拨打连接。 KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="netcfg@wvdial.service" 但是,如果卸下了该设备,systemd将不会停止该服务,因此,当再次插入该设备时,由于它已经在运行,因此它不会启动该服务。 我需要的是一条匹配的udev规则,该规则将在卸下设备以停止服务时运行。 更新资料 使用下面的答案,我现在拥有的是以下udev规则 KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="vodafone.service" 带有以下服务文件(基本上是从netcfg服务文件复制并粘贴的): [Unit] Description=Netcfg networking service for Vodafone Dongle Before=network.target Wants=network.target BindsTo=dev-gsmmodem.device After=dev-gsmmodem.device [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/netcfg check-iface wvdial ExecStop=-/usr/bin/netcfg down wvdial KillMode=none [Install] WantedBy=multi-user.target 我正在使用netcfg-wvdialAUR进行拨号。
12 linux  udev  systemd 


1
systemctl的--now开关
如手册页所述, systemctl --now enable servicename 应该启用并启动服务。 但是,在许多不同的发行版下,它对我都无效。 而输出: systemctl is-enabled 启用 systemctl is-active 对该服务仍然无效。 此开关有什么用? 我尝试了其他组合,例如: systemctl enable --now servicename 和: systemctl enable servicename --now 但还是一样 systemctl start servicename即使先前的命令(即enable零件)成功执行,我也必须每次都手动执行。 应用程序对systemd服务的要求是否应该支持它在单位文件中的某处实现该功能?许多众所周知的服务所不具备的功能,使我认为它完全无用。我认为正在考虑。

3
使用SIGWINCH退出Apache服务退出
运行时,service apache start我在日志文件中看到以下条目: [mpm_event:notice] [pid 1906:tid XXX] AH00489: Apache/2.4.23 (Unix) OpenSSL/1.0.2g PHP/7.0.9 configured -- resuming normal operations [core:notice] [pid 1906:tid XXX] AH00094: Command line: '/usr/sbin/httpd' [mpm_event:notice] [pid 1906:tid XXX] AH00492: caught SIGWINCH, shutting down gracefully 服务apache无法启动?我可以在互联网上找到SIGWINCH[ Window size change]的含义,但在这种情况下并不能真正帮助我。 文件/etc/systemd/system/apache.service: [Unit] Description=The Apache Webserver [FaF Compiled] After=network.target nss-lookup.target time-sync.target Before=getty@tty1.service …

1
systemd-networkd-如何在不重新启动的情况下强制执行新配置?
在我的Arch盒子上,我有一个网桥。目标是删除桥接,仅使用未桥接的网络适配器。为了这样做,我删除了下面的所有* .netdev和* .network配置文件,/etc/systemd/network并用一个简单的文件替换了它们: /etc/systemd/network/lan.network -------------------------------- [Match] eno* [Network] DHCP=ipv4 然后systemctl restart systemd-networkd,我使用重启了网络服务,假设这将使我只剩下lo和eno*接口。不幸的是,这没有任何效果。快速浏览ip link仍然显示桥接接口处于活动状态。 因为在这种情况下正常运行时间并不重要,所以我重新启动了机器即可解决问题。尽管如此,我还是想重启对于这种事情不是必需的。我想念什么?

4
我如何查看何时启动/停止/重新启动systemd服务?
我有一个在Debian(Jessie)服务器上运行的服务(由我自己编写),该服务自己的日志恰好表明它在特定时间重新启动。没有迹象表明存在段错误或其他崩溃,因此我现在试图确定应用程序是否以某种方式静默失败并被systemd重新生成,或者用户是否通过故意重新启动了服务systemctl。 外壳程序历史记录未显示此类活动,但是export HISTCONTROL=ignoreboth由于SSH会话可能已超时,从而阻止了先前登录名的bash历史记录写入磁盘,因此尚无定论。当时服务器未重启。 但是我希望systemd本身应该保留一个日志,指示何时有意重新启动服务。令我惊讶的是,我找不到任何journalctl有关如何获取此类日志的文档(例如)。 其他一些帖子(例如,哪里/为什么普通用户systemd服务没有日志?)似乎表明应该有这样的日志消息: Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Starting chatty.service... Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Started chatty.service. 但是我在系统上看不到这样的日志消息。 有没有办法找出何时启动,停止或重新启动systemd服务? 编辑:看来人们可能遇到的典型问题是他们journalctl以非特权用户身份运行。对我来说不是这样,我一直都在工作root。作为对评论的回应,运行grep systemd /var/log/syslog仅给我以下内容: Jun 6 09:28:35 server systemd[22057]: Starting Paths. Jun 6 09:28:35 server systemd[22057]: Reached target Paths. Jun 6 09:28:35 server systemd[22057]: Starting Timers. Jun 6 09:28:35 server …

1
如何重新加载一组systemd服务?
我想在事件发生时重新加载(而不重新启动!)一组服务。 例如,如果我更新SSL证书,则希望使用它们的每个服务都重新加载(nginx并postfix记入)。我也不想记住给定服务器上的哪些服务使用SSL证书。在配置它们时将它们分组就足够了。 另一方面,我想避免更改.service软件包随附的文件,因为这将需要在更新过程中进行手动干预。 我该怎么做? 有一个选项可以根据请求停止一组服务,但这将使它们在一两秒钟内无法访问,甚至更糟-它们可能会停下来直到修复。我负担不起。
12 systemd 

5
安装systemd后,系统拒绝SSH并停留在“启动”状态
我有一个在Azure中创建的Linux Ubuntu VM(14.04 LTS)上可重现的问题。 systemd通过脚本安装软件包后,系统将无限期拒绝新的ssh连接。 系统正在启动。 连接被xxx.xxx.xxx.xxx关闭 但是,活动的ssh连接会保留。/etc/nologin系统中没有文件。 我看到的唯一选择是硬重置,它可以解决问题。但是如何避免呢? 这是我正在使用的脚本: #!/bin/bash # Script input arguments user=$1 server=$2 # Tell the shell to quote your variables to be eval-safe! printf -v user_q '%q' "$user" printf -v server_q '%q' "$server" # SECONDS=0 address="$user_q"@"$server_q" function run { ssh "$address" /bin/bash "$@" } run …
12 linux  ssh  systemd 

2
Systemd的StartLimitIntervalSec和StartLimitBurst永远无法工作
我试图限制服务(在容器中)重新启动的次数。操作系统版本为centos-release-7-5,服务文件大致如下(已删除一些参数以方便阅读)。正如其他一些帖子所指出的(服务器故障重启限制1,堆栈溢出重启限制2),这应该很简单。但是StartLimitBurst和StartLimitIntervalSec绝对不适合我。 我用几种方法进行了测试:(1)我检查服务PID,用“ kill -9 ****”将服务终止几次。该服务总是在20秒后重新启动!(2)我还试图弄乱服务文件,使容器永不运行。尽管如此,它仍然无法正常工作,服务文件只会不断重启。 任何的想法? [Unit] Description=Hello Fluentd After=docker.service Requires=docker.service StartLimitBurst=2 StartLimitIntervalSec=150s [Service] EnvironmentFile=/etc/environment ExecStartPre=-/usr/bin/docker stop "fluentd" ExecStartPre=-/usr/bin/docker rm -f "fluentd" ExecStart=/usr/bin/docker run fluentd ExecStop=/usr/bin/docker stop "fluentd" Restart=always RestartSec=20s SuccessExitStatus=143 [Install] WantedBy=multi-user.target
12 linux  systemd 

4
系统是“恶意的”吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 访问一些讨论Debian和Xubuntu的在线论坛,我看到一些用户在签名字段中添加了以下行: ...没有系统... 这行显示得很自豪(在我看来)。 从维基百科: systemd是一套系统管理守护程序,库和实用程序,被设计为Linux计算机操作系统的中央管理和配置平台。 因此systemd,这似乎不是一件坏事,所以为什么人们自豪地写自己不使用它呢? 可以systemd是危险的,或者你只是坏?
11 systemd  init 

0
在i3wm自动登录上解锁登录gnome-keyring
问题 这个问题似乎已经被询问了十亿次,但是我仍然完全无法自动解锁我的登录密钥环。 背景 我沿着这些行自动登录,chvt和startx 进入i3wm,然后启动修改后的i3lock。我确实希望我的gnome登录密钥环在登录时(或在解锁i3lock时)自动解锁,但是我无法成功实现我在网上找到的任何说明。 发现 该牌坊维基有关于这个我试过,但未能做一个整体的事情。我还查看了其他各种问题/答案,这些类似的指示都无济于事。 我注意到的一件奇怪的事情是我无法通过解锁登录密钥环echo $LOGINPASSWORD | gnome-keyring-daemon --unlock。journalctl报告 Jul 07 20:08:16 ERIS gnome-keyring-daemon[26585]: failed to unlock login keyring on startup 当我打开海马手动解锁时,它报告登录密码已更改,并要求我输入旧密码。journalctl报告 Jul 07 20:08:43 ERIS gnome-keyring-daemon[26585]: fixed login keyring password to match login password 在此之后,我将无法再次使用密码解锁密钥环(幸运的是,我事先做了备份)。 额外信息 这是一些相关的/etc/pam.d/文件,希望这里对LOL不敏感(为简洁起见删除了注释,顺序保持不变。请注意,我也尝试使用此.xinitrc位,但未执行任何操作)。pam_gnome_keyring.so除了/etc/pam.d/i3lock中的内容外,我唯一手动添加的内容是位;默认情况下或由于其他软件包而已存在任何其他内容。 /etc/pam.d/login auth optional pam_faildelay.so delay=3000000 auth [success=ok new_authtok_reqd=ok ignore=ignore …

3
BunsenLabs(Debian衍生产品)不会关闭(无法启动poweroff.target:交易具有破坏性)
我偶然发现了本生实验室GNU / Linux(基于Debian)的怪异行为。 有时我无法关闭操作系统。不管我使用sudo poweroff还是GUI方法都没关系。 这是我运行后得到的sudo poweroff: Failed to start poweroff.target: Transaction is destructive 有解决方法吗?为什么会这样呢? 这是我的内容/lib/udev/rules.d/70-power-switch.rules: ACTION=="remove", GOTO="power_switch_end" SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="acpi", TAG+="power-switch" SUBSYSTEM=="input", KERNEL=="event*", KERNELS=="thinkpad_acpi", TAG+="power-switch" LABEL="power_switch_end"

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.