【问题标题】:redirection of a wlst command to a file in python script将 wlst 命令重定向到 python 脚本中的文件
【发布时间】:2013-04-16 17:27:12
【问题描述】:

在 python 脚本中有一个带有类似参数的命令

ThreadDump('true', 'location', servername)

上述命令是一个 wlst 命令,它为该服务器获取线程转储,并将转储文件重定向到该位置以及该位置中的该文件。

但是 ThreadDump() 是在一个从 1 到 6 的 for 循环中,所以线程转储必须发生 5 次,并且每次转储信息都必须附加到文件中。

使用 >& 选项将 python 文件的整个输出尝试到另一个文件,但问题是有一个 CRON 作业正在运行,并且原始转储信息正在被新信息重写。

所以,只需要重定向并附加上面的命令

ThreadDump('true', 'location', 'servername') 到一个文件 >> /dir/newdir/file

或 ThreadDump('true', 'location', 'servername') 到文件 >& /dir/newdir/file

【问题讨论】:

    标签: python redirect directory append wlst


    【解决方案1】:

    如果您可以在文件中使用 threaddump 重定向脚本的输出,并且唯一的问题是运行此脚本的 cron 作业,请尝试编辑 crontab 以在其中添加 >>(2>&1 用于将 stderr 重定向到 stdout):

    */15 * * * * /path/to/shell/script.sh >> /www/logs/script.log 2>&1
    

    【讨论】:

      【解决方案2】:

      使用原始代码示例会更容易理解,但我认为也许您可以执行类似的操作

      import os
      import fileinput
      
      for i, whatever in enumerate(list_of_threads_or_something):
           ThreadDump('true', 'location' + str(i), servername)
           # do whatever else you need to do
      
      locations = ['location'+str(i) for i in range(6)]
      with fileinput.input(locations) as f, open('location', 'w') as fout:
          for line in f:
              fout.write(line)
      
      for loc in locations:
          os.remove(loc)
      

      根据需要更改'location'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-31
        • 2015-06-26
        • 2011-07-16
        • 2012-12-25
        • 2023-03-30
        • 2012-07-05
        相关资源
        最近更新 更多