1. ホーム
  2. Qt

Linux共通コマンド(非常に充実しています)

2022-02-24 02:03:29

内容紹介

I. プロセス管理 

II. システム情報 

シャットダウン(システムの停止、再起動、ログアウト) 

IV. ファイルおよびディレクトリ 

V. ファイル検索 

VI. ファイルシステムのマウント 

7.ディスク容量 

viii. システム負荷 -- トップ 

ix. ユーザーとグループ 

X. ファイルのアクセス権 - アクセス権を設定するには "+"、キャンセルするには "-"を使用します。 

XI. ファイルの特殊属性 - 権限を設定するには "+"、解除するには "-"を使用します。 

XII. ファイルのパッキングと圧縮 

xiii. OSパッケージマネージャ

RPMパッケージ - (Fedora、Redhatおよび類似システム) 

YUM パッケージアップデータ - (Fedora, RedHat および類似システム) 

DEB パッケージ (Debian、Ubuntu および類似システム) 

APTソフトウェアツール (Debian、Ubuntuおよび類似システム) 

XIV. テキストの表示、処理

文書の内容を見る 

テキスト処理 

XV. vimのトピック 

大文字・小文字変換

文字列処理に関するトピック

③. viでのテキスト操作

vimの基本操作

シェルスクリプトのコメント(1行コメント/複数行コメント) ⑤.

XV. 文字設定・ファイル形式変換 

xvi. ファイルシステム解析 

xvii. ファイルシステムの初期化 

xviii. SWAPファイルシステム 

xix. バックアップ 

20、CD-ROM操作 

ゼクシィ ネットワーク - (イーサネットとWIFIワイヤレス) 

II.2. JPSツール

II.3. crontab スケジューラ

構文

II.4. シェルプログラミング関連

組み込み変数

データ構造

1. 配列

for i in in {1..10}; do rm -f hadoop-cmf-hive-HIVEMETASTORE-nn1.testhdp.com.log.out.$i;done

2. 辞書 dict または Map

3. パイプライン出力で次の命令を実行する

4, ループ, 反復論理制御

5, ブレークとコンティニューの違い

6、大容量ファイル分割処理

7, awk

8. ユーザーを切り替えて、そのユーザーに関連するコマンド操作を実行するスクリプトを実装します。

シェルでエコーして色と点滅を制御する。

1. シェルに色を表示する

二十五、プログラム起動自己起動サービス構成 

xxvi. Linuxコマンドの実行を継続的に監視する



Windowsは直感的で視覚的な操作で、特にデスクトップPCで適切なソフトウェアを操作、実行するのに適しています。

Linux のコマンドラインによるアプローチは、特にサーバーサイドのプログラミング、管理、運用保守において、よりシンプルで短く、コンパクトなものとなっています。ウィンドウズではあらゆる処理と統合を必要とする複雑で効率的な機能を、短いコマンドの組み合わせで実行することができるのです。 

I. プロセス管理 


w 現在のオンラインユーザーを表示する

my_adm pts/0 111.111.111 three15 24:58 2:51 0.02s sshd: my_admin [priv].
root pts/3 111.111.111.112 13:15 3:47m 0.35s 0.35s -bash
my_adm pts/5 111.111.111.113 15:14 2.00s 0.54s 0.02s sshd: my_admin [priv].

pkill -kill -t pts/?  上の pts/5 のように、指定された名前のプロセスを終了させます。

トランスミッションドア Linuxでプロセスを終了させるN個の方法

II. システム情報 


arch マシンのプロセッサ・アーキテクチャを表示する (1) 
uname -m マシンのプロセッサ・アーキテクチャを表示します (2) 
uname -r 使用されているカーネルバージョンを表示する 
dmidecode -q ハードウェアシステムコンポーネントを表示 - (SMBIOS / DMI) 
hdparm -i /dev/hda ディスクのアーキテクチャの特徴を一覧表示します。 
hdparm -tT /dev/sda はディスクのテスト読み取り操作を実行します。 
cat /proc/cpuinfo CPU 情報の表示 
cat /proc/interrupts 割り込みの表示 
cat /proc/meminfo メモリ使用量の確認 
cat /proc/swaps どのスワップが使用されているかを表示します。 
cat /proc/version はカーネルバージョンを表示します。 
cat /proc/net/dev ネットワークアダプタと統計情報を表示します。 
cat /proc/mounts ロードされたファイルシステムを表示します。 
lspci -tv PCI デバイスの一覧を表示します。 
lsusb -tv USB デバイスを表示します。 
日付 システムの日付を表示 

ctime=`date +%Y-%m-%dT%k:%M:%S` #フォーマットされた時間、例:2018-01-13T11:09:19、%kと%Hの違いに注意、前者は9、後者は09が返されます。

YESTERDAY=`date +%Y-%m-%d -d "-1 days"` 昨日の日付を取得します。
cal 2007 2007年のカレンダー表を表示する 
日付 041217002007.00 日付と時刻を設定する - 月 日 時 分 年 秒 
clock -w 時刻の変更をBIOSに保存する 

ゲートウェイアドレスを問い合わせる(例:dhcpからstaticに切り替える際、設定を治すためにipとゲートウェイの情報を取得する必要がある、例:ローカルipが10.34.0.123なら、ゲートウェイは次のコマンドで最初の3.254になる)。

