คำถามติดแท็ก stderr

7
cURL: จะระงับเอาต์พุตที่แปลกเมื่อเปลี่ยนเส้นทางได้อย่างไร
ฉันพยายามพิมพ์เฉพาะส่วน verbose ของคำร้องขอ cURL (ซึ่งถูกส่งไปstderr) จาก bash shell แต่เมื่อฉันเปลี่ยนเส้นทางstdoutเช่นนี้: curl -v http://somehost/somepage > /dev/null ตารางผลลัพธ์บางประเภทปรากฏขึ้นกลางผลลัพธ์ไปที่stderr: % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 ตามมาด้วยสิ่งนี้ใกล้จะจบ: { [data not shown] …


4
เหตุใดผลลัพธ์ของบางโปรแกรมของ Linux จึงไม่ใช่ทั้ง STDOUT และ STDERR
เหตุใดผลลัพธ์ของบางโปรแกรมของ Linux จึงไม่ใช่ทั้ง STDOUT และ STDERR ที่จริงแล้วฉันต้องการทราบวิธีการจับเอาท์พุทของโปรแกรมทั้งหมดอย่างน่าเชื่อถือไม่ว่าจะใช้ 'สตรีม' ปัญหาที่ฉันมีคือบางโปรแกรมดูเหมือนจะไม่ยอมให้มีการบันทึกผลลัพธ์ ตัวอย่างคือคำสั่ง 'เวลา': time sleep 1 2>&1 > /dev/null real 0m1.003s user 0m0.000s sys 0m0.000s หรือ time sleep 1 &> /dev/null real 0m1.003s user 0m0.000s sys 0m0.000s เหตุใดฉันจึงเห็นเอาต์พุตทั้งสองครั้ง ผมคาดว่ามันทุกคนที่จะได้รับการประปาเข้า/ dev / null สตรีมเอาต์พุตใดที่ใช้เวลาและฉันจะไพพ์ลงในไฟล์ได้อย่างไร วิธีหนึ่งในการแก้ไขปัญหาคือสร้างสคริปต์Bashตัวอย่างเช่นcombine.shบรรจุคำสั่งนี้: $@ 2>&1 จากนั้นสามารถบันทึกเอาต์พุตของ 'เวลา' ในวิธีที่ถูกต้อง: combine.sh time sleep …
21 linux  bash  gnu  stdout  stderr 

7
Linux ลดพฤติกรรมและ stderr
ฉันกำลังดูผลลัพธ์ของคำสั่งที่ซับซ้อนด้วยlessปัญหาคือสิ่งที่stderrหายไป stderrสายตามปกติได้รับการจดทะเบียน inbetween สายภายในstdout lessฉันต้องการให้พวกเขาพิมพ์ไปยังคอนโซลและเมื่อฉันออกlessไปดูพวกเขาที่นั่นด้วยกัน ผมทราบดีว่าอาจจะมีวิธีแก้ปัญหานี้ไม่ฉันอ่านเกี่ยวกับteeและmultiteeแต่โชคไม่เพื่อให้ห่างไกล
11 less  stderr 

1
PowerShell และ Tee
ฉันใช้คำสั่งนี้เพื่อดูผลลัพธ์ทั้งในคอนโซลและไฟล์: powershell -command "my_command_1 | tee ('logs\{0}.log' -f (Get-Date -format 'yyyy.MM.dd-HH.mm'))" powershell -command "my_command_2 | tee ('logs\{0}.log' -f (Get-Date -format 'yyyy.MM.dd-HH.mm'))" # etc มันใช้งานได้ไม่ดีเท่าที่ฉันคาดไว้และฉันมีคำถาม: ฉันจะเปลี่ยนเส้นทาง stderr ไปยังไฟล์ได้อย่างไร เอาต์พุตนั้นใช้งานได้แปลกมาก สำหรับคำสั่งบางคำสั่งจะมีการหน่วงเวลาอย่างมากระหว่างข้อความที่พิมพ์ออกมาและมีการอัปเดตคอนโซล / ไฟล์ สำหรับเอาต์พุตคำสั่งอื่น ๆ ดูเหมือนจะอัปเดตเมื่อมีการพิมพ์ข้อความ (ฉันเรียกใช้คำสั่งโดยไม่มีทีและฉันรู้ว่าควรพิมพ์อะไร) การหน่วงเวลานี้ทำให้ทีออฟนี้เกือบไร้ประโยชน์ - จะเกิดอะไรขึ้นถ้ามีข้อผิดพลาดร้ายแรงบางอย่างจะพิมพ์ดังนั้นฉันต้องหยุดคำสั่ง แต่ฉันจะไม่เห็นอะไรเลยจนกว่าจะสายเกินไป? สำหรับบางคำสั่งเอาต์พุตจะถูกพิมพ์หลังจากทำคำสั่งเต็มแล้วเท่านั้น นอกจากนี้แม้ว่าคำสั่งจะถามผู้ใช้อินพุตคอนโซล / ไฟล์เอาต์พุตจะว่างเปล่า! สำหรับคำสั่งนั้นฉันรู้ว่ามันคาดหวังอะไรและพิมพ์ข้อความที่ต้องการและทำงานได้ แต่สำหรับคนอื่น ๆ - โดยไม่มีผลลัพธ์ฉันจะรอสิ่งที่จะเกิดขึ้นอย่างไม่สิ้นสุดในขณะที่คำสั่งจะรออินพุตของฉัน! มีวิธีแก้ไขสำหรับปัญหาเหล่านี้หรือไม่ ถ้าไม่เช่นนั้นสิ่งที่อยู่ใน …
10 powershell  stderr  tee 

