美文网首页
[Linux-CMD] nohup &

[Linux-CMD] nohup &

作者: 帅可儿妞 | 来源:发表于2019-08-24 16:34 被阅读0次

最近搞 Flume,程序需要后台不间断运行,于是就搞了命令写成脚本,所有的日志也一并输出到同一个文件中,但是问题来了,这个日志越来越大,造成磁盘报警,就想着把日志管理起来,起初使用的 logrotate,但是后来发现这鬼有个缺陷(使用 copytruncate),就是大量的日志写入日志文件的时候突然间,需要把这个文件的所有内容拷贝到另外一个文件中,然后清空当前日志文件,因为日志量是在是太大,所以就在 copy 和 truncate 之间,就有部分日志丢失,为了解决这个问题,还是回归到 Flume 自带的 log4j 上,然而新的问题来了如果我使用 nohup 命令中没有日志的重定向,就需要敲回车。。。今天具体查了一下,也测试了一下记录下来

  1. 之前使用的Flume 启动脚本

    #!/bin/sh
    nohup /usr/libra/flume/bin/flume-ng agent -n agent-wechat -c /usr/libra/flume/conf -f /usr/libra/flume/conf/flume-kafka-hdfs-wechat.properties -Dflume.root.logger=INFO,console >>/usr/libra/flume/logs/flume-wechat.log 2>&1 &
    
    • 这个启动脚本就是把包括 flume 和 nohup 在内的所有日志输出重定向到 flume-wechat.log 中,2>&1的意思就是错误信息也重定向到标准输出中,需要注意的是这几个字符间不要有空格,否则会出现意想不到的情况(我也没有仔细去研究什么原因)
    • nohup:Run COMMAND, ignoring hangup signals.即:运行命令,忽略挂起信号,其意思就是:用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思,忽略所有发给这个程序的挂起信息(我们可以使用很多手段向程序发出挂起操作)
    • &:后台运行,但当用户退出终端(挂起)的时候,命令自动也跟着退出
    • 网上找到一个很好的解释(自己粘贴一段搜索一下,简书会屏蔽贴其他博客的帖子):
      • nohup 应对的就是突然断网或者关闭终端时屏蔽发送给后台任务的 SIGHUP 信号进而使任务不中断继续运行。
      • exit 或者 logout 命令正常退出的话根本用不着 nohup,你的 & 运行的命令都不会被中断。不信你可以 command & 后 exit,再次登录,ps 查看一下命令肯定还在后台跑。
      • 简单来说,如果你使用的是 exit 或者 logout 命令正常登出,系统只会向前台任务发送 SIGHUP 信号,& 到后台的任务时不会收到 SIGHUP 信号的。如果你强行关闭的窗口或者断网了,系统会向你的前后台任务都发送 SIGHUP 信号,此时如果使用了 nohup 去运行任务,nohup 会屏蔽 SIGHUP 信号,任务也就不会被中断了。
  2. 经过摸索的启动脚本:

    #!/bin/sh
    nohup /usr/libra/flume/bin/flume-ng agent -n agent-wechat -c /usr/libra/flume/conf-wechat -f /usr/libra/flume/conf-wechat/flume-kafka-hdfs-wechat.properties > /dev/null 2>&1 &
    
    • 这个脚本中去掉了通过 jvm 传递的一些参数,并且把 nohup 的日志数据重定向到 null 设备中

相关文章

  • [Linux-CMD] nohup &

    最近搞 Flume,程序需要后台不间断运行,于是就搞了命令写成脚本,所有的日志也一并输出到同一个文件中,但是问题来...

  • linux-cmd

    如何查看Linux 硬件配置信息 linux传输文件命令: rz 和 sz linux free命令详解(一) L...

  • [Linux-CMD] kill

    经常都会用到这个kill,但是当遇到一些不是很常用的参数的时候,我还是蒙了,赶紧查一下记在这里(不是脑子里) ki...

  • [Linux-CMD]-ls

    CMDEXPLAINls -lS按大小降序排列ls -l | sort -n -k5按大小升序ls -lrt按时间...

  • [Linux-CMD]-ssh

    今天在生成RSA密钥对的时候发现了一个新特性,记录一下防止忘记 一、ssh-keygen 非交互式创建密钥对ssh...

  • [Linux-CMD]-expect

    转发文章来自:这里和这里 一、简述 Expect是一个用来处理交互的命令。借助Expect,我们可以将交互过程写在...

  • [Linux-CMD]-free

    本篇文章转发自这里 free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。 如...

  • [Linux-CMD]grep

  • Linux命令后台运行

    Linux后台运行命令有两种方式: cmd & : 后台运行,关掉终端会停止运行 nohup cmd & : 后台...

  • 2018-06-03

    nohup > out.log 2>&1 & golang 类似pm2:goreman

网友评论

      本文标题:[Linux-CMD] nohup &

      本文链接:https://www.haomeiwen.com/subject/jbdqectx.html