如果你是一名 Web 开发者,你应该很清楚执行 PHP 代码时会遇到以下问题:
- 命令行终端关闭后程序也随之终止
- 需要一直占用终端,无法进行其他操作
- 执行耗时长的命令需要等待很久,不能等待
如果你遇到了这些问题,那么 nohup(no hang up)命令可能就可以解决你的困扰。nohup 可以让你在后台执行命令,退出终端后,程序仍会继续执行。
下面我们以使用 PHP 的 Yaf 框架为例来说明如何使用 nohup。
nohup php index.php
如果我们希望将日志记录到文件,你可以使用输出重定向符将输出重定向到文件中:
nohup php index.php > /path/to/logfile.log
在上面的例子中,nohup 命令会将输出写入 /path/to/logfile.log 文件,程序会在后台一直运行,直到完成。
如果你希望在程序运行期间能够接收用户的请求,可以使用下面的命令:
nohup php -S 127.0.0.1:8000 -t public/ &
上面的命令会在后台启动一个 PHP 内置的 Web 服务器,并监听本机的 8000 端口,所有的请求都会被程序处理。
nohup 命令非常实用,但也有一些限制:
- 你无法交互式地与程序进行通信
- 程序会一直运行,无法中途停止
不过,对于大部分非交互式的服务器进程而言,nohup 是解决问题的良方。
总结: nohup 命令可以让你在后台执行命令,退出终端后,程序仍会继续执行。在使用 Yaf 框架时,你可以使用 nohup 命令来执行程序,以进行后台运行。