启动自定义linux服务时,报错Failed at step EXEC spawning /xxx/yyy/zzz No such file or directory

在Linux中,将Python脚本设为开机启动服务时遇到问题,由于/data分区通过NFS挂载,在服务启动时该分区还未挂载导致错误。通过在[Unit]部分添加`RequiresMountsFor=/data/mytools/python38/bin`,确保在数据分区挂载后再启动服务,成功解决了问题。
摘要由CSDN通过智能技术生成

背景:

想在服务器开机启动的时候,自动执行python脚本,于是就把它做成了linux服务的形式。

在/etc/systemd/system/myclock.service

[Unit]
Description=my first linux service
[Service]
Type=simple
ExecStart=/data/mytools/python38/bin/python3 /data/myclock.py
[Install]
WantedBy=multi-user.target

在输入以下命令后:

systemctl daemon-reload
systemctl start myclock.service
systemctl status myclock.service

发现服务没起来,而且报错:

Failed at step EXEC spawning /data/mytools/python38/bin/python3 No such file or directory

原因分析: 

由于/data分区是通过nfs挂载的,所以猜测是systemd启动myclock.service服务的时候,磁盘还没有挂载上,导致找不到文件或目录。

所以需要修改myclock.service服务的配置,使它在指定分区/data挂载后再启动。

解决方案:

在[Unit]中增加一行RequiresMountsFor=/data/mytools/python38/bin

[Unit]
Description=my first linux service
RequiresMountsFor=/data/mytools/python38/bin
[Service]
Type=simple
ExecStart=/data/mytools/python38/bin/python3 /data/myclock.py
[Install]
WantedBy=multi-user.target

然后重新启动就OK了:

systemctl daemon-reload
systemctl start myclock.service
systemctl status myclock.service

 参考:

linux - Failed at step EXEC spawning: No such file or directory - Super User

systemd服务等待nfs挂载后启动 – 全栈笔记

CentOS 7 系统服务配置--单元(Unit)_requiresmountsfor_CodingSir的博客-CSDN博客

Linux基础——服务_linux服务_松仔log的博客-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值