0

我目前正在构建一个基于 Ubuntu 15.10 的 miniroot。因此我想使用systemd。我的标准脚本 '/etc/init.d/script' 由 systemd 找到并执行。但是,我也确实有一个位于 /etc/init/script.conf 的脚本的 conf 未执行。因此我编写了这个 systemd 脚本

[Unit]
Description=Job that starts the startmaster.sh in /usr/bin/local/
Requires=script.service
After=script.service

[Service]
Type=forking
ExecStart=/sbin/getty -l /usr/local/bin/startmaster.sh -n 38400 tty6

[Install]
WantedBy=multi-user.target

此脚本在启动时执行,但未显示预期行为

startmaster.py #!/bin/sh 的内容

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

#vt=$1
vt=6


sleep 1
chvt $vt
sleep 1
chvt $vt
sleep 1
chvt $vt

screen -U master.py

exec getty 38400 tty$vt

dmesg 显示以下段错误

[ 2106.122116] master.py[3960]: segfault at 0 ip 00007f731ccfa892 sp 00007ffdb76d5620 error 4 in libc-2.21.so[7f731cc76000+1c0000]

任何建议如何解决这个问题

4

1 回答 1

1

我不确定你为什么需要 getty 和 vt 复杂性。master.py需要人工输入吗?为什么不master.py直接从 systemd 单元运行?如果你需要监控它,你可以通过查看master.py运行的输出来做到这一点journalctl -u master.service

这要简单得多。请尝试一下,看看它是否适合您的需求

[Unit]
Description=Master service that does xyz

[Service]
Type=simple
ExecStart=/usr/local/master.py

[Install]
WantedBy=multi-user.target
于 2016-01-13T14:46:13.457 回答