Questions tagged «systemd»

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

1
仅在mysql启动后,如何才能启动systemd服务?
我正在研究一个单声道EmailServer项目。我尝试将服务添加到systemd,以便它在引导过程中自动启动,但是我遇到了问题。 我已经创建了脚本并添加到该脚本/lib/systemd/system/emailserver.service,然后运行它ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service。 我已经然后执行systemd reload-daemon之后systemctl start emailserver.service,然后当我运行的ps -ef |grep -i emailserver话,我可以看到mono EmailServer.exe正在运行,都在寻找好为止。 但是,当我重新启动/var/log/messages文件中的服务器时,它随后包含以下错误消息 Jul 16 19:41:02 dev-server systemd[1]: emailserver.service holdoff time over, scheduling restart. Jul 16 19:41:02 dev-server systemd[1]: emailserver.service holdoff time over, scheduling restart. Jul 16 19:41:03 dev-server systemd[1]: emailserver.service holdoff time over, scheduling restart. Jul 16 …
15 opensuse  systemd 

2
如何启动ssh-agent并将其用作systemd服务?
如何将ssh-agent作为systemd服务启动?网上有一些建议,但并不完整。 如果ssh-agent服务成功启动,如何自动添加未加密的密钥?从列表中添加密钥~/.ssh/.session-keys可能会很好。 之后如何SSH_AUTH_SOCK在任何登录会话中进行设置?最正确的方法是将其从ssh-agent服务推送到systemd-logind服务(不知道是否有可能)。普通的天真方法是将其添加到中/etc/profile。

2
如何让我的用户服务等到网络在线?
我已经写了几个systemd用户服务文件,我希望用户启用它们并且需要有效的网络连接。我认为这很容易: Wants=network-online.target After=network-online.target 但是,服务似乎还为时过早,在journalctl我看来: network-online.target: Cannot add dependency job, ignoring: Unit network-online.target failed to load: No such file or directory. 然后我搜索更多并尝试 Wants=network.target After=network.target 并且做到了sudo systemctl enable systemd-networkd-wait-online.service。 现在我在journalctl: network.target: Cannot add dependency job, ignoring: Unit network.target failed to load: No such file or directory. 再次,服务开始得太早了。 该消息应该在那里吗?如何调试我的问题? 编辑:原因很简单,并且在Arch Wiki中有明确说明: systemd --user与流程分开运行systemd …

4
Systemd启动后立即终止服务
我正在为OSSEC HIDS编写systemd单元文件。问题是,当systemd启动服务时,它将立即停止它们。 当我使用该ExecStart指令时,一切正常。 ExecStart=/var/ossec/bin/ossec-control start 但是,当我进行一些细微的改进时,我可以在OSSEC日志中发现它在启动后会收到SIG 15。 ExecStart=/bin/sh -c '${DIRECTORY}/bin/ossec-control start' 如果我进行其他小的更改,服务将在20秒后收到SIG 15。 ExecStart=/bin/sh -c '${DIRECTORY}/bin/ossec-control start && sleep 20' 因此,我猜想systemd在服务启动后会杀死/ bin / sh进程,然后bin / sh会杀死OSSEC。 我怎么解决这个问题?
15 centos  rhel  systemd 

3
如何在systemd中跳过90年代超时
是否可以以交互方式跳过systemd中的90年代超时?例如,何时正在等待磁盘可用或用户注销?我知道它最终会失败,所以我现在可以使它失败吗?我讨厌无奈地盯着屏幕。

1
如何使用systemd在virtualenv中运行命令
我认为这应该很简单,但我无法使其正常工作。 这些是我可以在命令行上运行的命令: cd /home/debian/ap # Start a virtualenv source venv-ap/bin/activate # This needs to happen inside the virtualenv and takes ~20 seconds crossbar start # Outside the virtualenv, perhaps in a different command line window python3 /home/debian/myscript.py 这些命令必须按此顺序完成。由于virtualenv,crossbar的非可执行性以及之后的单独python脚本,因此我无法找出使此功能正常工作的最佳方法。我目前正在进行的工作: [Unit] Description=Start CB After=network.target [Service] Type=simple User=debian ExecStartPre=source /home/debian/ap/venv-ap/bin/activate ExecStart=cd /home/debian/ap/ && …

