ورد في تعليقات العدد رقم 120:
لا أعرف ما إذا كان هذا قد تم حله بطريقة ما في الفرع الرئيسي ، ولكن في الإصدار 3.1.1 ، قام شخص ما بطريق الخطأ بإزالة دليل السجل في الخادم الخاص بنا ، وتوقف المشرف ببساطة عن العمل ، وأخذ معه جميع البرامج الأخرى ، وليس فقط البرنامج الذي يحتوي على دليل السجل مفقود.
لقد رأيت هذا السلوك وأزعجته أيضًا. أعتقد أن السلوك الصحيح هو إنشاء logdir إذا كان ذلك ممكنًا ، وعلى الأقل لا ينبغي السماح له بتعطيل المهام الأخرى
لقد رأيت هذا السلوك وأزعجته أيضًا.
متى تحدث؟ التعليق الأصلي ليس محددًا. هل يحدث عطل عندما يحدد stdout_logfile
في قسم [program:x]
دليل سجل غير موجود؟ ما إصدار المشرف الذي تستخدمه؟
أعتقد أن السلوك الصحيح هو إنشاء logdir إن أمكن
لا أستخدم أي برنامج آخر له سلوك كهذا. supervisord
على معلومات كافية لإنشاء دليل سجل تلقائيًا ، لأنه لا يعرف أي مستخدم يجب أن يمتلك الدليل أو ما يجب أن تكون الأذونات. أعتقد أن الشيء الوحيد الذي يمكن أن يفعله دون زيادة مجموعة من الخيارات لكل هذا هو إظهار رسالة خطأ واضحة عند عدم وجود دليل سجل.
على الأقل لا ينبغي السماح لها بتعطيل المهام الأخرى
أوافق على أن إضافة قسم [program:x]
حيث يحدد stdout_logfile
أو stderr_logfile
دليلاً غير موجود يجب ألا يؤدي إلى تعطل supervisord
.
هل يحدث الانهيار عندما يحدد stdout_logfile في قسم [program: x] دليل سجل غير موجود>؟ ما إصدار المشرف الذي تستخدمه؟
نعم فعلا. بعض المشاكل بالنسبة لي 3.1.3.
ثابت في fd22ca89ff353fbe92845e9d2517645e6cf149ac. سيتم تضمين هذا الإصلاح في المشرف 3.2.
إليك كيفية تكراره والتحقق من أنه تم إصلاحه. الحد الأدنى supervisord.conf
:
[supervisord]
logfile = /tmp/supervisord.log
[inet_http_server]
port = 127.0.0.1:9001
[supervisorctl]
serverurl = http://127.0.0.1:9001
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[program:cat]
command = /bin/cat
stdout_logfile = /thelogdir/foo.txt
autostart = false
يجب أن يكون دليل السجل موجودًا وإلا فإن supervisord
سيرفض البدء. أنشئ دليل السجل وابدأ supervisord
في المقدمة بهذا التكوين:
$ mkdir /thelogdir
$ supervisord --version
3.2.0.dev0
$ supervisord -n -c /path/to/supervisord.conf
2015-08-18 14:38:52,503 INFO Increased RLIMIT_NOFILE limit to 1024
2015-08-18 14:38:52,516 INFO RPC interface 'supervisor' initialized
2015-08-18 14:38:52,516 CRIT Server 'inet_http_server' running without any HTTP authentication checking
2015-08-18 14:38:52,516 INFO supervisord started with pid 49508
قم بإزالة دليل السجل أثناء تشغيل supervisord
:
$ rmdir /thelogdir
حاول أن تبدأ العملية:
$ supervisorctl -c /path/to/supervisord.conf
cat STOPPED Not started
supervisor> start cat
cat: ERROR (spawn error)
supervisor> status
cat FATAL unknown error making dispatchers for 'cat': ENOENT
التعليق الأكثر فائدة
ثابت في fd22ca89ff353fbe92845e9d2517645e6cf149ac. سيتم تضمين هذا الإصلاح في المشرف 3.2.
إليك كيفية تكراره والتحقق من أنه تم إصلاحه. الحد الأدنى
supervisord.conf
:يجب أن يكون دليل السجل موجودًا وإلا فإن
supervisord
سيرفض البدء. أنشئ دليل السجل وابدأsupervisord
في المقدمة بهذا التكوين:قم بإزالة دليل السجل أثناء تشغيل
supervisord
:حاول أن تبدأ العملية: