独angular兽收到USR2时是否保留相同的PID?

所以,我一直在玩个人服务器上的独angular兽部署。 这背后有各种各样的原因 – 其中之一就是我并不是特别想编译我自己的nginx版本,以便获得伪造的乘客。 (我喜欢有包pipe理的东西。)

无论如何,独angular兽正在performance出一些奇怪的行为。 当您发送Unocorn USR2信号时,它应该通过将它的pid文件从unicorn.pid复制到unicorn.pid.oldbin来进行热交换。 我已经configuration了我的unicorn.rb文件,所以如果它在启动时发现了unicorn.pid.oldbin – 它会将旧进程拍成一个QUIT – 就像我应该这样做。

然而,这似乎并没有工作,因为没有一个PID正在改变。 所以,无论是麒麟是inheritance相同的PID – 或者什么是错误的。

以下是大师独angular兽进程的一大步。 我在阅读系统电话方面并不是很壮观 – 但我没有看到任何东西在这里跳出来。 有人可以看看,并告诉我我失踪了吗? 谢谢!

Process 32177 attached - interrupt to quit select(6, [5], NULL, NULL, {20, 476644}) = ? ERESTARTNOHAND (To be restarted) --- SIGUSR2 (User defined signal 2) @ 0 (0) --- sigreturn() = ? (mask now []) fcntl64(6, F_GETFL) = 0x1 (flags O_WRONLY) fcntl64(6, F_SETFL, O_WRONLY|O_NONBLOCK) = 0 write(6, ".", 1) = 1 select(6, [5], NULL, NULL, {10, 814939}) = 1 (in [5], left {10, 814936}) fcntl64(5, F_GETFL) = 0 (flags O_RDONLY) fcntl64(5, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 read(5, ".", 11) = 1 waitpid(-1, 0xbf987ee4, WNOHANG) = 0 open("/www/web/tmp/unicorn.pid.oldbin", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 open("/www/web/tmp/unicorn.pid", O_RDONLY|O_LARGEFILE) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=6, ...}) = 0 fstat64(4, {st_mode=S_IFREG|0644, st_size=6, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb777c000 _llseek(4, 0, [0], SEEK_CUR) = 0 read(4, "32177\n", 4096) = 6 read(4, "", 4096) = 0 close(4) = 0 munmap(0xb777c000, 4096) = 0 unlink("/www/web/tmp/unicorn.pid") = 0 open("/www/web/tmp/0.0132033250636285.32177", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0644) = 4 fcntl64(4, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE) fstat64(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb777c000 _llseek(4, 0, [0], SEEK_CUR) = 0 write(4, "32177\n", 6) = 6 rename("/www/web/tmp/0.0132033250636285.32177", "/www/web/tmp/unicorn.pid.oldbin") = 0 close(4) = 0 munmap(0xb777c000, 4096) = 0 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb74939d8) = 32184 waitpid(-1, 0xbf987ee4, WNOHANG) = 0 gettimeofday({1312941623, 777508}, NULL) = 0 gettimeofday({1312941623, 777684}, NULL) = 0 select(6, [5], NULL, NULL, {26, 0}) = ? ERESTARTNOHAND (To be restarted) --- SIGCHLD (Child exited) @ 0 (0) --- sigreturn() = ? (mask now []) fcntl64(6, F_GETFL) = 0x801 (flags O_WRONLY|O_NONBLOCK) write(6, ".", 1) = 1 select(6, [5], NULL, NULL, {25, 595766}) = 1 (in [5], left {25, 595763}) fcntl64(5, F_GETFL) = 0x800 (flags O_RDONLY|O_NONBLOCK) read(5, ".", 11) = 1 waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 32184 gettimeofday({1312941624, 183506}, NULL) = 0 write(2, "reaped #<Process::Status: pid=32"..., 57) = 57 open("/www/web/tmp/unicorn.pid", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 open("/www/web/tmp/unicorn.pid.oldbin", O_RDONLY|O_LARGEFILE) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=6, ...}) = 0 fstat64(4, {st_mode=S_IFREG|0644, st_size=6, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb777c000 _llseek(4, 0, [0], SEEK_CUR) = 0 read(4, "32177\n", 4096) = 6 read(4, "", 4096) = 0 close(4) = 0 munmap(0xb777c000, 4096) = 0 unlink("/www/web/tmp/unicorn.pid.oldbin") = 0 open("/www/web/tmp/0.712879319799392.32177", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0644) = 4 fcntl64(4, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE) fstat64(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb777c000 _llseek(4, 0, [0], SEEK_CUR) = 0 write(4, "32177\n", 6) = 6 rename("/www/web/tmp/0.712879319799392.32177", "/www/web/tmp/unicorn.pid") = 0 close(4) = 0 munmap(0xb777c000, 4096) = 0 waitpid(-1, 0xbf987ee4, WNOHANG) = 0 gettimeofday({1312941624, 186901}, NULL) = 0 gettimeofday({1312941624, 187058}, NULL) = 0 select(6, [5], NULL, NULL, {25, 0}^C <unfinished ...> Process 32177 detached 

我find了解决这个问题的办法。

事实certificate,我的日志文件中有错误信息表明新subprocess启动失败。 这个失败的原因是我没有在我的Gemfile中声明独angular兽。

出于某种原因,似乎有可能从命令行启动独angular兽,而不在Gemfile中存在独angular兽,但独angular兽不可能在Gemfile中没有提到的情况下自行启动。

我很乐意从知道为什么会这样的人那里得到解释,但是现在我的问题已经解决了。 我能够成功地骑独angular兽。

我一直在处理一个相关的问题,我们仍在通过邮件列表进行处理: http : //rubyforge.org/pipermail/mongrel-unicorn/2011-August/001081.html