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超時,以及爲了讓服務按預期運行需要更改哪些內容?
感謝您的幫助
這類問題在stackexchange相關網站http://unix.stackexchange.com ......這說的是更好的討論,很高興你解決了你的問題。祝你好運。 – shellter