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







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



All Articles