标签: systemd

重启后iptables不启动

我在 systemd 中启用了 iptables:

systemctl enable iptables
Run Code Online (Sandbox Code Playgroud)

但是当我尝试重新启动后service iptables status,它显示:

# service iptables status
Redirecting to /bin/systemctl status  iptables.service
 iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
Run Code Online (Sandbox Code Playgroud)

但是当我手动启动它时systemctl start iptables,它正常启动。

我正在运行 Fedora 22。

fedora iptables systemd

1
推荐指数
1
解决办法
2031
查看次数

如何使用 systemd 在 IPv4 模式下启动命名?

如何配置我的 Ubuntu 15.04 bind9 以停止使用 IPv6 解析查询?

TL; 博士

我在我的 Ubuntu 15.04 机器上使用 bind9。似乎我的命名服务器正在尝试使用 IPv6 解决大量查询。

29-Jul-2015 01:03:28.926 lame-servers: error (network unreachable) resolving 'vassg.omniroot.com.edgesuite.net/A/IN': 2600:1401:2::2#53
29-Jul-2015 01:03:30.073 lame-servers: error (network unreachable) resolving 'askubuntu.com/A/IN': 2001:503:231d::2:30#53
29-Jul-2015 01:03:30.516 lame-servers: error (network unreachable) resolving 'stackapps.com/A/IN': 2001:503:a83e::2:30#53
29-Jul-2015 01:03:30.533 lame-servers: error (network unreachable) resolving 'stackapps.com/AAAA/IN': 2400:cb00:2049:1::adf5:3b69#53
Run Code Online (Sandbox Code Playgroud)

在谷歌搜索时,我最终得到了仅通过添加 -4 开关在 IPv4 模式下启动命名服务的解决方案。我尝试将我的 /etc/default/bind9 修改为:

/etc/default/bind9

# run resolvconf?
RESOLVCONF=yes

# startup options for the server
OPTIONS="-4 -u bind"
Run Code Online (Sandbox Code Playgroud)

但是我最终仍然使用 IPv6 解决了很多失败的问题。

所以我检查了用于以 systemd 命名的开关

mippy@heimdal:~/src/servermon$ …
Run Code Online (Sandbox Code Playgroud)

ubuntu bind named-conf systemd

1
推荐指数
1
解决办法
4880
查看次数

如何将 curl 的结果分配给 systemd 变量?

我使用的是亚马逊网络服务的服务器,并正在试图建立一个systemd作业需要作为输入AWS外部IP检索的curl

[Unit]
Description=My example with AWS external IP
Wants=network-online.target
After=network-online.target

