4

私はこのawkスクリプトを持っています:

#!/usr/bin/awk -f
BEGIN {IGNORECASE=1} 
/nVidia/ {inner=1;pci=$1} 
/(corr|fatal)err\-/ {if (inner) print pci, $1, $2, $3, $4, $5, $6, $7} 
$0=="" {inner=0}

sudo lspci -vvvこのスクリプトに常にパイプする構文はありますか?sudo lspci -vvv|./checkpciスクリプトを実行するたびに入力する必要があります。最初のスクリプトを起動するために2番目のスクリプトを作成できることは知っていますが、それは面倒だと思います。そのための適切な方法を知りたいと思います。

余談ですが、グラフィックカードがクラッシュする問題があり、一部のデバイスでUncorrErrフラグが表示されていますが、これが何を意味するのか、またはさらにトラブルシューティングする方法についてのリファレンスはありますか?今は、このスクリプトを定期的に実行して、エラーがlspciにいつ表示されるかを確認し、時間の相関関係があるかどうかを確認します。

4

2 に答える 2

3

これはあなたのために働くはずです:

#!/usr/bin/awk -f
BEGIN {
    IGNORECASE = 1
    cmd = "sudo lspci -vvv"
    while ((cmd | getline) > 0) {
        if ($0 ~ /nVidia/) {inner = 1; pci = $1} 
        if ($0 ~ /(corr|fatal)err\-/) {if (inner) print pci, $1, $2, $3, $4, $5, $6, $7} 
        if ($0 == "") {inner = 0}
    }
    close(cmd)
} 
于 2012-05-07T19:21:22.717 に答える
2

awkスクリプトをシェルスクリプトに変更します。

#!/bin/sh
sudo lspci -vvv | /usr/bin/awk '
  BEGIN {IGNORECASE=1} 
  /nVidia/ {inner=1;pci=$1} 
  /(corr|fatal)err\-/ {if (inner) print pci, $1, $2, $3, $4, $5, $6, $7} 
  $0=="" {inner=0}
'
于 2012-05-07T19:14:29.760 に答える