linux - ردتول، كيفية الحصول على ينغ الملفات عن طريق نظام التشغيل-تنفيذ-نداء من لوا-سكريبت؟



bash shell (0)

نص طويل، ولكن من دون مقتطفات النصي الخ ربما من الصعب شرح وفهم خلفية الأسئلة.

المقدمة:

باستخدام ردتول على التوت و دوموتيتز، وأنا قادرة على جعل رد-الملفات وتحديثها على النحو المطلوب عن طريق لوا النصي وملف ش ذات الصلة، ولكن جعل الرسوم البيانية مع نفس البناء لديها بعض المشاكل.

يجعل الفرق ما إذا وكيف يتم إجراء المكالمات مع ش-توليد ملفات الرسم البياني، إما من سطر الأوامر، أو من داخل لوا النصي عن طريق os.execute

حاولت أيضا تشغيل هذه الملفات ش من كرونات، ولكن بعد ذلك أحيانا سلوك غير منتظم، أقل وضوحا. بسبب التصحيح-مرافق تفضل لوا-سكريبت أو حل مماثل لتشغيل الاختبار مع ش الملفات.

يشتبه في أن "المشاكل" ترتبط بفروق في تعريف المسارات في الملفات ش للكتب النصية 2 على التوالي 3، ولكن لا يمكن وضع إصبعي على "الجناة". وقد وجدت تجريبيا بعض طريقة عملية للخروج، ولكن يلاحظ ترحيب شرح "لماذا؟" في 4 أسئلة.

السؤال رقم 1:

ما هو السبب في الاستجابات المختلفة (كما هو موضح أدناه) للمكالمات الأربعة، التي تعمل من سطر الأوامر مقابل تشغيل من os.execute؟

وصف الاختبار والنتائج

دليل العمل هو / هوم / بي

مجلد مع ملفات ردتول هو أسر / بن /

جميع الملفات ش والملفات رد تقع في المجلد / المنزل / بي مع خصائص تعيين إلى 755

سكريبت create_ pitemp1 _graph.sh لإنشاء pitemp1.png من pitemp1.rrd

لديه خط نصي الثاني نشط لاستدعاء الرسم البياني ردتول ووضع ينغ ملف في المجلد [أي؟]. إذا تم تغيير الخط الثاني إلى / أسر / بن / ردتول الرسم البياني /home/pi/pitemp1.png \ والنتيجة هي رسالة خطأ 'رفض الإذن'.

#!/bin/bash
/usr/bin/rrdtool graph pitemp1.png \
#rrdtool graph pitemp1.png \
  DEF:temp_1h=/home/pi/pitemp1.rrd:temp1H:AVERAGE \
  DEF:temp_2l=/home/pi/pitemp1.rrd:temp2L:AVERAGE \
  DEF:temp_3s=/home/pi/pitemp1.rrd:temp3S:AVERAGE \
  LINE1:temp_1h#5fd00b:Temp_tuin_hoog \
  LINE1:temp_2l#0000ff:Temp_tuin_laag \
  LINE1:temp_3s#ff0000:Temp_tuin_bodem \
  COMMENT:"\t\t\t\t\t\t\l" \
  COMMENT:"\t\t\t\t\t\t\l" \
  GPRINT:temp_1h:LAST:"Temp_tuin_hoog    Laatste\: %2.1lf" \
  GPRINT:temp_1h:MAX:"  Max.\: %2.1lf" \
  GPRINT:temp_1h:MIN:"  Min.\: %2.1lf" \
  COMMENT:"\t\t\t\t\t\t\l" \
  GPRINT:temp_2l:LAST:"Temp_tuin_laag    Laatste\: %2.1lf" \
  GPRINT:temp_2l:MAX:"  Max.\: %2.1lf" \
  GPRINT:temp_2l:MIN:"  Min.\: %2.1lf" \
  COMMENT:"\t\t\t\t\t\t\l" \
  GPRINT:temp_3s:LAST:"Temp_tuin_bodem   Laatste\: %2.1lf" \
  GPRINT:temp_3s:MAX:"  Max.\: %2.1lf" \
  GPRINT:temp_3s:MIN:"  Min.\: %2.1lf" \
  COMMENT:"\t\t\t\t\t\t\l" \
  --width 700 --height 400 \
  --title="Temperatuur van laatste 24 uur" \
  --vertical-label="Temp.(C)"
# Copy picture to directory of local website
# cp /home/pi/pitemp1.png /var/www/html

سكريبت create_ pitemp1A _graph.sh لإنشاء pitemp1.png من pitemp1.rrd

متطابقة مع أعلاه ش-ملف، ولكن الآن لديه خط ثالث النصي نشط لاستدعاء الرسم البياني ردتول ووضع ملف بابوا نيو غينيا في المجلد / المنزل / بي عندما يتم تشغيل هذا الملف ش من سطر الأوامر، يتم تنفيذه دون أي رسالة خطأ و ينغ ملف وصوله في / الوطن / بي كما هو متوقع

