有时候我们在服务器上执行某个脚本的时候执行时间会很长,如果ssh中断了连接,那么任务也会随之退出。 总不能一直守在电脑屏幕跟前看着吧,为了避免任务执行到一半因为网络问题突然中断的情况,我们需要把任务放入后台运行。使用如下方式执行脚本即可解决这个问题。
使用执行laravel框架中的命令举例:
这里使用php 执行了 laravel框架中的artisan脚本 ,传入了要执行的具体的业务命令”get-data” ,并且携带了”get-data”命令需要的参数”–data-type=a”
1 |
nohup php artisan get-data --data-type=a > /dev/null 2>&1 & |
这里解释一下 “&” 和 “nohup”的区别。
&
表示在后台执行脚本,但是我们退出shell窗口或者网络断开连接的话,该进程也会随之退出。
nohup
英文全称 no hang up(不挂起),当退出sheel窗口或者断开连接之后,任务不会结束,会继续执行。 直到脚本中的逻辑执行完毕,自动结束。
通常把这两个命令结合起来使用, 就是上面示例中的样子。 至于 “/dev/null 2>&1” 的意思就是不记录任何控制台的输出。 如果要把控制台的输出记录下来, 指定某个文件即可。