作者:用户ll08sq9y2x | 来源:互联网 | 2023-09-10 14:08
1、linxu挂起队列监听nohupphpartisanqueue:listen--timeout90--tries1devnull2&1&2、发现问题(日志)InProce
1、linxu挂起队列监听
nohup php artisan queue:listen --timeout=90 --tries=1 >> /dev/null 2>&1 &
2、发现问题(日志)
In Process.php line 429:
The process has been sinaled with signal "1".
3、查询资料(linux信号中断)
标志 |
信号值 |
默认处理动作 |
发出信号的原因 |
---|
SIGHUP |
1 |
A |
终端挂起或者控制进程终止 |
SIGINT |
2 |
A |
键盘中断(如break键被按下) |
SIGQUIT |
3 |
C |
键盘的退出键被按下 |
SIGILL |
4 |
C |
非法指令 |
SIGABRT |
6 |
C |
由abort(3)发出的退出指令 |
SIGFPE |
8 |
C |
浮点异常 |
SIGKILL |
9 |
AEF |
Kill信号 |
SIGSEGV |
11 |
C |
无效的内存引用 |
SIGPIPE |
13 |
A |
管道破裂: 写一个没有读端口的管道 |
SIGALRM |
14 |
A |
由alarm(2)发出的信号 |
SIGTERM |
15 |
A |
终止信号 |
SIGUSR1 |
30,10,16 |
A |
用户自定义信号1 |
SIGUSR2 |
31,12,17 |
A |
用户自定义信号2 |
SIGCHLD |
20,17,18 |
B |
子进程结束信号 |
SIGSEGV |
19,18,25 |
A |
进程继续(曾被停止的进程) |
SIGSTOP |
17,19,23 |
DEF |
终止进程 |
SIGTSTP |
18,20,24 |
D |
控制终端(tty)上按下停止键 |
SIGTTIN |
21,21,26 |
D |
后台进程企图从控制终端读 |
SIGTTOU |
22,22,27 |
D |
后台进程企图从控制终端写 |
处理动作一项中的字母含义如下
A 缺省的动作是终止进程
B 缺省的动作是忽略此信号,将该信号丢弃,不做处理
C 缺省的动作是终止进程并进行内核映像转储(dump core),内核映像转储是指将进程数据在内存的映像和进程在内核结构中的部分内容以一定格式转储到文件系统,并且进程退出执行,这样做的好处是为程序员提供了方便,使得他们可以得到进程当时执行时的数据值,允许他们确定转储的原因,并且可以调试他们的程序。
D 缺省的动作是停止进程,进入停止状况以后还能重新进行下去,一般是在调试的过程中(例如ptrace系统调用)
E 信号不能被捕获
F 信号不能被忽略
3、验证问题:
- 根据日志提示的信号值1,对应资料中的说明 终端挂起或者控制进程终止,
- 调用nohup时指向日志,不使用&后台运行,然后直接关闭终端日志中出现上述的错误提示,问题显然是终端被终止,
- 更进一步要找的为什么后台运行的命令会被终止。
4、结论
nohup命令问题,命令启动后直接关闭终端还是无法后台运行,直接就终止了队列监听命令,队列监听命令的父进程PPID为被转换成root的ID1,推荐使用setsid命令:
setsid php artisan queue:listen --timeout=0 --tries=1 >> queue.log