[root@file-server ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.34.3.254 0.0.0.0 UG 0 0 0 0 enp3g0
10.34.0.0 0.0.0.0 255.255.252.0 u 0 0 0 0 0 enp3g0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 0 0 virbr0

CentOS / RedHat系はOS情報をご確認ください(lsb_releaseコマンドがない場合は、"yum install redhat-lsb"でインストールしてください)。

[root@server-test online]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.5.1804 (Core) 
Release: 7.5.1804
Codename: Core






シャットダウン(システム停止、再起動、ログアウト) 


shutdown -h now shutdown the system(1) 
init 0 シャットダウンシステム(2) 
telinit 0 システムをシャットダウンする (3) 
shutdown -h 時間:分 & 予定時刻にシステムをシャットダウンします。 
shutdown -c スケジュールされた時刻にシステムのシャットダウンをキャンセルします。 
shutdown -r now reboot(1) 
リブート リブート(2) 
ログアウト ログアウト 


IV. ファイルおよびディレクトリ


cd /homeを'/home'ディレクトリに入れる' 
cd ... 前のディレクトリに戻る 
cd ... /... 最後の2階層分のディレクトリに戻る 
cd 個人のホームディレクトリに移動する 
cd ~user1 個人のホームディレクトリに入る 
cd - 最後にいたディレクトリに戻る 
pwdは作業パスを表示します 
ls ディレクトリ内のファイルを表示する 
ls -F ディレクトリ内のファイルを表示します。 
ls -l ファイルとディレクトリの詳細を表示します。 
ls -a 隠しファイルを表示する 
ls *[0-9]* 数字を含むファイル名とディレクトリ名を表示します。 
tree ルートディレクトリを起点としたファイルとディレクトリのツリー構造を表示します(1) 
lstree ルートディレクトリを始点としたファイルやディレクトリのツリー構造を表示します(2) 
mkdir dir1 は 'dir1' という名前のディレクトリを作成します。 
mkdir dir1 dir2 2つのディレクトリを同時に作成します。 
mkdir -p /tmp/dir1/dir2 ディレクトリツリーを作成します。 
rm -f file1 'file1' という名前のファイルを削除する。 
rmdir dir1 は 'dir1' という名前のディレクトリを削除します。 
rm -rf dir1 は 'dir1' という名前のディレクトリを削除し、その内容も削除します。 
rm -rf dir1 dir2 2つのディレクトリとその中身を同時に削除する 
mv dir1 new_dir ディレクトリの名前変更/移動 
cp file1 file2 ファイルをコピーする 
cp dir/* . ディレクトリ内のすべてのファイルを現在の作業ディレクトリにコピーする 
cp -a /tmp/dir1 . ディレクトリを現在の作業ディレクトリにコピーします 
cp -a dir1 dir2 ディレクトリをコピーします。 
ln -s file1 lnk1 ファイルまたはディレクトリへのソフトリンクを作成します。 
ln file1 lnk1 ファイルまたはディレクトリへの物理的なリンクを作成します。 
touch -t 0712250000 file1 ファイルまたはディレクトリのタイムスタンプを変更します - (YYMMDDhhmm) 
file file1 ファイルの MIME タイプをテキストで出力します。 
iconv -l は、既知のエンコーディングの一覧を表示します。 
iconv -f fromEncoding -t toEncoding inputFile > outputFile 与えられた入力ファイルから、fromEncodingでエンコードされていると仮定し、 toEncodingに変換して新規作成します。 
見つける。-maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; 現在のディレクトリのファイルを一括リサイズしてサムネイルディレクトリに送る (Imagemagick からの convert が必要です。) 


V. ドキュメント検索


find / -name file1 ルート・ファイル・システムの '/' で始まるファイルとディレクトリを検索します。 
find / -user user1 ユーザー 'user1' に属するファイルとディレクトリを検索します。 
find /home/user1 -name \*.bin ディレクトリ '/ home/user1' にある '.bin' で終わるファイルを検索します。 
find /usr/bin -type f -atime +100 過去100日間に使用されていない実行ファイルを検索します。 
find /usr/bin -type f -mtime -10 10日以内に作成または変更されたファイルを検索します。 
find / -name \*.rpm -exec chmod 755 '{}' \; '.rpm' で終わるファイルを検索し、パーミッションを定義します ^ find /tmp -name \*.hprof -exec rm -f {}; '{}' で終わるファイルを検索します。\java スタックの .hprof ファイルを一括で削除します。
find / -xdev -name \*.rpm 光学ドライブやジェットディスクなどのリムーバブルデバイスを無視して、'.rpm' で終わるファイルを検索する。 
locate \*.ps '.ps'で終わるファイルを探す - 最初に 'updatedb' コマンドを実行します。 
whereis halt は、バイナリ、ソース、または man の場所を表示します。 
バイナリファイルや実行ファイルへのフルパスを表示するwhich halt 


VI. ファイルシステムのマウント


mount /dev/hda2 /mnt/hda2 hda2 というディスクをマウントします - '/ mnt/hda2' というディレクトリがすでに存在することを確認してください。 
umount /dev/hda2 で hda2 というディスクをアンマウントします - 最初にマウントポイント '/ mnt/hda2' から終了します。 
fuser -km /mnt/hda2 デバイスがビジー状態のときに強制アンマウント 
umount -n /mnt/hda2 は /etc/mtab ファイルに書き込まずにアンマウント操作を実行します - ファイルが読み取り専用かディスクが一杯のときに便利です。 
mount /dev/fd0 /mnt/floppy フロッピーディスクをマウントします。 
mount /dev/cdrom /mnt/cdrom cdrom または dvdrom をマウントします。 
mount /dev/hdc /mnt/cdrecorder cdrw または dvdrom をマウントします。 
マウント /dev/hdb /mnt/cdrecorder cdrw または dvdrom をマウントします。 
mount -o loop file.iso /mnt/cdrom ファイルまたは ISO イメージファイルをマウントする。 
mount -t vfat /dev/hda5 /mnt/hda5 Windows FAT32 ファイルシステムをマウントします。 
mount /dev/sda1 /mnt/usbdisk usb ジェットディスクまたはフラッシュデバイスをマウントします。 
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share Windowsネットワーク共有をマウントする。 


VII. ディスク容量 


df -h マウントされているパーティションの一覧を表示します。 
ls -lSr |more ファイルとディレクトリをサイズ順に並べ替える。 
du -sh dir1 ディレクトリ 'dir1' が既に使用しているディスク領域を推定する。 
du -sk * | sort -rn ファイルやディレクトリのサイズを容量順に表示します。 
rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n インストールされた rpm パッケージの使用領域をサイズ順に表示します (fedora, redhat-like systems)。 
dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n インストールした deb パッケージの使用領域をサイズ順に表示 (ubuntu、debian-like systems) 

hdfs dfs -du /dw/default | sort -rn | head -n 10 | awk '{printf("%.2ft%.2ft%stn",$1/1024/1024,"\t"$2/1024/1024 /1024,"\t"$3)}' hdfsファイルシステム内のテーブルファイルのサイズを、大きいものから順に(最初の10列を取る)、GB単位で問い合わせます。

VIII. システム負荷 -- top 


top -d 20 -p 1303 は、プロセス番号 1303 のシステム負荷を取り、20 秒ごとにリフレッシュします。英語の状態で、cキーを押しながら、実行された環境の詳細情報を表示するので、javaプログラムのデバッグには非常に親切です。 
top -d 20 -n 3 -b > test.txt 20秒ごとに計3回実行し、test.txtファイルに統計情報を取り込みます。           

top コマンドはすべてを表示しないので、-w パラメータを追加する。

The command is
top -b -n 1
-b is the batch mode, -n is the number of times to refresh
I found that the information is not fully displayed, and finally man top, after adding a parameter w, is fully displayed

top -b -n 1 -w 512
If you need to display the full COMMAND command, use the top -c parameter

top -c -bw 500
to see the full process name, by 500 characters (so you can basically see the full command)


その他のパラメータの一覧、公式に説明されています。 

1. COMMAND-LINE Options
       The command-line syntax for top consists of:

         -hv|-bcHiOSs -d secs -n max -u|U user -p pid -o fld -w [cols]

       The typically mandatory switch ('-') and even whitespace are completely optional.

       -h | -v :Help/Version
            Show library version and the usage prompt, then quit.

       -b :Batch-mode operation
            Starts top in Batch mode, which could be useful for sending output from top to other programs or to a file. In this mode, top will not accept input and runs until the iterations limit you've set with the `-n' command-line option or until killed.

       -c :Command-line/Program-name toggle
            Starts top with the last remembered `c' state reversed. Thus, if top was displaying command lines, now that field will show program names, and visa versa.  See the `c' interactive command for additional information.

       -d :Delay-time interval as: -d ss.t (secs.tenths)
            Specifies the delay between screen updates, and overrides the corresponding value in one's personal configuration file or the startup default. This can be changed with the `d' or `s' interactive commands.

            Fractional seconds are honored, but a negative number is not allowed. In all cases, however, such changes are prohibited if top is running in Secure mode, In all cases, however, such changes are prohibited if top is running in Secure mode, except for root (unless the `s' command-line option was used).  For additional information on
            Secure mode see topic 6a.

       -H :Threads-mode operation
            Without this command-line option a summation of all threads in each process is shown. Later this can be changed with the `H' interactive command.

       -i :Idle-process toggle
            Starts top with the last remembered `i' state reversed. When this toggle is Off, tasks that have not used any CPU since the last update will not be displayed.  For additional information regarding this toggle see topic 4c.

       -n :Number-of-iterations limit as: -n number
            Specifies the maximum number of iterations, or frames, top should produce before ending.

       -o :override-sort-field as: -o fieldname
            Specifies the name of the field on which tasks will be sorted, independent of what is reflected in the configuration file. A leading `+' will force sorting high to
            A leading `+' will force sorting high to low, whereas a `-' will ensure a low to high ordering.

            This option exists primarily to support automated/scripted batch mode operation.

       -O :output-field-names
            This option acts as a form of help for the above -o option. It will cause top to print each of the available field names on a separate line, then quit. are subject to nls translation.

       -p :Monitor-PIDs mode as: -pN1 -pN2 ...  or -pN1,N2,N3 ...
            Monitor only processes with specified process IDs. This option can be given up to 20 times, or you can provide a comma delimited list with up to 20 pids. This option can be given up to 20 times, or you can provide a comma delimited list with up to 20 pids.

            A pid value of zero will be treated as the process id of the top program itself once it is running.

            This is a command-line option only and should you wish to return to normal operation, it is not necessary to quit and restart top -- just issue any of these interactive commands: `=', `u' or `U'.

            The `p', `u' and `U' command-line options are mutually exclusive.

       -s :secure-mode operation
            Starts top with secure mode forced, even for root. This mode is far better controlled through the system configuration file (see topic 6. FILES).

       -S :Cumulative-time toggle
            Starts top with the last remembered `S' state reversed. When Cumulative time mode is On, each process is listed with the cpu time that it and its dead See the `S' interactive command for additional information regarding this
            See the `S' interactive command for additional information regarding this mode.

       -u | -U :User-filter-mode as: -u | -U number or name
            Display only processes with a user id or user name matching that given. The `-u' option matches on effective user whereas the `-U' option matches on any user (real, effective, saved, or filesystem).

            Prepending an exclamation point ('!') to the user id or name instructs top to display only processes with users not matching the one provided.

            The `p', `u' and `U' command-line options are mutually exclusive.

       -w :output-width-override as: -w [ number ]
            In Batch mode, when used without an argument top will format output using the COLUMNS= and LINES= environment variables, if set. With an argument, output width can be decreased or increased (up to 512) but the width will be fixed at the maximum 512 columns.
            (up to 512) but the number of rows is considered unlimited.

            In normal display mode, when used without an argument top will attempt to format output using the COLUMNS= and LINES= environment variables, if set. an argument, output width can only be decreased, not incre





IX. ユーザーとグループ 

groupadd group_name 新しいユーザーグループの作成 
groupdel group_name ユーザーグループの削除 
groupmod -n new_group_name old_group_name ユーザーグループの名前を変更します。 
useradd -c "名前 姓 " -g admin -d /home/user1 -s /bin/bash user1 ユーザーグループ "admin" に所属するユーザーを作成します。 
useradd user1 新しいユーザーを作成します。 
userdel -r user1 ユーザーの削除('-r'はホームディレクトリを除きます。) 
usermod -c "ユーザー FTP" -g system -d /ftp/user1 -s /bin/nologin user1 ユーザー属性を変更する。 
passwd パスワードの変更 
passwd user1 ユーザーのパスワードを変更する(root のみ許可)。 
chage -E 2005-12-31 user1 ユーザーのパスワードの有効期限を設定する 
pwck は '/etc/passwd' のファイル形式と構文に修正がないか、またユーザーの存在をチェックします。 
grpck は '/etc/passwd' をチェックして、ファイルの書式と構文の修正、およびグループの存在を確認します。 
newgrp group_name 新規グループにログインし、新規作成されたファイルに対してあらかじめ定義された グループを変更する。 

ケース1

#### 1-create user, 2-append additional group, 3-delete additional group
# 1
useradd san_zhang -m
passwd san_zhang [email protected]
# -----------------------------------------------------
# 2
usermod -aG hdfs san_zhang (add san_zhang to the additional group hdfs (you can add more than one additional group, multiple groups separated by spaces, such as "hdfs,yarn,spark"), its default in san_zhang)
at this point to see where the user group, you can find that the group to which it belongs to san_zhang, additional groups for hdfs, as follows.
id san_zhang
uid=1001(san_zhang) gid=1001(san_zhang) groups=1001(san_zhang),992(hdfs)

derivation.
if the last step in the wrong order, mistakenly append hdfs to the san_zhang user group, such as the use of the following wrong command.
usermod -aG san_zhang hdfs
then at this time to view the group to which hdfs belongs, you will find that it is also in the san_zhang group
id hdfs
uid=995(hdfs) gid=992(hdfs) groups=992(hdfs),994(hadoop),1001(san_zhang)

at this point and then look at san_zhang group, you will see the misjoined hdfs users
groups san_zhang
san_zhang : san_zhang hdfs
# -----------------------------------------------------
# 3
gpasswd -d hdfs san_zhang (remove the wrongly added hdfs user from the san_zhang group)
Log after execution: Removing user hdfs from group san_zhang
# -----------------------------------------------------

ケース2

あるグループの下にいるユーザーをカウントする

[root@cdh01 ~]# grep hdfs /etc/group
hdfs:x:993:

[root@cdh01 ~]# awk -F : '{print $1,$4}' /etc/passwd | grep '993'
hdfs 993












x. ファイルパーミッション - パーミッションを設定するには "+"、キャンセルするには "-"を使用します。 


ls -lh パーミッションを表示する 
ls /tmp | pr -T5 -W$COLUMNS 端末を5つの列に分割して表示します。 
chmod ugo+rwx directory1 ディレクトリの所有者(u)、グループ(g)、その他(o)に読み取り(r)、書き込み(w)、実行(x)権限を設定します。 
chmod go-rwx directory1 グループ (g) とその他 (o) のディレクトリに対する読み取り、書き込み、実行権限を削除します。 
chown user1 file1 ファイルの所有者属性を変更する 
chown -R user1 directory1 ディレクトリの所有者属性を変更し、同時にディレクトリ内の全ファイルの属性を変更します。 
chgrp group1 file1 ファイルのグループを変更します。 
chown user1:group1 file1 ファイルの所有者とグループ属性を変更する。 
find / -perm -u+s は、SUID 制御を使用するシステム上のすべてのファイルの一覧を表示します。 
chmod u+s /bin/file1 はバイナリファイルの SUID ビットを設定します - ファイルを実行しているユーザーにも所有者と同じパーミッションが付与されます。 
chmod u-s /bin/file1 バイナリファイルのSUIDビットを無効化します。 
chmod g+s /home/public はディレクトリの SGID ビットを設定します - SUID に似ていますが、これはディレクトリ用です。 
chmod g-s /home/public ディレクトリの SGID ビットを無効化する。 
chmod o+t /home/public ファイルに STIKY ビットを設定する - 正規の所有者のみがファイルを削除できるようにします。 
chmod o-t /home/public ディレクトリの STIKY ビットを無効化します。 


XI. ファイルの特殊属性 - 権限を設定するには "+"を、解除するには "-"を使用します。 

chattr +a file1 は append としてファイルの読み書きを許可するのみです。 
chattr +c file1 はこのファイルをカーネルが自動的に圧縮/解凍することを許可します。 
chattr +d file1 ファイルシステムのバックアップを実行するとき、ダンププログラムはこのファイルを無視します。 
chattr +i ファイル1は不変に設定され、削除、変更、リネーム、リンクはできません。 
chattr +s file1 でファイルを安全に削除することができます。 
chattr +S file1 は、アプリケーションがファイルに対して書き込み操作を行うと同時に、システムがディスクに変更を書き込むようにします。 
chattr +u file1 ファイルが削除された場合、システムは削除されたファイルを後で復元することを許可します 
lsattrは特別な属性を表示します。 


XII. ファイルのパッケージングと圧縮 


bunzip2 file1.bz2 は 'file1.bz2' という名前のファイルを解凍します。 
bzip2 file1 は 'file1' という名前のファイルを圧縮します。 
gunzip file1.gz で 'file1.gz' という名前のファイルを解凍します。 
gzip file1 'file1' という名前のファイルを圧縮する。 
gzip -9 file1 最大圧縮 
rar a file1.rar test_file 'file1.rar' という名前のパッケージを作成します。 
rar a file1.rar file1 file2 dir1 'file1', 'file2' とディレクトリ 'dir1' を同時に圧縮する。 
unrar x file1.rar rar パッケージを解凍する # unrar コマンドがない場合は、以下を参照してください。 Linux CentOS 7.0でのrar unrarのインストール方法
tar -cvf archive.tar file1 は圧縮されていない tarball を作成します。 
tar -cvf archive.tar file1 file2 dir1 'file1', 'file2' および 'dir1' を含むアーカイブファイルを作成します。 
tar -tf archive.tar はパッケージの中身を表示します。 
tar -xvf archive.tar パッケージを解放する 
tar -xvf archive.tar -C /tmp アーカイブを/tmpディレクトリに解放する 
tar -cvfj archive.tar.bz2 dir1 bzip2 形式のアーカイブを作成します。 
tar -jxvf archive.tar.bz2 bzip2 形式のアーカイブを解凍します。 
tar -cvfz archive.tar.gz dir1 gzip 形式のアーカイブを作成します。 
tar -zxvf archive.tar.gz gzip 形式のアーカイブを解凍します。 
zip file1.zip file1 zip 形式のアーカイブを作成します。 
zip -r file1.zip file1 file2 dir1 複数のファイルやディレクトリを同時にzipアーカイブに圧縮します。 
unzip file1.zip zip フォーマットのアーカイブを解凍します。 


XIII. OSパッケージマネージャ

RPMパッケージ - (Fedora、Redhatおよび類似システム)

rpm -ivh package.rpm で rpm パッケージをインストールします。 
rpm -ivh --nodeps package.rpm は rpm パッケージをインストールし、依存関係の警告を無視します。 
rpm -U package.rpm は、設定ファイルを変更せずに rpm パッケージを更新します。 
rpm -F package.rpm は、インストールが確実な rpm パッケージを更新します。 
rpm -e [--nodeps] package_name.rpm rpm パッケージを削除する [--nodeps は依存関係を無視する] 。 
rpm -qa はシステム上にインストールされているすべての rpm パッケージを表示します。 
rpm -qa | grep httpd 名前に "httpd" という単語を含むすべての rpm パッケージを表示します。 
rpm -qi パッケージ名 インストールされているパッケージに関する特別な情報を取得します。 
rpm -qg "システム環境/デーモン" コンポーネントの rpm パッケージを表示します。 
rpm -ql パッケージ名 インストールした rpm パッケージが提供するファイルの一覧を表示します。 
rpm -qc パッケージ名 インストールされた rpm パッケージによって提供される設定ファイルの一覧を表示します。 
rpm -q パッケージ名 --whatrequires ある rpm パッケージに存在する依存関係の一覧を表示します。 
rpm -q パッケージ名 --whatprovides rpm パッケージによって占有されるボリュームを表示します。 
rpm -q パッケージ名 --scripts インストール/削除時に実行されたスクリプトを表示します。 
rpm -q パッケージ名 --changelog rpm パッケージの変更履歴を表示します。 
rpm -qf /etc/httpd/conf/httpd.conf conf は、どの rpm パッケージが与えられたファイルを提供するか確認します。 
rpm -qp package.rpm -l は、アンインストールされた rpm パッケージによって提供されるファイルの一覧を表示します。 
rpm --import /media/cdrom/RPM-GPG-KEY 公開鍵電子証明書をインポートする。 
rpm --checksig package.rpm rpm パッケージの整合性を確認する。 
rpm -qa gpg-pubkey は、インストールされているすべての rpm パッケージの整合性を確認します。 
rpm -V パッケージ名で、ファイルサイズ、ライセンス、タイプ、オーナー、グループ、MD5チェック、最終更新時刻を確認できます。 
rpm -Va はシステム上にインストールされている全ての rpm パッケージをチェックします - 使用には注意が必要です 
rpm -Vp package.rpm で、ある rpm パッケージがまだインストールされていないことを確認します。 
rpm2cpio package.rpm | cpio --extract --make-directories *bin* rpm パッケージから実行ファイルを実行します。 
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm rpmソースからビルドしたパッケージをインストールします。 
rpmbuild --rebuild パッケージ名.src.rpm rpm ソースから rpm パッケージをビルドします。 


YUM パッケージアップデータ - (Fedora, RedHat および類似システム) 


yum install パッケージ名 rpm パッケージのダウンロードとインストール (例: yum -y install zip unzip)
yum localinstall package_name.rpm は、あなた自身のリポジトリを使ってすべての依存関係を解決しながら、rpm パッケージをインストールします。 
yum update パッケージ名.rpm は現在のシステムにインストールされている全ての rpm パッケージを更新します 
yum update パッケージ名 rpm パッケージを更新する 
yum remove パッケージ名 rpm パッケージを削除します。 
yum list | grep tmux インストール可能な全ソフトウェアのコマンドをリストアップします。
yum search パッケージ名 rpm リポジトリ内のパッケージを検索します。 
yum clean packages rpmキャッシュをクリアして、ダウンロードしたパッケージを削除します。 
yum clean headers すべてのヘッダーを削除します 
yum clean all キャッシュされたパッケージとヘッダーをすべて削除します。 


③. DEB パッケージ (Debian、Ubuntu および同様のシステム) 

dpkg -i package.deb deb パッケージのインストール/アップデート 
dpkg -r パッケージ名 システムから deb パッケージを削除します。 
dpkg -l システム上にインストールされている全ての deb パッケージを表示します。 
dpkg -l | grep httpd 名前に "httpd" という単語が含まれるすべての deb パッケージを表示しま す。 
dpkg -s パッケージ名 システムに既にインストールされている、特定のパッケージに関する情報を取得します。 
dpkg -L パッケージ名は、既にシステムにインストールされている deb パッケージによって提供されるファイルの一覧を表示します。 
dpkg --contents package.deb まだインストールされていないパッケージによって提供されるファイルの一覧を表示します。 
dpkg -S /bin/ping 与えられたファイルをどのdebパッケージが提供するか特定する。 


APTソフトウェアツール (Debian、Ubuntuおよび類似システム) 

apt-get install パッケージ名で deb パッケージをインストール/更新します。 
apt-cdrom install パッケージ名 CD から deb パッケージをインストール/アップデートする。 
apt-get update リスト内のパッケージを更新します。 
apt-get upgrade インストールされているすべてのソフトウェアをアップグレードします。 
apt-get remove パッケージ名 システムから deb パッケージを削除します。 
apt-get checkで依存レポジトリが正しいか確認する。 
apt-get clean ダウンロードしたパッケージのキャッシュを削除します。 
apt-cache search searched-package 検索対象の文字列を含むパッケージの名前を返します。 

XIV. テキストの表示、処理


①. ファイルの中身を見る

cat file1 ファイルの内容を1バイト目から順に表示する 
tac file1 ファイルの内容を最終行からさかのぼって表示する 
more file1 長いファイルの内容を表示する 
less file1 は 'more' コマンドと似ているが、順方向操作と同じようにファイル内での逆方向操作を許可している 
head -2 file1 ファイルの最初の2行を表示する。 
tail -2 file1 ファイルの最後の2行を表示します。 
tail -f /var/log/messages ファイルに追加された内容をリアルタイムで確認できる 


テキスト処理 

cat file1 file2 ... | コマンド <> file1_in.txt_or_file1_out.txt PIPE、STDIN、STDOUTを使ったテキスト操作のための一般的な構文。 
cat file1 | command( sed, grep, awk, grep, etc...) > result.txt ファイルの詳細説明テキストをマージして、新しいファイルに紹介文を書き込む。 
cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt ファイルの詳細テキストをマージし、既存のファイルにプロファイルを書き込む。 
grep Aug /var/log/messages ファイル '/var/log/messages' からキーワード "Aug" を探します。 
grep ^Aug /var/log/messages ファイル '/var/log/messages' で "Aug" で始まる単語を探します。 
grep [0-9] /var/log/messages ファイル '/var/log/messages' で数字を含むすべての行を選択します。 
grep Aug -R /var/log/* ディレクトリ '/var/log' およびそれ以降のディレクトリで、文字列 "Aug" を検索します。 

grep -E 'string_1|string_2' /var/log/test.log string_1 と string_2 を同時に含むレコードをログに問い合わせる。

grep -Hnr docker * 指定した文字 "docker" を含むファイルをこのレベルまたはサブフォルダで再帰的に見つけ、ファイル名 + 行数、さらに o 引数が正確に一致する場合はその文字も表示します。意味: (H: 一致するごとにファイル名を表示; n: 文字列がある行番号を表示; r: 再帰検索; o: その単語に完全に一致し、さらに1文字も一致しない)

"grepはマッチした行の先頭と最後尾を表示する"というトピックがあります。

grep -A2 2 test.txt Returns the matching line and the last two lines of the matching line

grep -B2 2 test.txt returns the matching line and the first two lines of the matching line

grep -C2 2 text.txt or grep -A2 -B2 2 test.txt returns the matching line and the two lines before and after the matching line

-A -B -C followed by an Arabic number
-A returns the line after the match and the n lines after it, (After, after).
-B returns the matching line and the n lines before it, (Before).
-C returns the matching line and the n lines before and after it, by concatenating -A and -B, (Context, i.e. before and after).

sed -i 's/string1/string2/g' example.txt example.txt ファイル内の "string1" を "string2" に置き換えてください ( <スパン i引数なしでメモリ内で置き換え、-i引数を追加してファイル内で直接置き換える。 )
sed '/^$/d' example.txt ファイルからすべての空白行を削除する 
sed '/ *#/d; /^$/d' example.txt example.txt ファイルからすべてのコメントと空白行を削除します。 
echo 'hElloWorld' | tr '[:lower:]' '[:upper:]' すべての小文字を探し、すべて大文字に置き換える。 
sed -e '1d' result.txt ファイル example.txt から最初の行を除外する。 
sed -n '/string1/p' "string1"という単語だけを含む行を表示します。 
sed -e 's/ *$//' example.txt 各行末の空白を削除する 
sed -e 's/string1//g' example.txt 文書から "string1" という単語だけを削除し、残りはすべて残す。 
sed -n '1,5p;5q' example.txt 1行目から5行目までを表示します。 
sed -n '5p;5q' example.txt 5行目を表示します。 
sed -e 's/00*/0/g' example.txt 複数のゼロを単一のゼロに置き換えます。

sed -i '3i helloword' test.txt test.txt ファイルの 3 行目に文字列 'helloword' を挿入します。

sed 指定文字列で削除" のトピックです。

<ブロッククオート

sedで文字列にマッチした行を削除する。
構文: sed-i'/key character/d'filename
例1: Match "\countaininstall.sh"
set -i '//etc/install.sh/d' 1.txt
/ 検索
Matching \/etc/install.sh is "/etc/install.sh"
-i は、その操作がソース・ファイルに対して有効であることを意味します。それ以外の場合は、メモリ上のデータに対して操作し、ファイルには書き込まない。
セミコロン内の /d は、一致する行を削除します。
例2.
で始まる行を削除します。
sed -i '/^a.*/d' tmp.txt
^a は a で始まることを意味し、. * は任意の文字列が続くことを意味します。

例1:sedによるテキストの一括置換

#! /bin/bash

ddl_file_path=/c/Users/user/Downloads/sqoop_data/hive_2_mysql


ls $ddl_file_path | while read f;
do
echo "--------->"$ddl_file_path/$f

## Template
## sed -i 's///g' $ddl_file_path/$f
## Sed -i "s///g" $ddl_file_path/$f

sed -i 's/111.111.111.111:3306/222.222.222.222:3307/g' $ddl_file_path/$f
sed -i "s/'password_1'/'password_2'/g" $ddl_file_path/$f

done

# echo -e "=========>\n\t Files contains keyword "/WARN:" in path $ddl_file_path are deleted!!!! "
#! /bin/bash

set -x

## Template
#sed -i 's///g' $ddl_file_path/$f
#sed -i "s///g" $ddl_file_path/$f

## Func 1 - implements the insertion of the specified text in the fourth and fifth lines of all files

ddl_file_path=/e/fast_download/user_data_after

ls $ddl_file_path | while read f;
do    
    # Allow insertion only if the file is not a folder type
    if [ ! -d $f ];then
        echo "--------->"$ddl_file_path/$f

        sed -i '4i retries=10' $ddl_file_path/$f
        sed -i '5i retry.backoff=3' $ddl_file_path/$f
    fi
done


## Func 2 - if the folder does not exist, create it; if not, indicate that the file already exists

if [ ! -d "beijing" ];then
    mkdir beijing
else
    echo "File already exists"
fi

Shell scripts to determine the type of a file

The shell determines whether a file or directory exists or has permissions 
#! /bin/sh 

myPath="/var/log/httpd/" 
myFile="/var/log/httpd/access.log" 

# The -x parameter here determines whether $myPath exists and has executable permissions 
if [ ! -x "$myPath"]; then 
mkdir "$myPath" 
 fi 
 
 # The -d argument here determines whether $myPath exists 
 if [ ! -d "$myPath"]; then 
 mkdir "$myPath" 
 fi 
 
 # The -f parameter here determines whether $myFile exists or not 
 if [ ! -f "$myFile"]; then 
 touch "$myFile" 
 fi 
 
 # Other parameters are -n,-n to determine if a variable has a value or not 
 if [ ! -n "$myVar" ]; then 
 echo "$myVar is empty" 
 exit 0 
 fi 
 
 # Two variables to determine if they are equal 
 if [ "$var1" = "$var2" ]; then 
 echo '$var1 eq $var2' 
 else 
 echo '$var1 not eq $var2' 
 fi 

The full discriminatory logic of the file.
--------------------------------------------------------------------
-a file exists. 
-b file exists and is a block special file. 
-c file exists and is a character special file. 
-d file exists and is a directory. 
-e file exists (just the same as -a). 
-f file exists and is a regular file. 
-g file exists and has its setgid(2) bit set. 
-G file exists and has the same group ID as this process. 
-k file exists and has its sticky bit set. 
-L file exists and is a symbolic link. 
-n string length is not zero. 
-o Named option is set on. 
-O file exists and is owned by the user ID of this process. 
-p file exists and is a first in, first out (FIFO) special file or 
named pipe. 
-r file exists and is readable by the current process. 
-s file exists and has a size greater than zero. 
-S file exists and is a socket. 
-t file descriptor number fildes is open and associated with a 
-t file descriptor number fildes is open and associated with a terminal device. 
-u file exists and has its setuid(2) bit set. 
-w file exists and is writable by the current process. 
-x file exists and is executable by the current process. 
-z string length is zero. 

Note the difference between the -s and -f arguments





ファイルタイプのパラメータ判別の全リストです。

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
CLOSE_WAIT 2
ESTABLISHED 276
SYN_SENT 2
TIME_WAIT 63270


awk 'BEGIN {
   sum = 0; for (i = 0; i < 20; ++i) {
      sum += i; if (sum > 50) exit(10); else print "Sum =", sum 
   } 
}'


