zoukankan      html  css  js  c++  java
  • nohup命令

        经常会运行类似这样的命令nohup python main-script.py arg1 arg2 > log2.txt 2>&1 &

    nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。

    也就是说当你按下Ctrl+D从Linux注销用户以后,你的程序还是可以运行而不是随着你的离开而结束。

    如果不指定输出文件的位置,类似这样:nohup python main-script.py arg1 arg2 & 那么会在当前

    目录下有一个nohup.out文件记录log, 那么> log2.txt 2>&1 & 是什么意思呢。 > log2.txt是将输出重定向到 log2.txt文件

    2>&1 则是将标准错误(2)也定向到标准输入(1)[标准输入(0)就是从命令行输入了]。

      不过经常会看到,一个程序运行了很久,却没有多少log出来,而是等到一定数量的内容生产后,log文件中才有内容。这是因为

    I/O缓冲区的问题。如果程序重定向到文件会在缓冲区满了以后才写入磁盘文件,比如以下的代码not_flush.py:

    from time import sleep
    # import sys
    for i in range(100000):
      print i
      # sys.stdout.flush()
      sleep(1)

    使用命令 python not_flush.py > log & 很久log里也没有内容,但是加上注释以后 每一次循环都会写入文件.

    另外,对于Python2.X的print 和sys.stdout.write()好像还不一样,如果希望尽快看到log,还是使用sys.stdout.write()+sys.stdout.flush()比较好.

    比如:

    from time import sleep
    import sys
    for i in range(100000):
      sys.stdout.write(str(i) + "
    ")
      sys.stdout.flush()
      sleep(2)

    这样每次循环log就有内容了,不用担心程序出错以后 继续运行了很久才会发现了,因为Python这种动态语言一个变量名字写错了,到最后一个步骤你的程序还是挂了。

  • 相关阅读:
    Matplotlib
    Numpy&Pandas
    莫凡《机器学习》笔记
    李宏毅《1天搞懂深度学习》笔记
    Git客户端使用教程
    像素级压缩感知图像融合的论文
    二分图【洛谷P2175】 小Z的游戏分队
    模板【洛谷P3390】 【模板】矩阵快速幂
    模板 可并堆【洛谷P3377】 【模板】左偏树(可并堆)
    LCA SP913 QTREE2
  • 原文地址:https://www.cnblogs.com/jaw-crusher/p/4154088.html
Copyright © 2011-2022 走看看