【问题标题】:python extra value added to the variablepython额外的值添加到变量
【发布时间】:2012-05-01 17:50:52
【问题描述】:

我正在运行一个在两台服务器上运行的 python zabbix 陷阱脚本,它在其中一台服务器上运行良好。它每 30 秒运行一次。这是从“ss”读取time_wait状态的代码部分

file_log = "/tmp/tcpstate.log"
proc = open(file_log,"a")

file = "/var/log/safesquid/safesquid/performance/performance.log"
time_wait_cmd = subprocess.Popen("ss -o state time-wait | grep webcache | wc -l",shell=True,stdout=subprocess.PIPE)
ssquid_time = time_wait_cmd.communicate()[0]
proc_string = datetime.datetime.now().strftime("%d-%m-%y %H:%M:%S") + " " + "Time_WAIT: " + ssquid_time  + "\n"
proc.write(proc_string)
proc.close()

server1 的输出:(正常)

01-05-12 17:40:50 Time_WAIT: 286
01-05-12 17:41:20 Time_WAIT: 251
01-05-12 17:41:50 Time_WAIT: 366
01-05-12 17:42:20 Time_WAIT: 335
01-05-12 17:42:50 Time_WAIT: 287
01-05-12 17:43:20 Time_WAIT: 375
01-05-12 17:43:51 Time_WAIT: 386
01-05-12 17:44:21 Time_WAIT: 383

Server2 的输出:(问题)

01-05-12 17:44:03 Time_WAIT: 368
01-05-12 17:44:32 Time_WAIT: 388
01-05-12 17:45:01 Time_WAIT: 0
01-05-12 17:45:01 Time_WAIT: 339
01-05-12 17:45:31 Time_WAIT: 311
01-05-12 17:46:00 Time_WAIT: 400
01-05-12 17:46:01 Time_WAIT: 0
01-05-12 17:46:29 Time_WAIT: 411
01-05-12 17:46:58 Time_WAIT: 448

由于它每 30 秒被调用一次,我不确定为什么在 Server2 上它会得到“0”值,然后立即读取正确的值。

任何想法为什么会发生这种情况?

【问题讨论】:

  • 您可能需要查看 the with statement 来处理文件 - 它更具可读性并且可以为您处理关闭文件 - 即使在异常情况下也是如此。
  • 感谢 Lattyware 的建议,但我认为问题在于子进程命令,因为我只是打印到文件进行诊断...
  • 我并不是说这是问题的原因,只是一般性的建议,让您的代码更加 Pythonic。
  • 我不太确定是不是子进程命令引起了麻烦。正在编写两行单独的行的事实使我怀疑它实际上正在运行两次。请注意,它每两次运行仅被调用两次。有没有可以分享的 crontab?在这个例子中,以file = 开头的行是多余的,不是吗?
  • 真的很抱歉,伙计们......有一个 cronjob 正在运行......

标签: python linux debian


【解决方案1】:

任何一个进程都在接收信号吗?这可能会导致系统调用提前终止。

【讨论】:

    猜你喜欢
    • 2021-07-18
    • 2018-07-20
    • 2012-02-15
    • 1970-01-01
    • 2019-12-20
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多