2015-10-20 50 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稱爲解決了這個問題的腳本的代理變量...