cat -n file1 は、ファイルの行数をマークします。 
cat example.txt | awk 'NR%2==1' example.txt ファイル内の偶数行をすべて削除します。 
echo a b c | awk '{print $1}' 行の最初の列を表示します。 
echo a b c | awk '{print $1,$3}' 行の 1 列目と 3 列目を表示します。 
貼り付け file1 file2 2つのファイルまたは2つの列の内容をマージする 
paste -d '+' file1 file2 2つのファイルまたは2つの列の内容を、間に "+" を入れて区別してマージします。 
sort file1 file2 2つのファイルの内容をソートする 
sort file1 file2 | uniq は2つのファイルの連結を取る(重複する行は1つだけ保持される)。 
sort file1 file2 | uniq -u で交点を削除し、残りの行を残す。 
sort file1 file2 | uniq -d 2つのファイルの交点を取り出す(両方のファイルに存在するファイルだけを残す)。 
comm -1 file1 file2 2つのファイルの内容を比較し、「file1」の内容だけを削除します。 
comm -2 file1 file2 2つのファイルの内容を比較し、'file2'に含まれる内容のみを削除します。 
comm -3 file1 file2 2つのファイルの内容を比較し、両ファイルに共通する部分のみを削除します。 

合成例です。

ローカル tcp 各種状態数

