$ program [arguments...] 2>&1 | tee outfile
2>&1
stderr සහ stdout ධාරාවන් දමයි.
tee outfile
එය ලබා ගන්නා ධාරාව ගෙන එය තිරයට සහ "outfile" ගොනුවට ලියයි.
බොහෝ දෙනා සොයන දේ මෙය විය හැකිය. සමහරවිට යම් වැඩසටහනක් හෝ ස්ක්රිප්ට් එකක් දිගු කාලයක් තිස්සේ වෙහෙස මහන්සි වී වැඩ කරන අතර ප්රතිදානයන් විශාල ප්රමාණයක් නිපදවනු ඇත. පරිශීලකයාට වරින් වර ප්රගතිය සඳහා එය පරීක්ෂා කිරීමට අවශ්ය වන අතර ප්රතිදානය ගොනුවකට ලිවීමටද අවශ්ය වේ.
ගැටළුව (විශේෂයෙන් stdout සහ stderr ධාරාවන් මිශ්ර කිරීමේදී) වැඩසටහන මඟින් ගලා යන ධාරාවන් මත රඳා පැවතීමයි. නිදසුනක් ලෙස, stdout වෙත ලියන ලද සියලුම ලිවීම් ෆ්ලෂ් කර නොමැති නම් , නමුත් stderr වෙත ලියන ලද සියලුම ලිවීම් ෆ්ලෂ් කර තිබේ නම් , ඒවා ප්රතිදාන ගොනුවේ සහ තිරයේ කාලානුක්රමික අනුපිළිවෙලින් අවසන් වේ.
ප්රගතිය වාර්තා කිරීම සඳහා වැඩසටහන සෑම මිනිත්තු කිහිපයකට වරක් පේළි 1 ක් හෝ 2 ක් පමණක් ප්රතිදානය කරයි නම් එය ද නරක ය. එවැනි අවස්ථාවකදී, වැඩසටහන මඟින් ප්රතිදානය ගලා නොගියහොත්, පරිශීලකයා පැය ගණනක් තිරය මත කිසිදු ප්රතිදානයක් නොදකිනු ඇත, මන්ද ඒ කිසිවක් පැය ගණනක් නළය හරහා තල්ලු නොවන බැවිනි.
යාවත්කාලීන කිරීම: පැකේජයේ unbuffer
කොටසක් වන වැඩසටහන මඟින් expect
බෆරින් ගැටළුව විසඳනු ඇත. මෙය stdout සහ stderr තිරය වෙත ලිවීමට සහ වහාම ගොනු කිරීමට සහ ඒකාබද්ධ කර නැවත හරවා යැවීමේදී ඒවා සමමුහුර්තව තබා ගැනීමට හේතු tee
වේ. උදා:
$ unbuffer program [arguments...] 2>&1 | tee outfile