Alpine Linux :Не удалось подключить загрузочный носитель :

Вот путь, который я наконец выбрал

Благодаря ответу Жиля !

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; };};'

Извините,Я объясню...

#!/bin/bash

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, потому что иногда видел их медленными.
  • Таким образом, strace будет отслеживать текущую программу, используяttyUSB0
  • Синтаксис:tty${1:-USB0}позволяет, используя скрипт или функцию, запускать их с именем последовательного устройства в качестве аргумента:ttySniff USB0или ttySniff S0и так далее.
  • Perl-скрипт будетunbackslashстрок, зарегистрированных strace -s 9999.
  • Вы можете заменить strace -e readна strace -e read,writeили strace -e writeв зависимости от ваших потребностей.

Примечание:Я запускаю их, используя синтаксис:

 script -t ttySniff.log 2>ttySniff.tm -c "./ttySniff.sh USB0"

, чтобы я мог воспроизвести всю операцию и отследить время выполнения.

0
08.08.2021, 21:47
0 ответов

Теги

Похожие вопросы