背景:之前做完一个项目,想把它放到云服务器上 24 小时不间断运行,在云服务器上面折腾了不少时间,总算搞定了
因为是 C++ 项目,而且写的服务器也是基于 httplib 库实现的,所以不需要在云服务器上进行配置,只需要在 Linux shell 命令下将生成的可执行文件变为后台进程就可以了
命令如下:
nohup ./ 可执行的程序 > 正确输出日志文件 2>错误输出流 &
例如
nohup ./system > tmp/right.log 2> tmp/error.log &
为什么这样写呢?因为我们的前台进程一般都会在命令界面进行输出,但是对于后台进程我们需要把输出的内容重定向到一个文件中去.
什么叫重定向,就是我本来要显示在界面,但是通过 shell 命令放到了指定文件中,或者我本来想要让输出到 A 文件,但是可以重定向到 B 文件中
Linux 进程默认情况下会有 3 个缺省打开的文件描述符,分别是标准输入0, 标准输出1, 标准错误2.
0,1,2对应的物理设备一般是:键盘,显示器,显示器
但是按照上面那样写,如果退出 shell 命令依然访问不到
可以把日志写到**.log 中,如下图:
可以将命令写成这样
./system & >**.log 2>&1