Ho scritto uno script di shell per riavviare soft-HAProxy (reverse proxy). L'esecuzione dello script dalla shell funziona. Ma voglio un demone per eseguire lo script. Questo non funziona. system()
restituisce 256. Non ho idea di cosa possa significare.L'esecuzione dello script di shell con system() restituisce 256. Che cosa significa?
#!/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 viene eseguito con utente haproxy. Il mio demone ha anche il proprio utente. Entrambi corrono con sudo.
Eventuali suggerimenti?
Grazie! Quindi è l'operazione EPERM/* non consentita */... ma perché ... avvio il demone con sudo. –
Perl non restituisce i valori di uscita moltiplicati. Restituisce un valore a 16 bit, con il codice di uscita negli 8 bit più alti. Spesso è lo stesso, ma non sempre. – mivk
Questo vale anche per la maggior parte dei binari Linux/gcc, non solo Perl. –