我最近设置了一个Laravel Queue系统.基础是cronjob调用一个命令,它将作业添加到队列中并调用第二个发送电子邮件的命令.
当我进入我的服务器并运行php artisan队列时,系统工作:listen,但是如果我关闭我的终端,则监听器关闭,作业堆叠起来并排队,直到我重新进入并再次运行监听.
什么是让我的队列系统在后台运行而不需要通过ssh保持我的连接打开的最佳方法?
我尝试运行php artisan queue:work --daemon,它完成了队列中的作业,但当我关闭终端时,它关闭了连接和后台进程.
我正在尝试nohup一个命令并以不同的用户身份运行它,但每次我这样做时都会产生两个进程.
例如:
$ nohup su -s /bin/bash nobody -c "my_command" > outfile.txt &
Run Code Online (Sandbox Code Playgroud)
这肯定会将my_command作为nobody运行,但是有一个我不想显示的额外进程:
$ ps -Af
.
.
.
root ... su -s /bin/bash nobody my_command
nobody ... my_command
Run Code Online (Sandbox Code Playgroud)
如果我杀死root进程,那么nobody进程仍然存在...但是有没有办法不运行root进程?因为获取my_command的id并将其删除有点复杂.
我使用腻子从Windows计算机上获取Linux计算机终端并运行Java程序。
Java类
try {
Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
logger.info(new Date()+"...");
i=i+1;
}
}, new Date(), 3000);
if(i==50){
t.cancel();
}
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
该程序每3秒写入一行。如果我关闭油灰,它将停止运行。程序结束,不再在记录器文件中写入任何行。
关闭腻子终端后,如何在后端甚至运行状态下运行Java程序?