2015-10-20 52 views
0

我很努力将Debian Jessie上的init脚本迁移到systemd。systemd脚本工作,但不使用卷曲

目标是在引导之后和关闭之前访问URL。该服务文件如下所示:

[Unit] 
Description=some_name 
After=syslog.target network-online.target 
Wants=network-online.target 

[Service] 
Type=oneshot 
ExecStart=/bin/bash /home/xyz/scripts/register.bash 
ExecStop=/bin/bash /home/xyz/scripts/deregister.bash 
RemainAfterExit=yes 

[Install] 
WantedBy=multi-user.target 

寄存器脚本(网址换成XYZ,调试回声):

#!/bin/bash 
IP=$(hostname -I) 
IP=${IP/ /} 

echo "-- register $(date) IP=$IP" >>/home/xyz/register.txt 
echo " $(who -r) ID=$(id) HOST=$(host x.y.z)" >>/home/xyz/register.txt 

/usr/bin/curl --max-time 30 "http://x.y.z/some_script" -s -o /dev/null 

echo " exit code $?" >>/home/xyz/register.txt 

echo "-- reg done $(date)" >>/home/xyz/register.txt 

exit 0 

从命令行触发脚本正常工作,也为根。特别是,curl会按照它应该访问的URL。

此外,该脚本在引导和关闭时启动,并导致register.txt中的相应跟踪。到现在为止还挺好。

然而,不起作用的是,当通过systemd启动时,curl退出代码28(超时)。当我通过网络启动并运行的完全启动的系统通过“systemd start”触发时,也会发生这种情况。所以网络不可用似乎不是超时的原因。

为什么在这些条件下curl超时,以及为了让服务按预期运行需要更改哪些内容?

感谢您的帮助

+0

这类问题在stackexchange相关网站http://unix.stackexchange.com ......这说的是更好的讨论,很高兴你解决了你的问题。祝你好运。 – shellter

回答

1

问题解决了:

这一切都发生在一个虚拟服务器上,现在HTTP访问是通过它没有去过那里,当我使用的初始化脚本之前的代理。

设置在由systemd称为解决了这个问题的脚本的代理变量...