1
Systemctl从失败的列表中删除单元
如何在systemctl --failed不重启机器的情况下从列表中删除单元? 背景:除其他外,我在列表中有以下条目: ● openvpn-server@intranert.service loaded failed failed OpenVPN service for intranert 发生这种情况是因为intranet前一段时间我在单元模板激活时拼写了错误,这是实际的生产实例。但是,当我检查服务器的故障单元时,我总是乍一看感到困惑,因为看起来生产性服务实际上是失败的,直到我认识到拼写错误并记住了过去的错字。

1
通过具有套接字激活功能的systemd用户单元的按需SSH Socks代理未按预期重启
为了到达隔离的网络,我使用ssh -D 袜子 代理。 为了避免每次我将它们添加到时都需要输入细节~/.ssh/config: $ awk '/Host socks-proxy/' RS= ~/.ssh/config Host socks-proxy Hostname pcit BatchMode yes RequestTTY no Compression yes DynamicForward localhost:9118 然后,我创建了一个systemd用户服务单元定义文件: $ cat ~/.config/systemd/user/SocksProxy.service [Unit] Description=SocksProxy Over Bridge Host [Service] ExecStart=/usr/bin/ssh -Nk socks-proxy [Install] WantedBy=default.target 我让守护程序重新加载新的服务定义,启用新服务,启动它,检查其状态,并验证它是否在侦听: $ systemctl --user daemon-reload $ systemctl --user list-unit-files | grep SocksP …

4
systemd服务单元文件中的动态变量
有没有办法在systemd服务单元文件中动态分配环境变量? 我们有一台具有4个GPU的机器,并且我们希望每个GPU加速某个服务的多个实例。例如: gpu_service @ 1:1.service gpu_service @ 2:1.service gpu_service @ 3:1.service gpu_service @ 4:1.service gpu_service @ 1:2.service gpu_service @ 2:2.service gpu_service @ 3:2.service gpu_service @ 4:2.service 广告恶心 因此,1:1、2:1等实际上是服务单元文件中的%i。 为了使服务绑定到特定的GPU,服务可执行文件检查某个环境变量,例如: USE_GPU=4 有没有一种方法可以将%i放入服务单元文件中,并通过某些(外壳)函数运行它以得出GPU编号,然后可以相应地设置USE_GPU环境变量? 最重要的是,我不想/etc/systemd/system/gpu_service@x:y.service/local.conf只写多个文件的麻烦,这样我就可以启动更多实例。

2
服务启动请求重复太快,拒绝启动
我已经在Debian 8.6上创建了一个服务,并且当我尝试使用service命令启动它时,出现错误。 我已经尝试过systemctl daemon-reload,但仍然得到相同的结果。 $ sudo service cloud9 start $ sudo service cloud9 status ● cloud9.service - cloud9 Loaded: loaded (/etc/systemd/system/cloud9.service; enabled) Active: failed (Result: start-limit) since Thu 2016-10-13 07:21:02 UTC; 2s ago Process: 2610 ExecStart=/opt/bitnami/nodejs/bin/node /home/user/c9sdk/server.js -w /home/user -l 0.0.0.0 -a admin:admin (code=exited, status=216/GROUP) Main PID: 2610 (code=exited, status=216/GROUP) …

3
Systemd Postgresql启动脚本
我正在将postgresql安装到第二台服务器上 以前我安装了postgresql,然后使用提供的脚本 ./contrib/start-scripts/linux 放入正确的目录 # cp ./contrib/start-scripts/linux /etc/rc.d/init.d/postgresql92 # chmod 755 /etc/rc.d/init.d/postgresql92 然后我可以按预期执行 # service postgresql92 start 但是,新机器正在使用Systemd,看来有一种完全不同的方法来执行此操作 我不想为此而and毁,所以我想知道是否有人可以指出正确的方向,以实现相同的结果

