You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Laravel的artisan命令在Ubuntu服务器关闭终端后仍后台运行?

方案1:nohup 临时后台运行(快速实现,无需额外配置)

nohup 命令可以忽略SSH终端的挂断信号,关闭Putty后进程仍会持续运行,执行以下命令即可:

nohup php artisan schedule:work > ~/scheduler.log 2>&1 &

参数说明:

  • > ~/scheduler.log 是将命令运行日志输出到当前用户主目录的scheduler.log文件,方便后续排查问题,不需要日志可以替换为> /dev/null
  • 2>&1 代表将错误输出也重定向到和标准输出相同的位置
  • 末尾的&代表将进程放到后台运行

运行后可以通过ps aux | grep "php artisan schedule:work"确认进程是否正常启动,需要停止时找到对应进程ID执行kill 进程ID即可。

方案2:systemd 系统服务配置(生产环境推荐,支持开机自启、异常自动重启)

该方案稳定性最高,适合正式线上环境使用,操作步骤如下:

  • 新建服务配置文件:sudo nano /etc/systemd/system/laravel-scheduler.service
  • 粘贴以下配置内容,需根据实际情况替换User、Group、WorkingDirectory、php执行路径为你服务器的对应值:
[Unit]
Description=Laravel 调度任务工作进程
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/你的Laravel项目根目录
ExecStart=/usr/bin/php artisan schedule:work
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
  • 保存退出后重载systemd配置:sudo systemctl daemon-reload
  • 启动服务:sudo systemctl start laravel-scheduler
  • 设置开机自动启动:sudo systemctl enable laravel-scheduler

如需查看服务运行状态,执行sudo systemctl status laravel-scheduler即可,查看实时运行日志执行sudo journalctl -u laravel-scheduler -f。

方案3:screen 会话托管(需要保留终端交互场景适用)

如果你需要随时可以切回命令运行终端查看实时输出,可以使用screen工具:

  • 安装screen:sudo apt update && sudo apt install screen -y
  • 新建名为scheduler的会话:screen -S scheduler
  • 进入会话后正常执行命令:php artisan schedule:work
  • 按Ctrl + A + D组合键即可退出会话且不终止进程,关闭Putty也不会影响运行
  • 需要回到会话查看时,执行screen -r scheduler即可

注意:如果你的服务器上同时运行了队列消费任务,也可以参考同样的逻辑配置后台运行。

内容的提问来源于stack exchange,提问作者Anorbert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:42:02