[Service]
Type=forking
Environment=EXTERNAL_IP=$(/usr/bin/curl http://169.254.169.254/latest/meta-data/public-ipv4)
ExecStart=/path/to/myexample $EXTERNAL_IP

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

验证工具systemd-analyze verify myexample.service表明curl环境分配存在问题。

Invalid environment assignment, ignoring: EXTERNAL_IP=$(/usr/bin/curl http://169.254.169.254/latest/meta-data/public-ipv4)

如果我用curl硬编码的 IP 字符串替换结果,我的守护进程就会启动。如何curl在我的 systemd 作业中使用结果?

curl amazon-web-services systemd

1
推荐指数
1
解决办法
1792
查看次数

我无法在 ubuntu-16.04 和 systemd 上获得正确的启动项

我需要制作一个新映像并选择了新的 16.04 ubuntu,这样我就可以获得某些软件包的更新版本,而不是从源代码安装。到目前为止,我对这个决定感到遗憾,因为在线文档很少。

在 12.04 和 14.04 中,我经常能够通过安装一个包,然后删除(而不是清除)它来创建 ubuntu 启动脚本,从而将启动脚本重新用于自定义编译。然后我可以编辑它们以指向正确的配置文件和二进制文件。

例如,要使用最新的 openresty,我可以这样做:

apt-get install nginx
apt-get remove nginx
Run Code Online (Sandbox Code Playgroud)

然后我可以更新/etc/init.d/nginx脚本以指向我的自定义二进制/配置文件,我有一个快乐的 ubuntu 启动脚本。伟大的!

此方法不再适用于 16.04。

我已经编辑:

  • /etc/init.d/nginx
  • /etc/init/nginx.conf
  • /lib/system.d/system/nginx.service

ubuntu 从不拉我的二进制文件(在 中/usr/local/openresty/nginx/sbin/nginx)。它总是/sbin/nginx在启动时运行(我一开始错过了卸载“nginx-core”)或什么都不运行。这同样适用于其他包。

Ubuntu 关于从新贵过渡的文档在这方面缺乏,他们关注“开始停止”。

不知道ubuntu 在哪里决定这个。我找不到任何指向/sbin/nginx. 没有日志帮助。我遇到的每个潜在文件都指向备用二进制文件和配置。

如果有人可以分享有关使用新启动系统及其外观/存储信息的良好资源,我将不胜感激。

似乎涉及到一个数据库,因为它检测到文件更改并要求我重新加载 - 但我还没有找到它。

更新

在玩弄了很多之后,我想出了以下内容:

nginx 包似乎安装了两种类型的设置,但只使用了一种。一些问题与此有关。

  1. /etc/init.d/nginx/etc/init/nginx.conf
  2. /lib/systemd/system/nginx.service/etc/systemd/system/nginx.service

从试验和错误中: * 运行systemctl disable nginx.service以禁用/删除大多数链接和文件 * 删除 /etc/systemd/system/nginx.service 中的文件(如果存在) * 在 /lib/systemd/system/nginx.service 中放置一个新文件 * 运行systemctl enable nginx.service

/lib/systemd/system/nginx.service …

ubuntu systemd

1
推荐指数
1
解决办法
1万
查看次数

systemd 可以管理管道吗?

systemd 可以管理类似于 daemontools 系列的管道吗?如果是这样,实现这一目标的最佳方法是什么?

我想运行与systemd 管理的service1 | service2whereservice1service2are(单独或不单独)服务的等价物。

我希望能够在service2不中断的情况下重新启动该过程service1。换句话说,退出service1时不能关闭正在写入的文件描述符service2。当 的新实例service2启动时,它应该继承现有的文件描述符,以便 stdout fromservice1将流入新的service2. (就像 daemontools 在run和之间维护一个管道log/run,尽管管道不必是服务和记录器。)

也许中间有 systemd 管理的 FIFO?

daemontools systemd

1
推荐指数
1
解决办法
3318
查看次数

为什么我的服务每 90 秒重新启动一次?

我正在使用 Ubuntu Server 16.04。

这是.service文件:

[Unit]
Description=NoDescpt

[Service]
ExecStart=/home/git/cmd/daphnei
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

以及相关的脚本/home/git/cmd/daphnei

#!/bin/bash
cd /home/git/hsfzmun/server
/home/git/virtualenvs/hsfzmun/bin/daphne -b 0.0.0.0 -p 8001 -v2 config.asgi:channel_layer
Run Code Online (Sandbox Code Playgroud)

让我感到困惑的是该服务将每 90 秒重新启动一次,但我找不到原因。


我发现该服务的状态始终为activating,这意味着systemd不知道该服务已启动。但是脚本确实启动了,因为我可以访问我的网站。那么它有什么问题呢?

ubuntu service systemd systemctl

1
推荐指数
1
解决办法
1759
查看次数

systemd 根据条件重新启动作业

我有一个仅运行在带有 wine 和 Xvfb 的 linux 机器上的 Windows 守护程序。由于这个相当实验性的设置,守护程序会定期崩溃,我想实现某种机制来自动重新启动守护程序。目前我有一个带有Restart=always设置的 systemd 单元定义。

但是,我注意到有时守护程序会崩溃,但不会退出它的进程。这相当于显示一个带有“守护程序崩溃,您要发送错误报告吗?”问题的对话框。因此,该进程仍在运行,但守护进程已停止工作。

我可以在我的 linux 机器上检查的这种现象的唯一外部行为是两个新文件,它们出现在某个位置但具有可变文件名(它们依赖于时间,并且名称中有时间戳)。我认为它们是某种内存转储或堆栈跟踪,最初应该用于发送错误报告。

所以现在我正在为 systemd 寻找一个解决方案来捕获这个解决方案,比如

  1. 在单元启动时,查看故障转储目标目录并制作目录内容的快照
  2. 启动守护进程
  3. 定期查看目录,如果有新文件,不在快照中,根据一些正则表达式,重新启动守护进程并刷新快照。

我想过一个用 bash 或其他东西编写的包装器,但有两个问题:首先我不知道如何实现这种行为,其次,这将使 systemd 的使用完全过时,因为脚本处理所有崩溃处理,而 systemd 只会执行脚本。

我还考虑过使用 systemd 的给定功能定期重新启动守护程序,但这会非常低效(考虑到 Wine 包装器中的 Windows 守护程序一开始并不是低效的),因为它有时会重新启动守护程序当不需要时,或者在守护程序崩溃后需要一段时间才能定期重新启动。

解决这个问题的最佳解决方案是什么?

仅供参考:我正在谈论的守护程序是 Google 相册的上传程序。出于某种原因,谷歌没有为 Linux 发布它。

daemon wine systemd

1
推荐指数
1
解决办法
2806
查看次数

通过 systemd 管理自编译的 Nginx

我从源代码编译了 Nginx,现在我想通过 systemd 来管理它systemctl start,stop,restart,reload,enable nginx.service。我需要做什么才能启用它?

nginx systemd

1
推荐指数
1
解决办法
4193
查看次数

获取 systemd 的实际状态

我们如何知道 systemd 是否已完成引导系统?

如果由于缺少网络连接,系统实际上处于启动过程中,我不想在 cron 作业上执行。我的由 cron 启动的脚本会在上面进行测试,如果启动过程没有完成,它会退出

#!/bin/sh
$STATE=`HERE ADD THE MISSING PART`
if [ $STATE != "active" ]; then
  exit
fi
# Actions to do on next cron after booting
Run Code Online (Sandbox Code Playgroud)

如果它也可以向我提供有关关闭过程的信息,因为问题可能是相同的..;

我使用运行级别命令使用 SystemV 执行此操作,但 Systemd 在启动结束时不会更改运行级别。

谢谢

debian boot systemd

1
推荐指数
1
解决办法
612
查看次数

Linux PC 的启动/停止时间

我想查看 Linux PC 的启动/停止时间。

我找到了这个命令,但是输出错误:

last reboot -F
reboot   system boot  4.15.0-46-generi Thu Mar 14 10:04:27 2019 - Thu Mar 14 15:31:11 2019  (05:26)
Run Code Online (Sandbox Code Playgroud)

这不是真的。不是 10:04,而是 09:04。

查看相关问题:https : //askubuntu.com/questions/854567/last-reboot-is-missing-one-hour/859782

如何在 Ubuntu 18.04 上查看正确的启动/停止时间?

boot last systemd

1
推荐指数
1
解决办法
167
查看次数