upgrading binary

Igor Sysoev is at rambler-co.ru
Wed Sep 5 17:29:15 MSD 2007

On Wed, Sep 05, 2007 at 02:06:58PM +0300, Riku R?is?nen wrote:

> I'm asking this again since I haven't found the solution yet. (It's  
> fine as long as my servers stay up and the old binary runs..)
> I've been trying to upgrade my nginx by sending the USR2 (as root and  
> nginx) signal to it without any success.
> error log:
> 2007/08/30 17:36:04 [notice] 15169#0: signal 12 (SIGUSR2) received,  
> changing binary
> 2007/08/30 17:36:04 [notice] 15169#0: changing binary
> 2007/08/30 17:36:04 [alert] 27578#0: execve() failed while executing  
> new binary process "nginx" (13: Permission denied)
> 2007/08/30 17:36:04 [notice] 15169#0: start new binary process 27578
> 2007/08/30 17:36:04 [notice] 15169#0: signal 17 (SIGCHLD) received
> 2007/08/30 17:36:04 [notice] 15169#0: new binary process 27578 exited  
> with code 1
> nginx binary is executable and owned by root.
> I've tried chowning the binary to nginx:nginx (the user/group defined  
> in nginx.conf) and it doesn't help.
> What does the error permission denied mean? What am I doing wrong?

It seems that you use Linux (SIGCHLD is signal 17).
Linux man says:

  EACCES Search permission is denied on a component of the path prefix of
         filename  or  the  name  of  a  script  interpreter.   (See also

  EACCES The file or a script interpreter is not a regular file.

  EACCES Execute permission is denied for the file or  a  script  or  ELF

  EACCES The file system is mounted noexec.

However, it seems they are not your case.
Try to run nginx via full path, e.g. /usr/local/sbin/nginx
By default nginx deletes all enviroment variables except TZ, so
there is not PATH variable and execve can not find "nginx". However,
ENOTENT error should be in this case.

Igor Sysoev

More information about the nginx mailing list