首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Systemd脚本失败

Systemd脚本失败
EN

Stack Overflow用户
提问于 2017-05-14 01:35:15
回答 2查看 23.1K关注 0票数 4

我想在系统启动时在Debian 9机器中运行脚本。我的脚本在独立运行时可以运行,但在systemd下运行失败。

我的脚本只是将一个备份文件从远程服务器复制到本地机器:

代码语言:javascript
复制
#!/bin/sh
set -e

/usr/bin/sshpass -p "PASSWORD" /usr/bin/scp -p USER@10.0.0.2:ORIGINPATH/backupserver.zip DESTINATIONPATH/backupserver/

为了保护隐私,我替换了上面的密码、用户和路径。

我编写了以下systemd服务单元:

代码语言:javascript
复制
[Unit]
Description=backup script

[Service]
Type=oneshot
ExecStart=PATH/backup.sh

[Install]
WantedBy=default.target

然后,我设置脚本的权限:

代码语言:javascript
复制
chmod 744 PATH/backup.sh

并安装了该服务:

代码语言:javascript
复制
chmod 664 /etc/systemd/system/backup.service
systemctl daemon-reload
systemctl enable backup.service

当我重启脚本失败时:

代码语言:javascript
复制
● backup.service - backup script
   Loaded: loaded (/etc/systemd/system/backup.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2017-05-13 13:39:54 -03; 47min ago
 Main PID: 591 (code=exited, status=1/FAILURE)

日志-xe-xe的结果:

代码语言:javascript
复制
mai 16 23:34:27 rodrigo-acer systemd[1]: backup.service: Main process exited, code=exited, status=6/NOTCONFIGURED
mai 16 23:34:27 rodrigo-acer systemd[1]: Failed to start backup script.
mai 16 23:34:27 rodrigo-acer systemd[1]: backup.service: Unit entered failed state.
mai 16 23:34:27 rodrigo-acer systemd[1]: backup.service: Failed with result 'exit-code'.

会出什么问题呢?

EN

回答 2

Stack Overflow用户

发布于 2017-05-27 23:38:40

解决问题的人。有两个问题:

1-我必须更改服务单元文件,使服务仅在网络启动后才能运行。单位部分已更改为:

代码语言:javascript
复制
 [Unit]
 Description = World server backup
 Wants = network-online.target
 After = network.target network-online.target

2-根用户没有将远程主机添加到已知主机列表中,这与我用来测试脚本的普通用户不同。

票数 4
EN

Stack Overflow用户

发布于 2018-08-30 15:18:30

失败,返回结果'exit-code‘,您可以在最后一行尝试执行以下操作:

代码语言:javascript
复制
# REQUIRED FOR SYSTEMD: 0 means clean no error
exit 0

您可能还需要添加:

代码语言:javascript
复制
Type=forking

添加到类似于:https://serverfault.com/questions/751030/systemd-ignores-return-code-while-starting-service的systemd条目中

如果您的服务或脚本没有派生,则在末尾添加一个&,以便在后台运行它,并快速以0退出。否则,它将像一个启动,超时和永远/看起来像冻结的服务。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43956077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档