PowerShellの隠し機能 の精神に倣い、Stack Overflowでさまざまなことを行っていますが、作業に不可欠なLinuxコマンドまたはコマンドの組み合わせは何ですか?
こちらもご覧ください:
MySQLの隠し機能
PowerShellの隠し機能
Oracleデータベースの非表示機能
Windows 2008の隠し機能
Solaris/OpenSolarisの隠し機能
SQL Serverの隠し機能
IIS(6.0/7.0))の非表示機能
ボールを動かすために、私は screen が不可欠であると思います:
Screenが呼び出されると、シェル(または指定されたコマンド)が含まれた単一のウィンドウが作成され、通常どおりプログラムを使用できるように邪魔になります。その後、いつでも、他のプログラムを含む新しい(フルスクリーン)ウィンドウ(シェルを含む)を作成したり、現在のウィンドウを強制終了したり、アクティブなウィンドウのリストを表示したり、出力ログのオン/オフを切り替えたり、テキストをコピーしたりできますウィンドウ、スクロールバック履歴の表示、ウィンドウ間の切り替えなど。すべてのウィンドウは、互いに完全に独立してプログラムを実行します。プログラムは、ウィンドウが現在表示されていない場合や、スクリーンセッション全体がユーザーのターミナルから切り離されている場合でも、引き続き実行されます。
多分私はこれらを毎日使用しませんが、私は頻繁に使用します:
「-X」パラメータを使用して、SSH経由でリモートGUIアプリケーションを実行できることに驚いた。例えば:
# on my machine
$ ssh -X linuxserver
# on remote machine
$ gedit /etc/my.cnf &
ローカルマシンにgeditウィンドウが表示され、サーバー上の「my.cnf」ファイルが編集されます。
これが機能するのは、クライアントマシンにX環境がある場合のみです。つまり、Windowsでは機能しません。しかし、それは私のMacでうまく機能します!
lsofはしばしば無視されるため、非常に便利なツールです。 lsofを使用すると、システム上で開いているすべてのファイルのリスト、誰が/何を使用しているかなどを表示できます。
例えば:
root@tower:~ # umount /mnt/hardy
umount: /mnt/hardy: device is busy
umount: /mnt/hardy: device is busy
root@tower:~ # lsof | grep /mnt/hardy
bash 5966 root cwd DIR 253,2 1024 2 /mnt/hardy
root@tower:~ #
これで、別のターミナルのシェルにログインしていることがわかります。/mnt/hardyが現在の作業ディレクトリです。だから私はそのシェルを殺すか、他のターミナルに行ってそのディレクトリから出てアンマウントすることができます。
これは実に取るに足らない例であり、時折発生する「ボット」の侵入をクリーンアップするのにも非常に便利です。オプションは豊富です。詳細については、man lsofを参照してください。
あなたがいた最後のディレクトリに変更するには:
cd -
システムが停止した後も、ネットワークスタックを実行したままにすることができます。これが2.6.xシリーズのカーネルで最新であるかどうかはわかりませんが、古いバージョンでは、ファイアウォール/ルーティングを構成してから、システムを停止できますシャットダウンなしで、ネットワークのみを残しますスタック実行中。これにより、「ハッキングできない」安価な(静的な)ファイアウォールを作成できます。なぜなら、プログラムやサービスがなく、ネットワークのスタック部分だけなので、toハッキングがないからです。カーネルがパケットをやり取りしています...
私は "locate"が好きです-危険な "find。-name xxxx -print"よりもはるかに簡単にファイルを検索できます。最新のファイルインデックスに対しては、updatedbコマンドを使用する必要があることに注意してください。詳細については、manページを参照してください。
「ngrep」は、tcpdumpファイルをあちこち探し回ることなく、リモートサーバーのネットワークコードをデバッグするのに非常に便利です。
ngrep -d any -W byline port 80
たとえば、HTTP要求と応答のライブが表示されます。
私が頻繁に役立つ他の1つは、straceへの「-e」スイッチです。
strace -p <pid> -e trace=open
指定されたpidのすべてのopen()システムコールを表示し、
strace -p <pid> -e trace=\!rt_sigprocmask
rt_sigprocmask()へのすべての呼び出しを出力から除外します(Rothreadコードのデバッグに役立ちます。これは、pthreadを使用するように構築されている場合、これらの呼び出しの多くを行うようです)。
apropos
説明各マニュアルページには、短い説明が含まれています。 aproposは、キーワードのインスタンスの説明を検索します。
gyaresu@debian:~/bin$ apropos ettercap
etter.conf (5) - Ettercap configuration file
ettercap (8) - (unknown subject)
ettercap_curses (8) - (unknown subject)
ettercap_plugins (8) - (unknown subject)
ありがたいことに、私は数回しか必要としませんでしたが、 Magic SysRq key は、私のお気に入りの隠し機能の1つです。
Alt + SysRq + RSEIUB
NAME
units -- conversion program
DESCRIPTION
The units program converts quantities expressed in various scales to their
equivalents in other scales. The units program can only handle multiplicative
scale changes. It cannot convert Celsius to Fahrenheit, for example.
It works interactively by prompting the user for input:
You have: meters
You want: feet
* 3.2808399
/ 0.3048
You have: cm^3
You want: gallons
* 0.00026417205
/ 3785.4118
You have: meters/s
You want: furlongs/fortnight
* 6012.8848
/ 0.00016630952
You have: 1|2 inch
You want: cm
* 1.27
/ 0.78740157
それは実際にはそれほど隠されているわけではありませんが、経験のない人にとってはそうかもしれませんが、リストを指定してbashで次のように展開できるようにしたいです。
cp arq{,.bak}
これはタイピングと同じです
cp arq arq.bak
履歴のショートカットも使用します(これは正しい用語だとは思いませんが...)のように
!!
最後のコマンドを繰り返す、または
^foo^bar
最後のコマンドでfooをbarに置き換える
sshキーを転送するためのssh-copy-id。古い方法はsshでキーをcatすることでしたが、さらに古い方法は、scpを実行してからキーをcatすることでした。非標準のsshポートを使用している場合は、これでうまくいきます。
ssh-copy-id -i/path/to/key '-p nonstandardport hostname'
さもないと..
ssh-copy-id -i/path/to/keyホスト名
仮想コンソール。ほとんどの人は(Ctrl-)Alt-F1を使用して最初のコンソールなどにアクセスする方法を知っていますが、12以上の場合はどうなりますか? Alt-LeftおよびAlt-Rightを使用して、残りの部分を順番に切り替えることができます。 :-D
私はdebian-goodiesパッケージが好きです:
説明:Debianシステム用の小さなツールボックススタイルのユーティリティ これらのプログラムは、標準のシェルツールと統合するように設計されており、 Debianパッケージシステムで動作するように拡張されています。 。 dgrep-指定されたパッケージ内のすべてのファイルで正規表現を検索します dglob-パターンに一致するパッケージ名のリストを生成します 。 これらは有用であるため、含まれています正当化しないでください 独自のパッケージ: 。 debget-APTのデータベースにあるパッケージの.debをフェッチします dpigs-インストールされているパッケージのうち、どのパッケージがほとんどのスペース debman-抽出せずにバイナリ.debから簡単にmanページを表示します debmany-インストールまたはアンインストールされたパッケージのmanページを選択します アップグレードされたファイルの古いバージョン (ライブラリなど) popbugs-カスタマイズされたリリースクリティカルバグを表示します使用する パッケージに基づくリスト(人気コンテストデータを使用)
そして、基本的にホイールの素晴らしいパイプツールであるmoreutils:
説明:追加のUNIXユーティリティ これは、誰もが30年前に書いたとは考えていなかった UNIXツールのコレクションの増加です。 。 だからこれまでのところ、次のユーティリティが含まれています。 -スポンジ:標準入力を吸収してファイルに書き込みます。 -ifdata:ifconfig出力を解析せずにネットワークインターフェイス情報を取得します -ifne:run標準入力が空でない場合のプログラム -vidir:テキストエディターでディレクトリを編集 -vipe:パイプにテキストエディターを挿入 -ts:タイムスタンプ標準入力 -結合:ブール演算を使用して2つのファイルの行を結合します -pee:パイプへのtee標準入力 -zrun:コマンドへの引数を自動的に解凍します -ミスパイプ:2つのコマンドをパイプし、最初の終了ステータスを返します。 -isutf8:ファイルまたは標準入力がutf-8かどうかを確認します -lckdo:ロックを保持したままプログラムを実行します ホームページ:http://kitenet.net/~joey/code/moreut ils /
おそらく、Windowsとは対照的に、Linuxの優れた機能の1つは、設計上、隠された機能がほとんどないことです。ドキュメント化されていない機能がコミュニティについて知るのに十分重要である場合、うまくいけばうまくいきます。
私が仕事で毎日使用する優れた「機能」:SSHをポート443でリッスンして、仕事用ファイアウォールをバイパスするトンネルを作成し、SSH経由でインターネットに面したLinuxサーバーにトンネルされたローカルSOCKSプロキシを実行できるようにする機能。
企業ファイアウォールを完全に無視できます。
私は、システムに不慣れな人を支援するために「男はもっと」をいつも好きでした。
以下は、私が定期的に使用したものです。
sar
-システムアクティビティを表示しますvmstat
-仮想メモリの統計iostat
-io統計pkill
-pgrep
に似ていますが、返されたプロセスIDを強制終了できますxargs -I<string>
-文字列をパイプデータで置き換えることができます。at
-タスクをスケジュールしますtkdiff
-グラフィカルdiff
ユーティリティこれらはおそらく「非表示」ではありませんが、非常に便利です。
df -hk
-人間が読める形式でディスクの使用状況を表示しますls -ltr
-ファイルを日付順に並べ替えwhile :; do...done
-(Bash)watch
の代わりに使用できない場合Perl -e
-コマンドラインでPerl
スニペットを実行しますfree -kt
-メモリ情報を表示します(合計キロバイト)この記事 から始めて、Linuxのすばらしいトリックをいくつか紹介します。私のお気に入りはpstreeです。これは、プロセスをツリー形式で表示するため、どのプロセスがどのプロセスを生成したかを確認できます。
curlは、wgetを使用するほとんどすべての場合に、wgetの地獄を打ち負かします。
zgrepとzlessはgzipで圧縮されたログファイルを検索するのに最適なので、gunzipを介してそれらをパイプ処理したり、/ var/logに圧縮されていないものを残したりする必要はありません。
ESC + .
前の行の最後のパラメータを現在のプロンプトに「貼り付け」ます
例えば.
ls -l /home/someuser/somedir/somefile
に続く
rm
ESC + .
に翻訳する
rm /home/someuser/somedir/somefile
コンセプトはLinuxのすべてがファイルです。
すべての構成はテキストファイルにあり、Linuxのすべてはファイルとして扱われます。これは、Linuxでの変更が非常に簡単になる、はるかに単純なアプローチです。 Linuxでは、ファイルシステム自体もファイルとして表示できます。
私はyes
コマンドをとてもよく見ています:
yes | do_you_agree
Manページから:
NAME
yes - output a string repeatedly until killed
SYNOPSIS
yes [STRING]...
yes OPTION
オープンソースです。わざわざ目を向ければ、何も「隠されている」ことはありません。
非表示の機能は、非表示の機能がないことです。システムはあなたが完全にアクセスできる途方もない量のパワーを提供します。あなたはそれのすべての部分とあなたの指先で何の力があるかを知るために利用可能なすべてのツールを理解する必要があります。
/ bin、/ sbin、/ usr/bin、/ usr/sbinのすべてのコマンド、および/ procのすべての仮想ファイルを理解することから始めます。必要に応じて、マンページ、その他のドキュメント、およびソースを読みます。
Manページを読んだり、ソースを読んだりするのが苦手な場合は、それが隠し機能です。
grep、awkおよびsed
トップ
今日これを見つけました:
dmidecode :
SMBIOS/DMI標準に従ってシステムBIOSに記述されている、システムのハードウェアに関する情報を報告します。この情報には通常、システムの製造元、モデル名、シリアル番号、BIOSバージョン、資産タグ、および製造元に応じてさまざまなレベルの関心と信頼性に関するその他の多くの詳細が含まれます。これには、CPUソケット、拡張スロット(AGP、PCI、ISAなど)とメモリモジュールスロットの使用状況、およびI/Oポートのリスト(シリアル、パラレル、USBなど)が含まれることがよくあります。
間違いなく、コロコロ施設のsomerandomserver27に関する質問への回答がはるかに簡単になります!
本当はLinuxのことではなく、Bashのことよりも:プロセスの置換、
diff some_local_file <(ssh somehost "cat some_remote_file")
これは、SSH経由で取得したローカルファイルとリモートファイルを1行で比較します。
od
-ファイルを8進数およびその他の形式でダンプします。たとえば、ファイルの先頭にBOMのがらくたがあるかどうかを確認するのに役立ちますfile
-指定されたファイルのファイルタイプは何ですか?lshw
、lsusb
、lspci
-ハードウェアのリストtracepath
-ここでMTUの問題に対処していますか?netwox
200以上のネットワーク関連ツールを含むip
-ネットワーク構成/情報用sysctl
-ファイルシステム/ネットワーク/カーネル情報ebtables
-ブリッジのiptablesvconfig
-VLAN構成brctl
-ブリッジ構成socat
-ステロイドのnetcat
ipgrab
-詳細なヘッダー情報を出力するtcpdump
のようなユーティリティDig
-DNSサーバーの状況を教えてください。tee
は素晴らしいです。画面への出力and logfile?小切手。
history
-最後に使用したコマンドを表示します!<number>
-historyでその番号のコマンドを実行します
logger
を使用すると、シェルプロンプトまたはスクリプトからsyslogにメッセージを書き込むことができます。
logger "See? There! It happened again!"
<blah> -exec <blah> {}を見つける\;
例えば。:
見つける。 -iname * 20080 [123456] .log -a! -iname * .bz2 -exec bzip2\{\} \;
bashの履歴-私は通常10個ほどのxtermを実行しています。これが私のプロフィールの関連部分です:
# Make history ignore dups, ls, and exit
export HISTIGNORE="&:ls:[bf]g:exit"
# Save 100000 history comamnds
export HISTSIZE=10000
# Make each terminal use a separate history file
HISTDIR=${HOME}/.history
SHELLID=$(tty | sed 's!/!.!g')
HISTFILE=${HISTDIR}/history${SHELLID}
touch ${HISTFILE}
# load last histfile as current history
history -r $(/bin/ls ${HISTDIR}/history${SHELLID} | /usr/bin/tail -n 1)
コマンドを検索する必要がある場合は、履歴ディレクトリをgrepするだけです。
aespipe-標準入力から読み取り、標準出力に書き込みます。暗号化されたtarまたはcpioアーカイブを作成および復元するために使用できます。
通常、人々はXを使用してデスクトップシステムを実行します。ただし、通常、実際のテキストモードターミナルにアクセスできます。これらは仮想コンソールと呼ばれます。その後、通常はログインしてコマンドラインなどを使用できます。
ちょうどヒット Ctrl + Alt + F1、 Ctrl + Alt + F2など。Xサーバーは通常、 Ctrl + Alt + F7。
もちろん、これは配布と構成に依存します。
また、Xサーバーを強制終了するこのコマンドが役立つ場合があります。 Ctrl + Alt + Backspace。
これらのキーの組み合わせは、少なくともi86 PCで機能します。
Stack Overflowで作成した投稿: 現在のサブディレクトリのみを一覧表示する方法 ?
ls -d */
それは簡単なトリックですが、それを見つけるのにどれだけの時間が必要だったかはわかりません。
私が自分の無知を表示しているだけなのかどうかはわかりませんが、ログインしているユーザーを確認するための「最後の」コマンドについて知りました。これは非常に便利です。
別の良いプログラムは「期待」です。 ssh/telnetログインなど、プログラムへの入力を強制するものを自動化するのが非常に簡単になります。
POSIX機能とファイルPOSIX機能
Linux(/ Unix)を初めて使用するユーザーが見落としている、または見落としがちな「非表示」機能の場合。
man man
man -k <blah>
またはapropos <blah>
「非表示」機能
SSHの力と柔軟性は私を驚かせ続けることは決してありません。また、何か(フロッピーなど)からRAIDアレイを作成する機能、利用可能なすべてのファイルシステム、LVM、暗号化ツール、無数のコンパイラー、インタープリター、言語を使用して独自のツールを作成する可能性などの優れた機能。 。ああ、apt-getなどで新しいものをインストールすることを忘れないでください。
それは窓よりもとても素晴らしいです。
fgrep
例えばfgrep -r * --include = *。rb
現在のディレクトリからRubyソースファイルを検索して、dir構造をウォークします
見つけるよりもはるかに使いやすいです
Whereisとwhichコマンドが便利だと思います。同じ名前の同じアプリケーションの代替バージョンがあり、それらの特定のバージョンを使用したい場合は、これらを使用してください。
NXは、screenとssh -Xのいくつかの利点を巧妙な圧縮と組み合わせています。これで、モデム接続を介してリモートでgnumericを実行し、接続が停止したときに再開できます。
私の上位5つの「非表示」機能(うまくいけば、これらはまだここにありません)
cd -
試してみてください:)sort
に、次にuniq -c
に、次にsort -n
にパイプ処理することの組み合わせは、驚くほどうまくいく可能性があります。これを使用して、Apacheログファイルまたはps -o
からのメモリ消費からトップトーカーを排除できます。proc/sys
インターフェース/ファイルシステム。リアルタイムで調整/表示できるほどたくさんあります。 cat
またはgrep
のステートメントをwatch -d -n 0.1
でラップすると、非常に便利です。注目すべきはdd
、netcat
、screen
、tcpdump
およびfind
ですが、ほとんどはすでに言及されています。
lsof -i - list all opened socket
htop - like top, but with more eye candy
rdiff-backup - for incremental backup
mc - midnight commander
ethstatus - ethernet statistics
netstat, nmap
iftop - display bandwidth usage on an interface by Host
dd
-ファイルを変換してコピーする
私はこれを非常に頻繁に使用して、バックアップが必要なDVDまたはHDDパーティションのコピーを作成します。
dd if=/dev/sda2 of=/tmp/copy_of_sda2
非常に便利で構成可能です。manページをご覧ください。
scp
私はWeb開発者であり、開発のセットアップでは、常にファイルを開発サーバーにプッシュする必要があります。これを処理するために、scpの周りに簡単なラッパーを書きました。
私はこれらのコマンドなしでは何もできません
ctrl + r:指定した文字で最後のコマンドの履歴を検索します
どれどれ ...
/root/.bash_profileでbashカラーコードを使用して、ルートbashプロンプトを非root標準ユーザープロンプトとは異なる色にしています。システム全体を破壊することから私がたった1つのコマンドであることを思い出させてください。 ;)
私は物事をテストするためにnc(netcat)をたくさん使います。汎用性の高い素敵なユーティリティ。
長い間、chownがユーザー名とグループ名の両方を引数として受け入れることができることを知りませんでした:chown user:group -R /some/directory
。この事実により、多くのタイピングを節約できました(chown/chgrpのペアは不要)。
Dfコマンドは、マウントされているすべてのファイルシステムを表示するための簡単なショートカットです。
スクリプトでpgrepを頻繁に使用して、プロセスが実行されているかどうかを確認しています。
kexecはかなりすっきりしており、BIOSを経由せずに再起動できるため、再起動時間が大幅に短縮されます。ただし、あまり再起動しないでください...
私にとって最大の特徴は、実際には「隠されている」ものは何もないということです。ドキュメントやコードを読むのが面倒だとしたら、すべてが目の前にあります。
find
は私の最大のツールです。私はそれを使用して物を見つけ、見つかったファイルまたはディレクトリに対してコマンドを実行します。
ssh
がなければ、システムは完成しません。
端末セッションを保存するためにscript(1)を使用したことはありませんか?
apg(1)ランダムなパスワードを作成する
プロセッサ/コアの数を知りたいですか? nproc(1)
sfdisk(8)優れたパーティションツール
multitail(1)複数のテールを一度に...素晴らしいツール