Ich habe ein Shell-Skript geschrieben, um HAProxy (Reverse-Proxy) neu zu starten. Das Ausführen des Skripts aus der Shell funktioniert. Aber ich möchte, dass ein Daemon das Skript ausführt. Das funktioniert nicht. system()
gibt 256 zurück. Ich habe keine Ahnung, was das bedeuten könnte.Das Ausführen von Shell-Skript mit system() gibt 256 zurück. Was bedeutet das?
#!/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 wird mit dem Benutzer haproxy ausgeführt. Mein Daemon hat auch einen eigenen Benutzer. Beide laufen mit sudo.
Irgendwelche Hinweise?
Danke! Also ist es EPERM/* Operation nicht erlaubt */... aber warum ... starte ich den Daemon mit sudo. –
Perl gibt keine multiplizierten Ausgangswerte zurück. Es gibt einen 16-Bit-Wert zurück, wobei der Exit-Code in den höheren 8 Bits liegt. Es ist oft dasselbe, aber nicht immer. – mivk
Dies gilt auch für die meisten Linux/gcc-Binärdateien, nicht nur für Perl. –