При запуске скрипта на python стандартный ввод равен None. sys.stdin = None
Есть простой скрипт на питоне, который запускается через zabbix типом External check. Операционная система Oracle linux
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import daemon
import sys
from traceback import format_exc
def run_main_function():
print("Hello")
try:
with daemon.DaemonContext():
run_main_function()
except:
print(sys.stdin)
print(format_exc())
None
Traceback (most recent call last):
File "/usr/lib/zabbix/externalscripts/logstash_stats.py", line 18, in <module>
with daemon.DaemonContext():
File "/usr/local/lib/python3.9/site-packages/daemon/daemon.py", line 249, in __init__
detach_process = is_detach_process_context_required()
File "/usr/local/lib/python3.9/site-packages/daemon/daemon.py", line 817, in is_detach_process_context_required
if is_process_started_by_init() or is_process_started_by_superserver():
File "/usr/local/lib/python3.9/site-packages/daemon/daemon.py", line 795, in is_process_started_by_superserver
if is_socket_file(sys.__stdin__):
File "/usr/local/lib/python3.9/site-packages/daemon/daemon.py", line 759, in is_socket_file
file_fd = file.fileno()
AttributeError: 'NoneType' object has no attribute 'fileno'
Сначало я грешил на библиотеку daemon. Но, если запустить скрипт ниже, то увидим, что sys.stdin = None. А библиотеке daemon нужен корректный stdin, который создаётся при запуске скрипта.
import sys
print(sys.stdin)
return:
None
Права скрипту выданы, но не понятно почему с вероятностью 20% скрипт выдаёт ошибку, а остальные 80% отрабатывает успешно.
chown zabbix:zabbix /path/script
chmod 0777 /path/scrypt
Подскажите, в чем может быть проблема и как её побороть?