标签: systemd

作为 systemd 服务运行两个 tmux 会话

我可以成功启动/停止创建 tmux 会话的服务。服务如下:
test1.service:

[Unit]
Description=First test service

[Service]
Type=forking
User=lancer
ExecStart=/usr/bin/tmux new-session -s test1 -d
ExecStop=/usr/bin/tmux kill-session -t test1

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

$ sudo systemctl start test1.service

$ sudo systemctl stop test1.service

都成功了。现在我想要另一个 tmux 会话,我可以从另一个服务控制它。所以我创建了这个 test2.service:

    [Unit]
    Description=Second test service
    
    [Service]
    Type=forking
    User=lancer
    ExecStart=/usr/bin/tmux new-session -s test2 -d
    ExecStop=/usr/bin/tmux kill-session -t test2
    
    [Install]
    WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

问题:两者中的任何一个都可以单独工作。我可以通过以下方式查看相应的 tmux 会话:
$ tmux ls
如果我启动其他服务,则不会发生任何情况。我只有之前的 tmux 会话。有人可以帮忙吗?

linux tmux systemd

7
推荐指数
2
解决办法
8387
查看次数

让所有 systemd 计时器在出错时向 root 发送邮件

croncrontab就作业错误向所有者发送电子邮件。

systemd当它运行计时器时我怎样才能做同样的事情?

注意:我并不是在寻找向特定服务添加电子邮件通知的方法。或多项服务。理想情况下,我不想编程。我只是想知道systemd当任何计时器或服务失败时如何告诉 root 发送电子邮件。我不敢相信systemd没有实现由配置文件中的选项启用的这种基本通知。

然而,在事实上systemd缺乏这样一个基本功能的可悲情况下,我可以使用一些外部包,它的工作方式与logcheck系统日志的工作方式类似。

linux cron systemd

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

如何使用systemd在arch linux中的raid0上自动挂载ntfs分区

最近,我按照这个wiki从initscript切换到systemd,并且在启动过程中出现了这样的错误:

Job dev-md126p5.device/start timed out
Run Code Online (Sandbox Code Playgroud)

这是我的 fstab:

/dev/mapper/VGLinux-lvroot / ext4 rw,relatime,stripe=64,data=ordered 0 1
/dev/mapper/VGLinux-lvhome /home ext4 rw,relatime,stripe=64,data=ordered 0 2
/swapfile none swap defaults 0 0
/dev/md126p5 /media/data ntfs-3g uid=xiaoxing,gid=users 0 0
Run Code Online (Sandbox Code Playgroud)

这是我的分区方案:我有两个相同的硬盘驱动器,默认情况下,它是一个 raid0。三个分区是这样的:

  1. 视窗 7, 200GB, ntfs
  2. linux, 100GB, lvm / , 30GB, ext4 /home , 30GB, ext4 剩下的供以后使用。
  3. 数据,休息,ntfs

“超时”后,它让我进入紧急模式,我可以手动挂载数据分区,并运行“systemctl default”,它会正常启动系统。或者我可以注释掉fstab文件中的“数据”部分,然后进入系统并轻松挂载。

在我切换到systemd之前没有问题。现在我已经尝试了一切,包括编写我自己的 .service 文件来挂载它,但它仍然无法在启动过程中挂载分区。有任何想法吗?

编辑#1

上面的错误来自journalctl,启动时打印在屏幕上的错误是:

[ TIME ] Timed out waiting for device dev-md126p5.device.
Run Code Online (Sandbox Code Playgroud)

然后是很多[DEPEND],然后我就进入了紧急模式。

我只是好奇是什么原因?是因为它在突袭中,还是因为它是一个 ntfs 分区?

linux ntfs-3g raid-0 automount systemd

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

在什么时候为 systemd 初始化 cgroup?

因此,长话短说,我试图让 systemd 与 Arch 安装一起工作,但没有从 init 运行 systemd。这意味着我正在启动一个没有运行 systemd 的系统,然后尝试在其上启动 systemd。

我面临的问题与 cgroups 有关 - 在启动期间,systemd 抱怨缺少 /sys/fs/cgroup/systemd 作为 cgroup,因此运行时功能减少,因为它认为 cgroups 不可用。这会导致任何使用 D-Bus 与 systemd 通信的工具出现问题。

正常运行 systemd(作为 PID 1 运行)cgroups 被正确创建并且 systemd 可以完全工作。但是,当它在已经启动的系统上运行时,不会创建 cgroup。我想知道在 init 过程中的哪个点是 /sys/fs/cgroup/systemd 创建/挂载,以及如何在已经运行的系统上复制它?我可以确认不是 /sbin/init 创建了 cgroup,因为运行它会产生相同的结果。

否则,我应该从哪里开始查看 systemd 的源代码?或者也许有一个邮件列表,我可以直接从开发人员那里得到更好的答案?

linux init systemd

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

使用 systemd 在 multi-user.target 之后但在登录屏幕之前执行交互式(whiptail)脚本