1
为什么bash参数扩展在systemd服务文件中不起作用?
我正在尝试使用systemd的,EnvironmentFile并在文件中设置命令时向命令添加选项。我在单位文件中具有以下内容: ExecStart=/usr/bin/bash -c "echo ${PORT:+port is $PORT}" 当我启动服务时,它什么也没有回应。 预期的工作如下: ExecStart=/usr/bin/bash -c "echo port is $PORT" 这表示文件已正确读取。 参数替换也可以在命令行上使用: $ PORT=1234 bash -c 'echo ${PORT:+port is $PORT}' port is 1234 我想念什么?

3
系统生成和进程生成
通常不要在这里发布信息,但是我正在把头发撕掉。我有一个Python脚本,它在启动时会分叉,并负责启动其他一系列进程。该脚本曾经在启动时通过sysvinit启动,但是最近我升级到Debian Jessie,因此对其进行了修改,使其可以通过systemd启动。 不幸的是,我遇到了一个我无法解决的问题。当您直接在用户外壳程序中启动脚本时,它将正确启动其子进程,并且当脚本退出时,子进程将被孤立并继续运行。 通过systemd启动时,如果父进程退出,则子进程也全部退出(嗯,它们在其中启动的Screen消失并显示为Dead ???)。 理想情况下,我需要能够在不终止所有子进程的情况下重新启动父脚本,我是否缺少某些东西? 谢谢! [Unit] Description=Server commander After=network.target [Service] User=serveruser Type=forking PIDFile=/var/Server/Server.pid ExecStart=/var/Server/Server.py ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target 编辑:我可能需要指出Python脚本本质上是其子进程的“控制器”。它根据中央服务器的请求在gnu屏幕中启动和停止服务器。它通常一直在运行,不会生成服务并退出。但是在某些情况下,我希望能够在不终止子进程的情况下重新加载脚本,即使这意味着这些进程被孤立为pid1。实际上,即使Python脚本以如下方式启动进程也没有关系:父进程,如果可能的话。 关于其工作原理的更好解释: Systemd产生/Server.py Server.py分叉并为Systemd写入pid文件 然后,Server.py根据其指示在gnu屏幕中生成服务器进程 Server.py继续运行以执行从服务器请求的任何重新启动 在不使用Systemd的情况下启动时,可以重新启动Server.py,并且启动的gnu屏幕不受影响。使用Systemd启动时,当Server.py关闭时,它们会被杀死,而不是将这些屏幕进程孤立为pid 1。

3
我可以使用符号链接作为systemd的服务吗?
例如,我有一个mysshd.service在/usr/lib/systemd/system/目录下命名的服务。我可以创建一个符号链接,例如: ln -s /usr/lib/systemd/system/mysshd.service /usr/lib/systemd/system/fool.service 这样我对fool.service所做的任何操作都会反映到mysshd.service(systemctl enable/disable start/stop fool.servce)吗? 我的目的是通过我自己的sshd服务的符号链接覆盖本机sshd服务。
14 systemd  services 

4
如何更改systemctl中的超时
当我启动Debian系统时,其启动挂起大约2分钟: Loading, please wait... [ 5.191043] systemd-fsck[129]: /dev/mmcblk0p2: clean, 234192/873120 files, 2335263/3491328 blocks [ 6.645242] intel_rapl: no valid rapl domains found in package 0 [ 6.643682] systemd-fsck[222]: fsck.fat 3.0.27 (2014-11-12) [ 6.664844] intel_rapl: no valid rapl domains found in package 0 [ 6.660702] systemd-fsck[222]: /dev/mmcblk0p1: 3 files, 33/130812 clusters [ …

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.