6
บอกได้ทันทีว่าเอาต์พุตใดถูกส่งไปที่ stderr
เมื่อทำงานอัตโนมัติเป็นเรื่องที่สมเหตุสมผลที่จะทดสอบด้วยตนเองก่อน มันจะมีประโยชน์ แต่ถ้าข้อมูลใด ๆ ที่ไปถึง stderr นั้นสามารถจดจำได้ทันทีเช่นนี้และแยกแยะได้จากข้อมูลที่จะ stdout และให้เอาท์พุททั้งหมดเข้าด้วยกันดังนั้นจึงเป็นที่ชัดเจนว่าลำดับเหตุการณ์คืออะไร สัมผัสสุดท้ายที่ดีถ้าอยู่ที่ทางออกของโปรแกรมมันจะพิมพ์รหัสส่งคืน ทุกสิ่งเหล่านี้จะช่วยในการทำให้เป็นอัตโนมัติ ใช่ฉันสามารถสะท้อนกลับรหัสเมื่อโปรแกรมเสร็จสิ้นและใช่ฉันสามารถเปลี่ยนเส้นทาง stdout และ stderr; สิ่งที่ฉันชอบเปลือกหอยสคริปต์หรือตัวเปลี่ยนเส้นทางที่ใช้งานง่ายซึ่งแสดง stdout เป็นสีดำแสดง stderr interleaved ด้วยสีแดงและพิมพ์รหัสทางออกที่ท้าย มีสัตว์ร้ายเช่นนี้ไหม? [หากเป็นเรื่องสำคัญฉันกำลังใช้ Bash 3.2 บน Mac OS X] อัปเดต : ขออภัยเป็นเวลาหลายเดือนแล้วตั้งแต่ฉันได้ดูสิ่งนี้ ฉันมากับสคริปต์ทดสอบง่ายๆ: #!/usr/bin/env python import sys print "this is stdout" print >> sys.stderr, "this is stderr" print "this is …
8 bash  colors  stderr 

1
เชลล์ลำดับการเปลี่ยนเส้นทางสตรีมมาตรฐานหรือ 2> & 1 1> / dev / null เทียบกับ 1> / dev / null 2> & 1
ใครช่วยอธิบายความแตกต่างได้ไหม บางคนคิดว่าเป็นแนวปฏิบัติที่ดีที่สุดหรือไม่? ถ้าฉันจำถูกต้องฉันอย่างนั้นอ่านดังนั้นสิ่งนี้1>/dev/nullควรนำหน้านี้:2>&1 ls -al /doesNotExists 2>&1 1>/dev/null ls -al /doesNotExists 1>/dev/null 2>&1 ls -al /doesNotExists 1>&2 2>/dev/null ls -al /doesNotExists 2>/dev/null 1>&2 ls -la /doesNotExists 2<&1 1>/dev/null ls -la /doesNotExists 2<&1 2>/dev/null ls -la /doesNotExists 1<&2 1>/dev/null ls -la /doesNotExists 1<&2 2>/dev/null ls -la /doesNotExists 1>/dev/null 2<&1 ls -la …

2
ssmtp myaddress@gmail.com <file.log ไม่ทำงาน ร่างกายว่างเปล่า
ฉันกำลังเรียกใช้สคริปต์ rsync อย่างง่ายที่ฉันบันทึก stdout และ stderr ไปยังสองไฟล์ที่แตกต่างกัน rsync_stdout.log และ rsync_stderr.log เมื่อฉันพยายามส่งอีเมลเนื้อหาของ rsync_stderr.log โดยใช้: echo $(cat rsync_stderr.log) | ssmtp myaddress@gmail.com ฉันได้รับข้อความอีเมล์ว่างเปล่า แต่เมื่อฉัน: echo $(cat rsync_stdout.log) | ssmtp myaddress@gmail.com แล้วฉันมีบันทึก stdout ของฉันในเนื้อหาของอีเมลโดยไม่มีปัญหา มันเกี่ยวกับไฟล์เอาต์พุต stderr ของ rsync หรือเปล่า? ฉันพยายามทุกอย่าง แต่ไม่สามารถทำได้ ฉันวิ่ง ssmtp เป็น verbose: [&lt;-] 250 2.1.5 OK b48smxxx70wrb.1 - gsmtp [-&gt;] DATA …
1 email  rsync  smtp  stderr  ssmtp 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.