I've written a shell script to soft-restart HAProxy (reverse proxy). Executing the script from the shell works. But I want a daemon to execute the script. That doesn't work. system()
returns 256. I have no clue what that might mean.
#!/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 is executed with user haproxy. My daemon has it's own user too. Both run with sudo.
Any hints?
The Exit code [256] is a general error and not an error displayed by PowerCenter. The failure occurs when shell script has $PMSourceFileDir t on UNIX, while there is no shortcut defined as an environment variable for the same.
return command is used to exit from a shell function. It takes a parameter [N], if N is mentioned then it returns [N] and if N is not mentioned then it returns the status of the last command executed within the function or script.
Every command returns an exit status (sometimes referred to as a return status or exit code). A successful command returns a 0, while an unsuccessful one returns a non-zero value that usually can be interpreted as an error code.
According to this and that, Perl's system()
returns exit values multiplied by 256. So it's actually exiting with 1
. It seems this happens in C too.
Unless system returns -1 its return value is of the same format as the status value from the wait family of system calls (man 2 wait). There are macros to help you interpret this status:
man 3 wait
Lists these macros and what they tell you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With