كيفية التقاط أفضل وسجل الناتج اللجنة الدائمة؟
سؤال
واني اسعى الى التقاط الإخراج من برنامج نصي تثبيت (التي تستخدم اللجنة الدائمة) وتسجيل ذلك. ومع ذلك، أنا لا تحصل على كل ما الدائمة وطبع، وهي شريط التقدم.
والإخراج الشاشة:
<اقتباس فقرة>ونسخ / USER2 / CBD / يبني / تمة / ضد التعذيب / myfiles / * ل الخادم / المستخدمين / myfiles كما CDB
وكلمة المرور المصرف @ الخادم: MYFILE 100٪ | ***************************** | 2503 00:00
اقتباس فقرة>وإخراج سجل:
<اقتباس فقرة>ونسخ / USER2 / CBD / يبني / تمة / ضد التعذيب / myfiles / * ل الخادم / المستخدمين / myfiles كما CDB
اقتباس فقرة>وأود حقا أن نعرف أن ملفي حصلت هناك. وهنا ما أحاول الآن من دون جدوى:
<اقتباس فقرة>وmyscript.sh 2> & 1 | كوم mylogfile.log
اقتباس فقرة>هل لديها وسيلة جيدة لالتقاط إخراج اللجنة الدائمة وتسجيل ذلك؟
وشكرا.
المحلول
ويبدو الخاص بك فقط في عداد المفقودين سواء كان اللجنة الدائمة ناجحة أم لا من السجل.
وانا التخمين شريط التمرير لا الطباعة إلى المعياري ويستخدم سأركع او اي نوع آخر من TUI؟
هل يمكن أن مجرد إلقاء نظرة على قيمة العائد من اللجنة الدائمة لمعرفة ما إذا كان ناجحا. مثل
scp myfile user@host.com:. && echo success!
ويقول man scp
scp exits with 0 on success or >0 if an error occurred.
نصائح أخرى
واللجنة الدائمة طباعة شريط التقدم لمحطة باستخدام رموز التحكم. وسوف تكتشف إذا كنت إعادة توجيه الإخراج، وبالتالي حذف شريط التقدم.
ويمكنك الحصول على حول ذلك عن طريق خداع اللجنة الدائمة في التفكير تشغيله في محطة باستخدام "سيناريو" القيادة التي يتم تثبيتها على معظم توزيعات بشكل افتراضي:
script -q -c "scp server:/file /tmp/" > /tmp/test.txt
ومحتوى TEST.TXT سيكون:
file 0% 0 0.0KB/s --:-- ETA
file 18% 11MB 11.2MB/s 00:04 ETA
file 36% 22MB 11.2MB/s 00:03 ETA
file 54% 34MB 11.2MB/s 00:02 ETA
file 73% 45MB 11.2MB/s 00:01 ETA
file 91% 56MB 11.2MB/s 00:00 ETA
file 100% 61MB 10.2MB/s 00:06
... الذي هو على الارجح ما تريد.
وأنا تعثرت على هذه المشكلة في حين أن إعادة توجيه إخراج برنامج نصي تفاعلية في ملف السجل. عدم وجود نتائج في سجل ليست مشكلة كما يمكنك تقييم دائما رموز الإنهاء. ولكن أردت حقا المستخدم التفاعلي لرؤية شريط التقدم. هذا الجواب يحل المشاكل على حد سواء.
وربما يمكنك استخدام " النصي "لتسجيل جلسة عمل المحطة الطرفية.
scp myfile user@host.com:. && echo success!
وأمر مفيد للغاية ولكن لكتابة رسالة إلى ملف سجل I تغييره مثل هذا
scp myfile user@host.com:. && echo myfile successfully copied! >> logfile 2>&1
وهذا سوف نكتب "MYFILE نسخ بنجاح!" رسالة إلى ملف السجل.
وجرب:
scp server:/file /tmp/ > /dev/tty
لا أستطيع التعليق بعد :( لذلك سأضيف تحديثا هنا ...
كانوMartin الحل الأفضل بالنسبة لي ولكن إذا قيادة اللجنة الدائمة الخاص بك هو في منتصف الطريق من خلال البرنامج النصي الخاص بك، ثم انها الانتاج <م> قد م> تظهر بعد الأوامر التي شغلت في الواقع بعد ذلك.
وأعتقد أن هذا هو لأن النصي يجب تشغيل الأمر في المستوى الفرعي لكنني لم الاختبار.
وتحرير: فإنه في الواقع تفرخ قذيفة حتى إذا كنت تحتاج الأمور إلى تشغيل (والواقع تفشل) بطريقة متسلسلة (كما هو الحال في السيناريو بناء) ثم عملتم لإضافة بعض المنطق حول استخدام الأمر النصي.
وأي بمعنى.
والنصي -q -C "القيادة الخاصة بك" && النوم 1
وأو شيئا من هذا القبيل بحيث الدك ينتظر قذيفة قذيفة الطفل لإنهاء قبل الانتقال.
نعم أنا مؤخرا كان يحاول الحصول على إخراج ضمن برنامج نصي بى من proc_open () لقد فقدت وقت هادئ تحاول الحصول على إخراج :-) ولكن في وقت متأخر قليلا هنا وأنا ثم قراءة هذا المنصب هنا جعلني أدرك أنني لا تحتاج هذا الإخراج المدمن على مخطوطتي حقا
وفقط سوف رمز إنهاء قيام بهذه المهمة: -)
و$ exit_code = proc_close (عملية $)؛
$ grep -r "Error" xyz.out > abc.txt
وهنا في الأمر أعلاه أنا تخزين الانتاج في abc.txt الملف.
وهذا الأمر grep
هو للبحث containg النص <م> خطأ في ملف <م> xyz.out م> وتخزين الناتج في abc.txt م> دون عرض على وحدة التحكم .