我正在尝试从 Fedora 19 上的 systemd 运行一个小的交互式配置脚本。它必须以 root 身份运行,并在用户登录之前运行。我创建了一个看起来像这样的服务:

[Unit]
Description=blah
Before=graphical.target 

[Service]
Type=oneshot
ExecStart=/path/to/script.sh

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

为简单起见,脚本如下所示:

#!/bin/sh
whiptail --msgbox "test" 0 78
Run Code Online (Sandbox Code Playgroud)

但是,当我加载此服务并重新启动时,不会显示脚本输出,并且在 /var/log/messages 中它建议应该设置 TERM 变量。但我希望脚本能在第一个虚拟终端上运行。

任何建议或见解将不胜感激。

linux bash systemd

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

systemd 服务将手动启动,但不会在启动时启动?

我已经编写了一个 systemd 服务来在我的 Raspberry Pi 上启动地面控制。

[Unit]
Description=Groundcontrol status monitor

[Service]
ExecStart=/opt/groundcontrol/groundcontrol/start.sh
Type=forking

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

我正在使用该脚本,因为除非从 bin 目录启动,否则地面控制将无法正常工作。这是脚本:

cd /opt/groundcontrol/groundcontrol
./groundcontrol &
Run Code Online (Sandbox Code Playgroud)

当我手动启动它时,这非常有效,但是当我启动我的 Pi 并运行systemctl它时,它说它失败了。systemctl status groundcontrol.service印刷

groundcontrol.service - Groundcontrol status monitor
   Loaded: loaded (/etc/systemd/system/groundcontrol.service; enabled)
   Active: failed (Result: exit-code) since Wed 1969-12-31 17:00:14 MST; 43 years 11 months ago
  Process: 111 ExecStart=/opt/groundcontrol/groundcontrol/start.sh (code=exited, status=0/SUCCESS)
 Main PID: 116 (code=exited, status=2)

Dec 31 17:00:11 waldo systemd[1]: Starting Groundcontrol status monitor...
Dec 31 17:00:12 waldo systemd[1]: Started Groundcontrol …
Run Code Online (Sandbox Code Playgroud)

arch-linux systemd

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

Arch Linux 安装无法启用 dhcpd

我正在尝试使用 arch linux 设置互联网。我刚刚使用并行安装它并收到以下错误:

[root@singularity ~]# systemctl enable dhcpd.service
Failed to issue method call: No such file or directory
Run Code Online (Sandbox Code Playgroud)

所以我尝试手动链接它:

[root@singularity ~]# ln -s /usr/lib/systemd/system/dhcpd.service /usr/lib/systemd/system/multi-user.target.wants/dhcpd.service
Run Code Online (Sandbox Code Playgroud)

就在那时,我意识到该文件甚至不存在:

[root@singularity ~]# ls /usr/lib/systemd/system/dhcpd.service
ls: cannot access /usr/lib/systemd/system/dhcpd.service: No such file or directory
Run Code Online (Sandbox Code Playgroud)

有什么办法可以解决这个问题吗?我无法访问互联网,因为我无法启用 dhcpd。我正在运行 OSX 10.9 并使用并行。

linux parallels dhcp arch-linux systemd

6
推荐指数
2
解决办法
4万
查看次数

设备挂载后启动 systemd 服务

我正在为 CentOS 7 下的 minidlnad(DLNA 服务器)编写 systemd 的 .service 文件。由于我的媒体文件集合托管在 RAID 阵列上,因此我需要在启动 minidlnad 服务器之前安装该阵列。RAID 阵列和 minidlnad 都应该在引导时启动。有没有办法在 systemd 中做到这一点?

raid mount systemd

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

从进程名称识别 systemd 单元文件

对于某些服务单元文件,单元文件名与守护程序的名称不对应。

例如 Postfix:单元文件被调用,postfix.service但启动的底层守护进程被命名为master(主守护进程)和qmgrtlsmgr(辅助守护进程)。

我正在寻找一种根据任何守护程序名称获取单元名称的方法。

使用systemctl status postfix(作为示例),我可以看到它显示了它产生的进程。

使用systemctl --all statusI 可以得到所有东西......但只是简单的 grep 进入那个烂摊子是不会得到单位名称的。

linux systemd

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

systemctl debian 8 jessie:无法获得 D-Bus 连接:未知错误 -1

不幸的是,在我的 Debian 8 中,jessie systemctl 根本不起作用。

每个systemctl命令都会导致:

Failed to get D-Bus connection: Unknown error -1

系统状态 udev

无法获得 D-Bus 连接:未知错误 -1

我该如何解决?

我会很感激你的帮助。

debian dbus systemd systemctl debian-jessie

6
推荐指数
0
解决办法
2783
查看次数

标签 统计

systemd ×10

linux ×7

arch-linux ×2

automount ×1

bash ×1

cron ×1

dbus ×1

debian ×1

debian-jessie ×1

dhcp ×1

init ×1

mount ×1

ntfs-3g ×1

parallels ×1

raid ×1

raid-0 ×1

systemctl ×1

tmux ×1