&

在命令后面添加 &,表示在后台运行。但是如果用户退出或者掉线的话,程序也会退出。

nohup

nohup 程序可以使命令脱离当前 session 运行。即使用户退出或掉线,程序仍继续运行。

重定向

nohup 默认会把程序输出打印到 nohup.out 文件。如果不需要打印输出,可以在命令后面添加 >/dev/null 2>&1。这几个符号表示:

  • /dev/null 表示空设备文件
  • 0 表示stdin标准输入
  • 1 表示stdout标准输出
  • 2 表示stderr标准错误

连起来就是把标准错误重定向到标准输出,再打印到空设备文件,即丢弃。

这些命令连起来就是

1
$ nohup php a.php >/dev/null 2>&1 &

这只能做到后台常驻运行,如果想要保证高可用,还要看这篇