[hdfs@cdh01 test]$ head -n 5 /etc/passwd | cut -d : -f 1,3-5
root:0:0:root
bin:1:1:bin
daemon:2:2:daemon
adm:3:4:adm
xixi:4:7:xixi

カットで文字列を抽出する。

etc/passwd の 1,3,4,5 列目のデータを ":" で分割し、元のセパレータ "" でスプライシングして抽出します。

 1 void com.dustpan.zeus.core.service.MergeService.startService(int)|2
 2 void com.dustpan.zeus.core.service.InitShopDateService.startService(int)|1
 3 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|475
 4 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|96
 5 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|1013
 6 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|184
 7 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|729
 8 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|14
 9 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|394
10 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|90
11 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|569
12 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|796
13 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|1648
14 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|82
15 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|1018
16 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|14
17 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|937
18 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|17
19 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|601
20 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|52
21 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|5081
22 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|388
23 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|198
24 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|11
25 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|203
26 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|11
27 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|241
28 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|13
29 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|176
30 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|12
31 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|206
32 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|33
33 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|242
34 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|19



フィルタの重みにuniqを使用

cutの具体的な使い方は、以下の通り。

A). 重複する行を削除する 
ソート対象ファイル|uniq

B). 重複していない行を探す 
ソート対象ファイル|uniq -u

