python为变量添加了额外的值

python为变量添加了额外的值,python,linux,debian,Python,Linux,Debian,我正在两台服务器上运行python zabbix trapper脚本,它在其中一台服务器上运行良好。它每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 st

我正在两台服务器上运行python zabbix trapper脚本,它在其中一台服务器上运行良好。它每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()
服务器1的输出:正常

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
服务器2的输出:问题

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值,然后立即读取正确的值


知道为什么会发生这种情况吗?

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

您可能希望签出以使用文件-它更具可读性,并为您处理关闭文件-即使在异常情况下。感谢Lattyware的建议,但我认为问题在于子进程命令,因为我只是打印到文件中进行诊断……我并不是说这是问题的原因,只是一个让代码更Pythonic的建议。我不确定是子进程命令造成了麻烦。事实上,两个单独的行正在被写入,这让我怀疑它实际上被运行了两次。注意,每两次运行只调用两次。有可以共享的crontab吗?在这个例子中,以file=开头的行是多余的,不是吗?真的很抱歉,伙计们…有一个cronjob正在运行。。。。。