systemctl status 显示 inactive dead
systemctl status shows inactive dead
我正在尝试编写我自己的(简单的)systemd 服务来做一些简单的事情。(比如使用 shell 脚本将数字 1 到 10 写入文件)。
我的服务文件如下所示。
[Unit]
Description=NandaGopal
Documentation=https://google.com
After=multi-user.target
[Service]
Type=forking
RemainAfterExit=yes
ExecStart=/usr/bin/hello.sh &
[Install]
RequiredBy = multi-user.target
这是我的 shell 脚本。
#!/usr/bin/env bash
source /etc/profile
a=0
while [ $a -lt 10 ]
do
echo $a >> /var/log//t.txt
a=`expr $a + 1`
done
由于某种原因,服务没有启动,systemctl 显示以下输出。
root@TARGET:~ >systemctl status -l hello
* hello.service - NandaGopal
Loaded: loaded (/usr/lib/systemd/system/hello.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: https://google.com
过去 2 天一直在努力找出问题所在。
- 您已设置
Type=Forking
,但您的服务无法使用。尝试
Type=oneshot
- 您的
ExecStart
行有一个“&”,这不是必需的。
- 该服务是
disabled
,这意味着它不是enabled
开机启动。您应该 运行 systemctl enable hello
将其设置为开机启动。
您可以检查 man systemd.directives
以查找可以在 unit
文件中使用的所有指令的索引。
几点:
如果使用Type=forking
,建议指定PidFile。
在您的情况下,Type=simple
和不带 &
的 ExecStart 都可以。
使用systemctl start service-name
启动服务
然后使用systemctl status service-name
检查其状态。
如果服务未启动,状态将为 inactive/dead。
我正在尝试编写我自己的(简单的)systemd 服务来做一些简单的事情。(比如使用 shell 脚本将数字 1 到 10 写入文件)。 我的服务文件如下所示。
[Unit]
Description=NandaGopal
Documentation=https://google.com
After=multi-user.target
[Service]
Type=forking
RemainAfterExit=yes
ExecStart=/usr/bin/hello.sh &
[Install]
RequiredBy = multi-user.target
这是我的 shell 脚本。
#!/usr/bin/env bash
source /etc/profile
a=0
while [ $a -lt 10 ]
do
echo $a >> /var/log//t.txt
a=`expr $a + 1`
done
由于某种原因,服务没有启动,systemctl 显示以下输出。
root@TARGET:~ >systemctl status -l hello
* hello.service - NandaGopal
Loaded: loaded (/usr/lib/systemd/system/hello.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: https://google.com
过去 2 天一直在努力找出问题所在。
- 您已设置
Type=Forking
,但您的服务无法使用。尝试Type=oneshot
- 您的
ExecStart
行有一个“&”,这不是必需的。 - 该服务是
disabled
,这意味着它不是enabled
开机启动。您应该 运行systemctl enable hello
将其设置为开机启动。
您可以检查 man systemd.directives
以查找可以在 unit
文件中使用的所有指令的索引。
几点:
如果使用
Type=forking
,建议指定PidFile。在您的情况下,
Type=simple
和不带&
的 ExecStart 都可以。使用
systemctl start service-name
启动服务然后使用
systemctl status service-name
检查其状态。 如果服务未启动,状态将为 inactive/dead。