Linuxプログラムが実際に実行せずに何をするかをどのように知るのですか?

このコマンドを呼び出す前であっても、Linuxコマンドが実行するアクションの種類を知りたいと思ったことはありませんか? あなたが経験豊富なユーザーであり、行動するチームの数を知っているとします。 しかし、すべてがどのように機能するかを知ることさえできません。 もちろん、 Explainshell Webサービスは、コマンドの詳細を理解する上でいくつかの助けを提供できます。 これを行うには、目的のコマンドをコピーして貼り付ける必要があります。その後、コマンドの各部分がどのように機能するかの詳細な説明が表示されます。 ただし、これは私たちの方法ではありません。 これから説明するツールのおかげで、特定のプログラムがどのように機能するかをコマンドラインから直接確認できます。



多分ユーティリティをご覧ください-コマンドを調べて、実際に使用されたときにコマンドがコンピュータのファイルシステムとどのように対話するかを詳細に調べることができるシンプルなツールです。 この場合、テストモードで調査したプログラムまたはチームは、システムに影響を与えません。 自分でレポートを読んで、実際に実行するかどうかを決定します。

多分どのように機能しますか?


プログラムの開発者は、それについて次のように伝えています。「たぶん、python-ptraceライブラリを使用して、 ptraceの制御下でプロセスを実行します。 プログラムがファイルシステムの変更につながるシステムコールをインターセプトすると、このコールをログに書き込み、コールを無効なシステムコールIDにリダイレクトするためにプロセッサレジスタを変更します(つまり、本質的にこのコールを空の操作に変換します) 。 さらに、この空の操作が返す値を設定して、元の呼び出しが正常に完了したことを示します。 その結果、このプロセスは、彼がやろうとしていることはすべて実際に起こっているが、実際には何も起こっていないことを確信しています。」

ここで、障害が深刻な結果につながる可能性のあるシステムで使用する場合は、十分に注意する必要があることに注意してください。 実際のところ、このユーティリティはまだ多くのシステムコールをブロックしないため、その使用によりコンピュータが誤動作する可能性があります。

たぶんインストール


maybeインストールする前に、 pip package managerがシステムにインストールされているか確認してください。 そうでない場合は、さまざまなLinuxディストリビューションにpipをインストールする手順を以下に示します。

Arch Linuxおよびこのディストリビューションに基づいて構築されたAntergosやManjaro Linuxなどの他のシステムでは、 pipは次のようにインストールできます。

 sudo pacman -S python-pip 

RHELおよびCentOSでは、次の一連のコマンドが役立ちます。

 sudo yum install epel-release sudo yum install python-pip 

Fedoraでは、これは次のように実行できます。

 sudo dnf install epel-release sudo dnf install python-p 

Debian、Ubuntu、およびLinux Mintに適したコマンドは次のとおりです。

 sudo apt-get install python-pip 

SUSEおよびOpenSUSEでは、次のコマンドを使用します。

 sudo zypper install python-pip 

pipインストールした後pip maybeインストールします:

 sudo pip install maybe 

多分で働く


maybeを使用することmaybe非常に簡単です。 探索したいコマンドの前に追加するだけです。 これは次のようなものです。

 $ maybe rm -r ostechnix/ 

ご覧のとおり、 ostechnixフォルダーを削除し、上記のコマンドが実行された場合にシステムで何が起こるかを知りたいと思います。 以下にレポートするものを示します。

 maybe has prevented rm -r ostechnix/ from performing 5 file system operations: delete /home/sk/inboxer-0.4.0-x86_64.AppImage delete /home/sk/Docker.pdf delete /home/sk/Idhayathai Oru Nodi.mp3 delete /home/sk/dThmLbB334_1398236878432.jpg delete /home/sk/ostechnix Do you want to rerun rm -r ostechnix/ and permit these operations? [y/N] y 



maybe報告されているように、 rm -r ostechnix/はファイルシステムで5つの操作を実行することが判明しました。 これで、これらの操作を実行する必要があるかどうかを判断できます。 私にとって、これは単なる素晴らしい機会です。

別の例を示します。 GmailのデスクトップクライアントであるInboxerをインストールしたい。 maybe対応する操作について私が見つけたものは次のとおりです:

 $ maybe ./inboxer-0.4.0-x86_64.AppImage fuse: bad mount point `/tmp/.mount_inboxemDzuGV': No such file or directory squashfuse 0.1.100 (c) 2012 Dave Vasilevsky Usage: /home/sk/Downloads/inboxer-0.4.0-x86_64.AppImage [options] ARCHIVE MOUNTPOINT FUSE options: -d -o debug enable debug output (implies -f) -f foreground operation -s disable multi-threaded operation open dir error: No such file or directory maybe has prevented ./inboxer-0.4.0-x86_64.AppImage from performing 1 file system operations: create directory /tmp/.mount_inboxemDzuGV Do you want to rerun ./inboxer-0.4.0-x86_64.AppImage and permit these operations? [y/N] 

特定のコマンドの調査中にファイルシステムの操作を検出できmaybeような出力が表示される可能性があります。

 $ maybe sudo pacman -Syu sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges? 

その後、Arch Linuxの更新コマンドを調査しようとしましたが、ファイルシステム操作が見つからず、そのような操作に関するメッセージが表示されなかった可能性があります。

まとめ


ご覧のとおり、すべてがシンプルで明確です。 maybeコマンドが本当に好きでした。これはまさに私がしばらく探していたものです。 これで、実際に起動する前にチームまたはプログラムが何をするかを簡単に見つけることができます。 maybeが便利になることを願っていmaybe

親愛なる読者! どのようなユースケースを見ることができますか? この資料では、おそらく重要なシステムで使用する準備がまだ整っていないユーティリティについて言及しています。 同様の何かを知っていますが、そのようなシステムでの実行に適していますか?

Source: https://habr.com/ru/post/J344210/


All Articles