2

私はよくスクリプトを作成しますが、これはグラフィカル ユーザー インターフェイスでも実行できます。一度やれば、GUIを使えば簡単です。頻繁に行うには、スクリプトを使用する方がはるかに高速です。

(ほぼ) すべての gui アプリケーションは、基礎となる cli アプリケーションを使用します。たとえば、デスクトップの解像度を切り替えると、xrandr 呼び出しが発生する可能性が高くなります。

または、GUI をクリックすると、基になる構成ファイルが変更されるだけで、これも同様に興味深いものです。

CLI のドキュメントを読んで同じ結果を得るには時間がかかります。それは改善できますか?

つまり、Linux での GUI クリックの基礎となる CLI 呼び出しを記録できますか?

4

5 に答える 5

5

(ほぼ) すべての gui アプリケーションは、基礎となる cli アプリケーションを使用します。

これは真実ではありません。ほとんどのアプリケーションは、独自のコードまたは他のライブラリで関数の呼び出しを使用します。Nautilus でファイルを削除しても実行されずrm(1)、呼び出されますunlink(2)(を参照man 2 unlink)。xrandr 関数を使用するプログラムXrandr(3)は、xrandr(1). そのようなタスクを処理するために別のプロセスを生成するのは、遅く、無駄が多く、見苦しいものです。

それでも、 auditdを使用して関連する詳細をキャプチャできる場合があります。

于 2012-10-04T12:15:52.907 に答える
3

非常に価値のあるツールは strace です。これにより、適切なフラグを指定すると、変更されているファイルと書き込まれているファイルを確認できます。

参照: http://www.hokstad.com/5-simple-ways-to-troubleshoot-using-strace.html

他の回答で示唆されているように、GUIが単にプログラムを呼び出している場合は、それが表示されます。dbus とアプリケーション間のネットワーク相互作用を探している場合は、それも表示されます。ソケット ファイルへのアクセスも表示されます。

netstat -nlp を使用して、個々のデーモンがどのポートを使用しているかを調べて、相互作用を簡単に追跡できるようにすることをお勧めします。

関心のあるネットワーク トラフィックであれば、もちろん tcpdump が答えです。

于 2012-10-05T18:18:00.230 に答える
0

これは、CLI コマンドにどのパラメーターが渡されたかを把握するために私がかつて使用した安価なトリックです。

のような特定の場所に、コマンド ライン パラメータを出力する実行可能スクリプトを作成します。~/bin

#!/bin/sh
echo $@
exit 0

模倣する CLI 実行可能ファイルと同じ名前を付けます。同じ名前の実行可能ファイルが 2 つ存在する可能性があるため、bash は最初に見つかったものを PATH 環境変数で指定された順序で実行します。

つまり、一時的に PATH を変更して、~/bin他のパスの前に含めるようにします。

export PATH="$HOME/bin:$PATH"

変更された PATH を使用して端末内でGUI アプリケーションを実行すると、元の CLI 実行可能ファイルの代わりにスクリプトが呼び出されます。スクリプトは、渡されたパラメーターを出力します。

于 2012-10-05T09:51:28.730 に答える
0

これがあなたの求めているものかどうかはわかりませんが、このトリックを使用して、舞台裏で何が起こっているのかを理解することがあります。まず、ps afxuループ内の出力のキャプチャを開始します。

counter=0 ; while (true) ; do ps afxu > ps-afxu-capture-step-$counter ; echo "Capturing step $counter..." ; sleep 0.01 ; counter=$((counter + 1)); done

次にdiff、キャプチャした「フレーム」で何が変わったかを確認します。

for i in `seq 1 100` ; do diff ps-afxu-capture-step-$i ps-afxu-capture-step-$((i+1)) ; done > ps-afxu-capture-diff.txt

私は昨日、このトリックを使って、何が行われているかを理解mk4htしようとしました。

ええと、コマンドの最初のシーケンスを のサブディレクトリで実行した方がよいでしょう/tmp

于 2012-10-05T19:41:02.627 に答える
0

正確ではないレベルから問題を見ています。「CLI アプリ」と呼ばれるものは、実際には、GUI を持たずに標準の I/O ストリームを使用する任意のソフトウェアです。CLI アプリ。GUI ベースのアプリまたは Web サーバーは、ライブラリとカーネルの呼び出しを行ういくつかのロジックを備えたフロントエンドです。xrandr を使用して解像度を変更するアプリがある場合があります。逆に、X プロトコル周辺のライブラリを使用してそれを行うアプリ、または X プロトコルを使用してそれを行うアプリ、またはカーネル呼び出しを使用して解像度変更を行うアプリがある場合があります (ここではに古いカーネルについて言及しています)。 !
以前の投稿者が回答したように、何らかの方法で CLI アプリへのメッセージを傍受できる可能性がありますが、それがあなたが言及しているものであるとは思えません。ライブラリを使用して、テストしたいソフトウェアの基礎となるライブラリの作業をインターセプトする以外に、すべてのアクションを追跡することはできません。その後、引数付きの CLI アプリの代わりにライブラリ呼び出しのリストを取得します。

于 2012-10-05T22:33:48.017 に答える