后台运行Linux命令

介绍

通常我们需要后台运行一些程序,但是通过连接到服务器的窗口关闭都会发出终止的指令.简单的说远程终端断开连接, 进程就会停止.

解释

一个进程对应一个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的输出重定向等同于1

  • 1 > /dev/null 2>&1 语句含义:1 > /dev/null : 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。

  • 2>&1 :接着,标准错误输出重定向(等同于)标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

为何2>&1要写在后面?

: 为了是标准错误 定向到标准输出中,进入到文件中,而不是到终端输出

查询任务

1
jobs

其他命令

  • ctrl+z : 将进程状态让系统保存,让出前台
  • bg : bg%pid 同上
  • fg : 前台
  • disown: 将作业移除
  • fork()
Donate comment here