我编写了一个 shell 脚本来软重启 HAProxy(反向代理)。从 shell 中执行脚本是可行的。但我想要一个守护进程来执行脚本。那是行不通的。system()
返回 256。我不知道这意味着什么。
#!/bin/sh
# save previous state
mv /home/haproxy/haproxy.cfg /home/haproxy/haproxy.cfg.old
mv /var/run/haproxy.pid /var/run/haproxy.pid.old
cp /tmp/haproxy.cfg.new /home/haproxy/haproxy.cfg
kill -TTOU $(cat /var/run/haproxy.pid.old)
if haproxy -p /var/run/haproxy.pid -f /home/haproxy/haproxy.cfg; then
kill -USR1 $(cat /var/run/haproxy.pid.old)
rm -f /var/run/haproxy.pid.old
exit 1
else
kill -TTIN $(cat /var/run/haproxy.pid.old)
rm -f /var/run/haproxy.pid
mv /var/run/haproxy.pid.old /var/run/haproxy.pid
mv /home/haproxy/haproxy.cfg /home/haproxy/haproxy.cfg.err
mv /home/haproxy/haproxy.cfg.old /home/haproxy/haproxy.cfg
exit 0
fi
HAProxy 使用用户 haproxy 执行。我的守护进程也有它自己的用户。两者都使用 sudo 运行。
有什么提示吗?
根据this http://www.dreamincode.net/forums/topic/113508-return-value-256/ and that http://www.cs.cmu.edu/afs/cs/usr/rgs/mosaic/pl-exp-sys.html, 珀尔的system()
返回退出值乘以 256。所以它实际上是退出1
。它似乎这也发生在 C 中 https://stackoverflow.com/questions/808541/any-benefit-in-using-wexitstatus-macro-in-c-over-division-by-256-on-exit-status.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)