यह वह तरीका है जिसे मैं अंत में चुनता हूं
गाइल्स के जवाब के लिए धन्यवाद !
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
पूरी तरह से फिर से खेलना और समय के निष्पादन का पता लगा सकता है।