#!/bin/bash
#/usr/bin/rrdtool graph pitemp1.png \
rrdtool graph /home/pi/pitemp1.png \
  DEF:temp_1h=/home/pi/pitemp1.rrd:temp1H:AVERAGE \
  DEF:temp_2l=/home/pi/pitemp1.rrd:temp2L:AVERAGE \
  DEF:temp_3s=/home/pi/pitemp1.rrd:temp3S:AVERAGE \
  LINE1:temp_1h#5fd00b:Temp_tuin_hoog \
  LINE1:temp_2l#0000ff:Temp_tuin_laag \
  LINE1:temp_3s#ff0000:Temp_tuin_bodem \
  COMMENT:"\t\t\t\t\t\t\l" \
  COMMENT:"\t\t\t\t\t\t\l" \
  GPRINT:temp_1h:LAST:"Temp_tuin_hoog    Laatste\: %2.1lf" \
  GPRINT:temp_1h:MAX:"  Max.\: %2.1lf" \
  GPRINT:temp_1h:MIN:"  Min.\: %2.1lf" \
  COMMENT:"\t\t\t\t\t\t\l" \
  GPRINT:temp_2l:LAST:"Temp_tuin_laag    Laatste\: %2.1lf" \
  GPRINT:temp_2l:MAX:"  Max.\: %2.1lf" \
  GPRINT:temp_2l:MIN:"  Min.\: %2.1lf" \
  COMMENT:"\t\t\t\t\t\t\l" \
  GPRINT:temp_3s:LAST:"Temp_tuin_bodem   Laatste\: %2.1lf" \
  GPRINT:temp_3s:MAX:"  Max.\: %2.1lf" \
  GPRINT:temp_3s:MIN:"  Min.\: %2.1lf" \
  COMMENT:"\t\t\t\t\t\t\l" \
  --width 700 --height 400 \
  --title="Temperatuur van laatste 24 uur" \
  --vertical-label="Temp.(C)"
# Copy picture to directory of local website
# cp /home/pi/pitemp1.png /var/www/html

الردود على 4 مكالمات من سطر الأوامر

استدعاء الملفات ش من كوماندلين من خلال بوتيس، المكالمات 2 مع pcriptemp1 إصدار النصي وضع ينغ ملف ذات الصلة في / الوطن / بي / دون أي خطأ في الإبلاغ، ولكن المكالمات 2 مع أخطاء البرنامج النصي الإصدار pitemp1 رمي، في اشارة الى ملف /home/pi/pitemp1.rrd الذي كان موجودا [؟] كما ثبت من خلال المكالمات 2 الأولى ناجحة.

[email protected]:~$ sudo /home/pi/create_pitemp1A_graph.sh                        
797x529
[email protected]:~$ ./create_pitemp1A_graph.sh
797x529
[email protected]:~$ sudo /home/pi/create_pitemp1_graph.sh
/home/pi/create_pitemp1_graph.sh: line 5: DEF:temp_1h=/home/pi/pitemp1.rrd:temp1H:AVERAGE: No such file or directory
[email protected]:~$ ./create_pitemp1_graph.sh
./create_pitemp1_graph.sh: line 5: DEF:temp_1h=/home/pi/pitemp1.rrd:temp1H:AVERAGE: No such file or directory

الرد عندما يكون في 1A-سكريبت الخط السفلي هو "نشط" أثناء المكالمة من كوماندلين

[email protected]:~$ ./create_pitemp1A_graph.sh
797x529
cp: cannot create regular file ‘/var/www/html/pitemp1.png’: Permission denied

سؤال ذو صلة 2: يتم إنشاء الرسم البياني، ولكن لماذا رفض إذن للنسخ؟

وفيما يلي الإعداد الناجح لاستدعاء ش الملفات في لوا-سكريبت، في المقطع النصي بين كومانداراي {} و ريتورن كوماندراي، كما هو موضح أدناه

-- Line 259, Export of data = update of rrd database(s) and generation of graph
-- Line 260, Extract current date as date.year, date.month, date.day, date.hour, date.min, date.sec
date = os.date("*t")
-- Line 262, Update RRDs
-- The RRDs have internal setting for update within 5 minutes
   os.execute ('rrdtool update /home/pi/pitemp1.rrd N:'..temp1H..':'..temp1D..':'..temp2L..':'..temp2D..':'..temp3S)
   print ('Script temp_hum_fill_rrd 1st database updated!')

-- Line 273, Graph info from the RRDs
if (date.min % Interval1 == Offset1) then
   os.execute ('sudo /home/pi/create_pitemp1A_graph.sh')
   print ('Script create_pitemp1A_graph completed!')
end

وفقا ل دوموتيتز-لوغ والنتائج، والنصوص أعلاه هي من دون أخطاء، والنص الكامل هو خالية من الأخطاء: ذات الصلة ملفات رد وملفات ينغ ذات الصلة وجدت في / الوطن / بي مع الطابع الزمني وفقا ل update- فاصل والإزاحة.

2017-11-11 12:30:00.539 LUA: Script temp_hum_fill_rrd 1st database updated!
2017-11-11 12:30:00.582 LUA: Script create_pitemp1A_graph completed!
2017-11-11 12:30:00.583 LUA: End of temp_hum rrd-script 

ومع ذلك، السؤال 3: لماذا هو مطلوب لاستخدام 'سودو /home/pi/create_pitemp1A_graph.sh'؟ لأنه إذا / هوم / بي / هو دليل العمل المستخدم، يبدو كافيا لاستخدام './create_pitemp1A_graph.sh'

يتم تنفيذ التحميل اللاحق للملفات بواسطة ملف بيثون الذي يقوم بنسخ الملفات من دليل العمل / الصفحة الرئيسية / بي نحو الخادم الخاص بي. وهناك طريقة بديلة للتحميل هي "استيعاب عن بعد" الملفات عن طريق برنامج المزامنة مثل ألواي سينك.

كما جاء في المقدمة: يعمل، ولكن ؛-) لماذا؟





lua