专栏首页DBA随笔Linux命令之nohup

Linux命令之nohup

Linux命令之nohup

用途:不挂断地运行命令。

语法:nohup Command [ Arg ... ] [ & ] 描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

nohup 命令可以使命令永久的执行下去,和终端没有关系,退出终端也不会影响程序的运行; & 是后台运行的意思,但当用户退出的时候,命令自动也跟着退出。 那么,把两个结合起来nohup 命令 &这样就能使命令永久的在后台执行

再说说重定向,操作系统中有三个常用的流:   0:标准输入流 stdin   1:标准输出流 stdout   2:标准错误流 stderr

一般当我们用 > console.txt,实际是 1>console.txt的省略用法,这条命令可以把命令的输出定向到console.txt的文件中;而 < console.txt ,实际是 0 < console.txt的省略用法。

示例用法

nohup ./start-dishi.sh >output 2>&1 &

解释: 1. 带&的命令行,即使terminal(终端)关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上);

2. 2>&1的意思

这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件output里面,所以结果是标准错误和标准输出都导入文件output里面了。 至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。这就会导致 >output 2>output 文件output被两次打开,而stdout和stderr将会竞争覆盖,这肯定不是我门想要的. 这就是为什么

nohup ./command.sh >output 2>output出错的原因了 。

0,1,2可以用来指定需要重定向的标准输入或输出。在一般使用时,默认的是标准输出,既1。当我们需要特殊用途时,可以使用其他标号。例如,将某个程序的错误信息输出到log文件中:./program 2>log,这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。另外,也可以实现0,1,2之间的重定向。2>&1:将错误信息重定向到标准输出。

Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪,任何东西都可以定向到这里,但是却无法打开。这一点非常有用,一般很大的stdou和stderr当你不关心的时候或者当我们由于其他原因不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。

例如:

# ls 1>/dev/null 2>/dev/null

还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:

# ls >/dev/null 2>&1

注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null。

nohup执行后,会产生日子文件nohup.out,把命令的执行中的消息保存到这个文件中,一般在当前目录下,如果当前目录不可写,那么自动保存到执行这个命令的用户的home目录下,例如root的话就保存在/root/下,如果文件很大的话,nohup.out就会不停的增大,这是我们不希望看到的,因此,可以利用/dev/null来解决这个问题。

# nohup ./program >/dev/null 2>log &

如果错误信息也不想要的话:

# nohup ./program >/dev/null 2>&1 &

本文分享自微信公众号 - DBA随笔(gh_acc2bbc0d447)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 程序员需要了解的硬核知识之CPU

    大家都是程序员,大家都是和计算机打交道的程序员,大家都是和计算机中软件硬件打交道的程序员,大家都是和CPU打交道的程序员,所以,不管你是玩儿硬件的还是做软件的,...

    cxuan
  • 【收藏】机器学习与深度学习核心知识点总结

    梯度下降法沿着梯度的反方向进行搜索,利用了函数的一阶导数信息。梯度下降法的迭代公式为:

    zenRRan
  • Python遇见C++碰出的编译火花

    Python运行速度太慢,因为做了太多的底层封装。提高速度可以使用多进程,但是多进程占用系统资源太多,为了减少占用的资源并提高性能,就该拿起低级工具,将“前盖”...

    double
  • 万字长文!机器学习与深度学习核心知识点总结

    梯度下降法沿着梯度的反方向进行搜索,利用了函数的一阶导数信息。梯度下降法的迭代公式为:

    统计学家
  • 深度学习在推荐系统中的应用

    2016年DeepMind开发的AlphaGo在围棋对决中战胜了韩国九段选手李世石,一时成为轰动全球的重大新闻,被全球多家媒体大肆报道。AlphaGo之所以取得...

    材ccc
  • C和C++混合编译,extern和extern "C"

    extern的问题在于你不知道这个关键字出现的时候到底是声明还是定义。  谨记:声明可以多次,但是定义只能有一次。

    朵朵花儿
  • Python 的 .py 与 Cython 的 .pxd .pyx .pyd 文件格式之间的主要区别

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    于小勇
  • 面试遇到Java 里的 for (;;) 与 while (true),哪个更快?

    原文链接:http://www.zhihu.com/question/52311366/answer/13009034...

    业余草
  • 栈指针&& 帧指针详解

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    于小勇
  • 机器学习与深度学习核心知识点总结

    梯度下降法沿着梯度的反方向进行搜索,利用了函数的一阶导数信息。梯度下降法的迭代公式为:

    Datawhale

扫码关注云+社区

领取腾讯云代金券