C). 重複する行を探す 
ソート対象ファイル|uniq -d

D). 各ファイルの出現回数を数える 
ソート対象ファイル|uniq -c

4: ソート

ソート linux のソートツール

 パラメータの説明です。

  •   -r 降順
  •   -u 重複排除
  •   -n 番号の大きさで並べ替える(デフォルトは頭文字)。
  •   -t セパレータを指定する ここではセパレータとして'|'を指定しています。
  •   -k セパレータの後にソートする桁数を指定する ここでは2桁目を指定しています。

task:report.txtファイルの内容は以下のとおりです。いくつかのメソッドの実行時間を記録し、実行時間の降順でソートすることを要求しています。

コマンド:sort -run -k 2 -t '|' report.txt

[hdfs@nn1 hive_sh]$ find . -type f | xargs grep -rn 'my_test_calendar' | cut -d : -f 1 | uniq

ケース1、このフォルダ内のmy_test_calendarキーワードを含むファイル(フルパス+ファイル名)をすべて探し出し、重み付けフィルタリングする。

検索キーワード「my_test_calendar」のテキストとキーワードが出現する行を含むファイルをhive_shディレクトリに問い合わせ、ファイル(ファイルパス+ファイル名)フィールドを抽出し、フィルタリングを行う。

#### # Script description
####
#### iterates through all the tables in the hive_tables.txt file (e.g. hive_table_1) to find if they are used in the file under the specified directory /data/program/hive_sh/. If you find a file with duplicate text, do the filtering.

