এইভাবেই আমি শেষ পর্যন্ত বেছে নিই
গিলসের উত্তরের জন্য ধন্যবাদ !
strace -s 9999 -e read -ffp $(sed '/ttyUSB0/s/^.*proc.\([0-9]\+\).fd.*/\1/p;d' <(ls -l /proc/[1-9]*/fd/* 2>/dev/null)) 2>&1 | perl -e '$|=1;my %qa=('a'=>7,'b'=>10,'e'=>33,'f'=>14,'n'=>12,'r'=>15,'t'=>11);sub cnv { my $ch=$_[0];$ch=$qa[$1] if $ch=~/([abefnrt])/;return chr(oct($ch)); };while (<>) { /^read.\d+,\s+"(.*)",\s\d+.*$/ && do { $_=$1;s/\\(\d+|[abefnrt])/cnv($1)/eg;print; };};'
দুঃখিত, আমি ব্যাখ্যা করব ...
strace -s 9999 -e read -ffp $(
sed "/tty${1:-USB0}/s/^.*proc.\([0-9]\+\).fd.*/\1/p;d" <(
ls -l /proc/[1-9]*/fd/* 2>/dev/null
)
) 2>&1 |
perl -e '
$|=1;
my %qa=('a'=>7,'b'=>10,'e'=>33,'f'=>14,'n'=>12,'r'=>15,'t'=>11);
sub cnv {
my $ch=$_[0];
$ch=$qa[$1] if $ch=~/([abefnrt])/;
return chr(oct($ch));
};
while (<>) {
/^read.\d+,\s+"(.*)",\s\d+.*$/ && do {
$_=$1;
s/\\(\d+|[abefnrt])/cnv($1)/eg;
print;
};
};
'
- আমি এর
ls -l /proc/[0-9]*/fd/* | grep ttyUSB0
পরিবর্তে ব্যবহার করি lsof ttyUSB0
কারণ আমি তাদের মাঝে মাঝে ধীর দেখেছি।
- সুতরাং স্ট্রেস ব্যবহার করে বর্তমান প্রোগ্রামটি ট্রেস করবে
ttyUSB0
- শব্দবিন্যাস:
tty${1:-USB0}
অনুমতি করবে একটি স্ক্রিপ্ট হিসাবে ব্যবহার, আর্গুমেন্ট হিসাবে সিরিয়াল ডিভাইসের নাম দিয়ে তারপর চালানোর জন্য: ttySniff USB0
বা ttySniff S0
ইত্যাদি।
- পার্ল স্ক্রিপ্ট
unbackslash
দ্বারা স্ট্রিং লগ করা হবে strace
।
নোটা: আমি এগুলি ব্যবহার করে চালিত করি script -t
যাতে আমি পুরোটি পুনরায় খেলতে পারি এবং সময় নির্বাহের সন্ধান করতে পারি।