linux nohup和&用法

nohup和&用法

简介

  • nohup 是 no hang up 的缩写,意思是不挂断运行(指退出账号),永久运行下去,但是注意并没有后台运行的功能。

  • & 是在后台运行的意思

nohup Command [ Arg ... ] [ & ]

单独使用nohup

nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,中断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思

  • 前面不显示进程号

  • 有一个 "忽略输入,输出至nohup.out" 的提示

  • 输出不会出现在前台

  • 关掉SSH连接,程序不会关闭

  • Ctrl +C,程序收到SIGINT信号后,直接关闭

查看nohup.out文件,发现程序的输出结果躺在nohup.out中

指定输出到文件中

nohup Command &   默认输出到nohup.out文件

nohup Command > outputfile 2>&1 &  指定输出到output文件
# 一个 > 就行

> 代表重定向到哪里,如 echo "123" > ./123.txt

操作系统中有三个常用的流:

  • 0:标准输入流 stdin
  • 1:标准输出流 stdout
  • 2 :标准错误流 stderr

2>&1的解释

把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件output里面,所以结果是标准错误和标准输出都导入文件output里面了。 至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有

单独使用&

&是指在后台运行,当中断SSH时,命令自动也跟着退出

  • 前面会显示进程号

  • 键入Ctrl + C,发出SIGINT信号,程序会继续运行

  • 关掉SSH连接,程序收到SIGINT信号后,直接关闭

使用nohup和&联合运行

 nohup COMMAND &

使得命令永久的在后台执行

特点:

  • 终端显示中会出现进程号

  • 出现 "忽略输入,输出至nohup.out" 的提示

  • 键入Ctrl + C,发送SIGINT信号,不会关闭

  • 关闭SSH连接,发送SIGHUP信号,不会关闭进程

总结

使用&后台运行程序:

  • 结果会输出到终端
  • 使用Ctrl + C发送SIGINT信号,程序免疫
  • 关闭SSH,发送SIGHUP信号,程序关闭

使用nohup运行程序:

  • 结果默认会输出到nohup.out
  • 使用Ctrl + C发送SIGINT信号,程序关闭
  • 关闭SSH,发送SIGHUP信号,程序免疫

使用nohup和&配合来启动程序:

  • 同时免疫SIGINT和SIGHUP信号
posted @ 2021-09-14 21:31  贝壳里的星海  阅读(1184)  评论(0编辑  收藏  举报