GNU/Linux >> Linux の 問題 >  >> Linux

コマンドまたはプログラムが実行する前に正確に何をするかを知る方法

Unixコマンドを実行する前に何をするのか疑問に思ったことはありませんか?特定のコマンドまたはプログラムが何をするかを誰もが知っているわけではありません。もちろん、 Explainshellで確認できます 。 Explainshell Webサイトでコマンドをコピーして貼り付ける必要があります。これにより、Linuxコマンドの各部分の機能がわかります。ただし、必須ではありません。これで、ターミナルから、コマンドまたはプログラムを実行する前に、コマンドまたはプログラムが正確に何を実行するかを簡単に知ることができます。 「たぶん」に挨拶する 、コマンドを実行して、実際に実行しなくても ファイルに対して何が行われるかを確認できるシンプルなツールです! リストされた出力を確認した後、それを本当に実行するかどうかを決定できます。

「たぶん」はどのように機能しますか?

開発者によると、

「たぶん」 python-ptraceライブラリを使用して、ptraceの制御下でプロセスを実行します。ファイルシステムに変更を加えようとしているシステムコールをインターセプトすると、そのコールをログに記録し、CPUレジスタを変更して、コールを無効なsyscall IDにリダイレクトし(事実上、no-opに変換します)、そのno-op呼び出しの戻り値を、元の呼び出しの成功を示す値に戻します。その結果、プロセスは、実際には何も起こらないのに、実行しようとしていることはすべて実際に起こっていると信じています。

警告非常に注意する必要があります 本番システムまたは気になるシステムでこのユーティリティを使用する場合。ほんの一握りのシステムコールしかブロックしないため、それでも深刻な損害を与える可能性があります。

「たぶん」のインストール

Pipがインストールされていることを確認してください Linuxシステムで。そうでない場合は、使用するディストリビューションに応じて、以下のようにインストールしてください。

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 python-pip

Debian Ubuntu Linux Mint

$ sudo apt-get install python-pip

SUSE openSUSE

$ sudo zypper install python-pip

pipをインストールしたら、次のコマンドを実行して「maybe」をインストールします。

$ sudo pip install 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

「たぶん」ツールは5つのファイルシステム操作を実行し、このコマンド(つまり、rm -r ostechnix /)が正確に何をするかを示します。これで、この操作を実行するかどうかを決定できます。かっこいいですね

別の例を示します。 Inboxerをインストールします Gmail用のデスクトップクライアント。これが私が得たものです。

$ 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]

ファイルシステムの操作が検出されない場合は、次のような結果が表示されます。

たとえば、このコマンドを実行してArchLinuxを更新します。

$ 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?
maybe has not detected any file system operations from sudo pacman -Syu.

見る?ファイルシステムの操作は検出されなかったため、警告はありませんでした。これは絶対に素晴らしく、まさに私が探していたものです。これからは、コマンドやプログラムを実行する前でも、それが何をするのかを簡単に知ることができます

推奨される読み物:

  • システム内で何も変更せずにLinuxコマンドをシミュレートする方法

Linux
  1. 無料コマンドの分析:Linuxシステム管理者が知っておくべきこと

  2. Linuxでユーザーがログインする前にコマンドを実行する方法は?

  3. Linux – Dmesgで何をgrepするかを知る方法は?

  1. Linuxコマンドが何をするかを知る方法

  2. メールとは何ですか? どのようにナビゲートされますか?

  3. コマンド履歴から特定のコマンドを実行せずに呼び出す方法

  1. ログイン前にSsh接続でリモートコマンドを実行しますか?

  2. 実行する前にシェルスクリプト全体を読む方法は?

  3. IPv6を有効にする前に知っておくべきこと