介绍
通常我们需要后台运行一些程序,但是通过连接到服务器的窗口关闭都会发出终止的指令.简单的说远程终端断开连接, 进程就会停止.
解释
一个进程对应一个pid, 会话是一个多进程的集合,就是我们的远程窗口,当用户连接到服务器就会在创建linux/dev/pid一个文件, 要实现后台Daemon执行, 需要满足如下条件,:
- 标准输入重定向
- 进程不受终端关闭的影响
首先在linux上使用 “&” ,但是这只是让进程让出前台终端
其次使用nohup, 如nohup java -jar xxx.jar 会在当前文件下下创建一个nohup.out的文件, 如果不想创建,将其标准输出和标准错误进行重定向
命令
1 | nohup command > /dev/null 2>&1 |
详细:
/dev/null :代表空设备文件
:代表重定向到哪里,例如:echo “1” > /home/temp.txt
1 :表示stdout标准输出,系统默认值是1,所以”>/dev/null”等同于”1>/dev/null”
2 :表示stderr标准错误
& :表示等同于的意思,2>&1,表示2的输出重定向等同于11 > /dev/null 2>&1 语句含义:1 > /dev/null : 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 :接着,标准错误输出重定向(等同于)标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
为何2>&1要写在后面?
: 为了是标准错误 定向到标准输出中,进入到文件中,而不是到终端输出
查询任务
1 | jobs |
其他命令
- ctrl+z : 将进程状态让系统保存,让出前台
- bg : bg%pid 同上
- fg : 前台
- disown: 将作业移除
- fork()