####
#### cat query_table_usage_in_hive.sh 
#### -----------------------------------------------

#! /bin/bash

while read tbl
do
 
echo ------------------Handle table: $tbl--------------
find /data/program/hive_sh/ -type f | xargs grep -rn $tbl | cut -d : -f 1 | uniq > . /output/${tbl}_result.txt

done < hive_tables.txt

ケース2、指定したテキストが出現するファイルをすべて探し、重みをフィルタリングする(上級編)

ps auxw | head -1;ps auxw|sort -rn -k4|head -5

ケース3:メモリ消費量の多いアプリ上位3つを探し出す

:[addr]s/source string/target string/[option]


XV. vimのトピック 

大文字・小文字変換

: は  vimの大文字と小文字の変換_郭耀人 -- 青空白雲 - CSDNブログ_vimの大文字と小文字の変換

②. 文字列処理に関するトピック

概要を説明します。

<スパン 頭を挟む (左削除: ①#:左削除; ②#:欲張り左削除) 末尾を削除する (右削除:①%%:右削除、②%%:右欲張り削除)

1. linux シェルの文字列操作の詳細(長さ、読み込み、置換、インターセプト、連結、比較、削除、位置)。

2. Linux Bashシェル文字列の傍受

3. シェルインターセプト文字列

4. シェルスクリプトの文字列傍受の8つのメソッド

5.  Linux-shellスクリプトの文字列傍受

6.  シェル変数の意味 $#,$@,$0,$1,$2 in linux 解説 /${}, ##, %%のシェル使用例 /export

7. シェルコマンドにおける特殊置換、パターンマッチ置換、文字列抽出と置換

8. シェル変数の文字置換

③. viによるテキスト操作

vi/vimで指定した文字列を各行の先頭または末尾に挿入します。

行頭:%s/^/your_word/。
行末:%s/$/your_word/。

主なアクション

コメント ( カラムモード 方法): ctrl+v で列編集モードに入り、カーソルを下か上に移動し、コメントしたい行の先頭をマークし、大文字の I を押し、"#" のようなコメント文字を挿入し、Esc を押すと、すべてコメントされるようになります。

削除:まずvを押して、ビジュアルモードに入り、水平方向の列数を選択し(例えば、"#"のコメント記号は、2列を選択する必要があります)、Escを押し、ctrl+vで列編集モードに入り、カーソルを下か上に移動し、コメント部分を選択し、dを押すと、コメント記号(#)が削除されます。

追記:もちろんシェルのコメント文字 "#" である必要はなく、 "//" でも、他の文字でも構いません。vim はコメント文字が何であるか知りません。

vimカラム編集モード

replaceコマンドを使用する。

置換コマンドの構文。

:%s/source string/target string/g


グローバルな置換を行う。

:<<!
# Content to be commented
! 

パラメータの説明。

  • [addr] - 取得する範囲を示します。省略された場合は、現在の行を示します。
    • "%":ドキュメント全体を表します。
    • となります。,$": 現在の行からファイルの終わりまで。
  • s: 置換操作を示す
  • [オプション]: 操作の種類を示す
    • g: グローバル置換
    • c: 確認が行われることを示す
    • p: 結果を一行ずつ置き換えることを意味します(Ctrl+Lで画面を元に戻す)。
    • Omitオプション:デフォルトでは、各行の最初にマッチした文字列のみを置き換えます。
  • ソースとターゲットの文字列に特殊文字がある場合、" \" エスケープを使用します。

コンテンツのすべての行の先頭に // コメントを追加する
:% s/^//g

2~50行目の先頭に // 記号コメントを追加
:2,50 s/^//g

2行目から50行目までの冒頭の//記号を削除します。
:2,50 s/^/g

グローバルリプレイスメント(全置換、全置換)。

:%s/元の文字/置き換えたい文字/g

vimの基本操作

コマンドモードでは

1. 指定した行を塗りつぶす、例えば5

:5

2. 最終行までスキップ

g(シフト+g)

3. 行頭へジャンプ

gg

4. N行目(例:7行目)へ進む

7G

5. 全コンテンツの削除

A). shift+gで最終行に移動する

B). コマンドモードで:1,.dと入力

導出する。3行目から最終行まで深い

A). shift+gで最終行に移動します

B). コマンドモードで :3,.d と入力する

6. カーソル位置の文字を削除する

x

7. テーブルオーバーの前の文字(大文字のX)を削除する。

X

8. 次の単語の先頭まで削除

dw

9. この単語の最後までを削除する

10. 句読点を含む語尾までの削除

dE

11. 前の単語まで削除

デブ

12. 句読点を含む前の単語まで削除

デシベル

13. 行全体を削除する

dd

14. カーソル位置から行末までを削除する

ud$

15. カーソル位置から行頭まで削除する

d0

vimでは、"."は現在行、" 1,." は先頭行から現在行まで、" d" は削除、3ddは3行削除を意味します。

⑤. シェルスクリプトのコメント(1行コメント/複数行コメント)