男の子の教育-第2週の授業の前に試験問題をテストします


第2章第2週の授業前試験問題
2.1一級目次のフィルタリング
第1題既知の現在のディレクトリの下oldboyのすべての1級ディレクトリをフィルタする方法
(ヒント:oldboyディレクトリの下にあるディレクトリのサブディレクトリと非表示ディレクトリは含まれていません.つまり、1級ディレクトリのみです).
[root@lb01 ~]# mkdir /oldboy/{a..b}/{c..g}/{e..f} -p

方法1
[root@lb01 ~]# tree -L 1 -dfi /oldboy/
/oldboy
/oldboy/a
/oldboy/

treeコマンドパラメータ
-d     List directories only
-f     Prints the full path prefix for each file
-i     Makes tree not print the indentation lines
-L     Max display depth of the directory tree

方法2
[root@lb01 ~]# find /oldboy/ -maxdepth 1 -type d
/oldboy/
/oldboy/b
/oldboy/a

方法3
[root@lb01 ~]# ls -l /oldboy/|grep ^d|awk '{print $9}'
[root@lb01 ~]# ls -l /oldboy/|sed -n '/^d/p'|awk '{print $9}'
[root@lb01 ~]# ls -l /oldboy/|awk '/^d/'|awk '{print $9}'
a
b

方法四
[root@lb01 ~]# ls -F /oldboy/|grep /
[root@lb01 ~]# ls -p /oldboy/|grep /
a/
b/

lsのパラメータ
-F, --classify  append indicator (one of */=>@|) to entries
-p, --indicator-style=slash  append / indicator to directories

2.2前回のディレクトリへの切り替え
第2題/oldboyと/tmpディレクトリの切り替え
[root@lb01 oldboy]# pwd# 
/oldboy
[root@lb01 oldboy]# cd /tmp/# /tmp
[root@lb01 tmp]# cd -# 
/oldboy
[root@lb01 oldboy]# pwd# 
/oldboy
[root@lb01 oldboy]# echo $OLDPWD# , 
/tmp

2.3最近のファイルの表示
第3題1つのディレクトリには多くのファイル(ls-l表示時に多くの画面)があり、コマンドで最近更新されたファイルを最速で表示したいと思っています.どう思う?
[root@lb01 oldboy]# ls -lrt
  20
-rw-r--r-- 1 root root   16 8   25 22:24 c.sh
-rw-r--r-- 1 root root   16 8   25 22:24 b.sh
-rw-r--r-- 1 root root   16 8   25 22:24 a.sh
drwxr-xr-x 7 root root 4096 8   26 09:12 a
drwxr-xr-x 7 root root 4096 8   26 09:12 b
-rw-r--r-- 1 root root    0 8   26 09:35 chen.txt
-rw-r--r-- 1 root root    0 8   26 09:36 oldboy.txt

まとめ:
ls-lがディレクトリエントリをリストする場合、デフォルトはファイル名でソートされます.最新の更新されたファイルを見たい場合は、変更時間でソートされる-tパラメータを追加する必要があります.しかし、-tパラメータのみを追加すると、リストのソートはデフォルトで最近更新されたエントリが一番上にありますが、テーマの中でファイルが特に多く、画面の一番上に置くとローラーを滑らせて見る必要があります.だから、-rパラメータを追加し、逆ソートを代表する必要があります.デフォルトのソートとは逆です.
2.4ソフトリンク
第4題/アプリケーション/apache 2.2.17 ->/application/apache
apacheの構成時に実行されました./configure --prefix=/application/apache2.2.17 apcheをコンパイルするには、make installが完了した後、ユーザーがapacheパスにアクセスすることをより簡単にするには、/application/apache 2を必要とする.2.17ディレクトリはソフトリンク/application/apacheを作成し、内部開発者または管理者が/application/apacheを通じてapacheのインストールディレクトリ/application/apache 2にアクセスできるようにする.2.17の下の内容は、実現の命令を与えてください.(ヒント:apacheはWebサービスです)
[root@lb01 ~]# mkdir -p /application/apache2.2.17     
[root@lb01 ~]# ln -s /application/apache2.2.17/ /application/apache
[root@lb01 ~]# ls -lid /application/apache2.2.17/ /application/apache
142163 lrwxrwxrwx 1 root root   26 8   26 09:43 /application/apache -> /application/apache2.2.17/
142162 drwxr-xr-x 2 root root 4096 8   26 09:41 /application/apache2.2.17/

まとめ:
1.ディレクトリはソフトリンクのみ、ハードリンクはできません
2.シンボル接続ディレクトリのinodeは異なりますが、ハード接続ファイルの元のファイルまたはディレクトリのinodeは同じです.
3.ソフトリンクがファイルまたはディレクトリに相当するショートカット
4.シンボル接続を削除し、元のファイルまたはディレクトリに影響を与えない
5.元のファイルまたはディレクトリを削除すると、シンボル接続が無効になります.
2.5 7日前のファイルを削除する
第5題試験find命令
apacheサービスのアクセスログは、サーバのローカルディレクトリ/app/logsに日単位で記録されていることが知られています.ディスク領域が緊張しているため、最近の7日間のアクセスログしか保持できません.どうやって解決しますか?解決策または構成または処理コマンドを指定してください.(ヒント:apacheサービス構成から着手してもよいし、生成されたログから着手してもよい.)
回答:
7日前のログファイルを見つけて削除し、このコマンドをタイミングタスクのプロファイルに入れることで、自動削除が可能になります.
素材を準備する
mkdir /app/logs -p
cd /app/logs/
touch {1..10}.log

システムの時間を後で調整して、このように今作成したファイルは7日前の
[root@lb01 logs]# date
2016  09  09    00:00:01 CST

方法1
[root@lb01 logs]# find ./ -type f -name "*.log" -mtime +7|xargs rm
#  , .log , 7 , 。 , xargs , rm 。

方法2
[root@lb01 logs]# rm -f `find ./ -type f -name "*.log" -mtime +7` #  

方法3
[root@lb01 logs]# find ./ -type f -name "*.log" -mtime +7 -exec rm {} \;

2.6ファイルの動的変更をリアルタイムで表示
第6題システムサービスをデバッグする際、/var/log/messagesシステムログの更新をリアルタイムで表示したいのですが、どうすればいいですか?
回答:
[root@lb01 ~]# tail -f /var/log/messages#  
[root@lb01 ~]# tailf /var/log/messages#  , 

検証:
セッションをクローンし、コマンド/etc/initを入力できます.d/network restart,ファイル/var/log/messagesに変化が認められた
まとめ:
-f   , 
-F   -f , 

2.7行番号の表示
第7題軽量級ウェブサービスのプロファイルnginxを印刷する.confコンテンツの行番号と内容、どうすればいいですか?
1、cat-n行番号を表示する
[root@lb01 ~]# cat -n nginx.conf 
     1  chen001
     2  chen002
     3  chen003
     4  chen004
     5  chen005

2、nl専門表示行番号のコマンド
[root@lb01 ~]# nl nginx.conf 
     1  chen001
     2  chen002
     3  chen003
     4  chen004
     5  chen005

3、grep点はすべての内容を表し、まずすべての内容をフィルタリングし、次に前に行番号を付ける
[root@lb01 ~]# grep -n . nginx.conf 
1:chen001
2:chen002
3:chen003
4:chen004
5:chen005

4、awk NRは行番号を表し、カンマはデフォルトの区切り文字がスペースを表し、$0はすべてのドメイン、すなわち行全体の内容を表す
[root@lb01 ~]# awk '{print NR,$0}' nginx.conf 
1 chen001
2 chen002
3 chen003
4 chen004
5 chen005

5、vim表示行番号
[root@lb01 ~]# vim nginx.conf  #   :set nu      :set nonu
  1 chen001
  2 chen002
  3 chen003
  4 chen004
  5 chen005

まとめ:
専門的に行番号を表示するコマンドはnlで、正則的に示す特殊な記号、点は任意の文字を表し、^は...の先頭を表し、$記号は...の末尾を表し、はエスケープ文字を表し、awkの印刷機能は単一引用符で囲むことを忘れないでください.
2.8 POSTサービス
第8題Centosシステムをインストールし終わった後に、ネットのファイルがサービスNFSを共有することを望んで、ただ3級の上で機械をスタートさせて自ら起動して、どのようにしますか?
[root@lb01 ~]# chkconfig --level 3 nfs on
[root@lb01 ~]# chkconfig --list nfs
nfs             0:   1:   2:   3:   4:   5:   6: 

2.9システム運行レベル
第9題linuxシステムの運行レベルは一般的に0-6で、それぞれのレベルの意味を書いてください.
Linuxシステムの実行レベルのプロファイルは、/etc/inittabです.
0 - halt (Do NOT set initdefault to this)#  , 0
1 - Single user mode #  
2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#  , 3 
3 - Full multiuser mode#  
4 - unused#  
5 - X11#  
6 - reboot (Do NOT set initdefault to this)#  , , , 
id:3:initdefault: #  3 , , 

2.10中国語文字化けし
第10題linuxシステムの中で中国語の文字化けして、どのように文字化けして問題を解決しますか?
方法1:現在有効
[root@lb01 ~]# echo $LANG#  LANG
en_US.UTF-8
[root@lb01 ~]# export LANG='zh_CN.UTF-8'#  
[root@lb01 ~]# echo $LANG               
zh_CN.UTF-8

方法2:永続的に有効になり、プロファイルに書き込む
[root@lb01 ~]# cat /etc/sysconfig/i18n #  
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
[root@lb01 ~]# echo 'LANG="zh_CN.UTF-8"' >/etc/sysconfig/i18n
#  , 
[root@lb01 ~]# source /etc/sysconfig/i18n #  

方法3:システムグローバル環境変数プロファイルに永続的に有効にする
[root@lb01 ~]# echo "export LANG='zh_CN.UTF-8'" >>/etc/profile
[root@lb01 ~# . /etc/profile #  

検証:
[root@lb01~]#echo$LANG#変数LANGをプリントアウト
zh_CN.UTF-8
まとめ:
中国語の文字化けしは文字セットが一致しないため、デフォルトの文字セット変数を中国語のUTF-8タイプに変更する必要があります.sourceというファイルの下で、プロファイルを有効にすることも覚えておいてください.
2.11最適化システム
第11題はどのようにlinuxシステムを最適化しますか(あまり具体的に言わなくてもいいです)?
1.ファイアウォールを閉める
2.selinuxを閉じる
3.電源投入のデフォルト運転レベルを3に設定
4.シン・スタートアップ・セルフ・サービスは、network、network、crond、rsyslog、sysstatの5つのみ保持
5.タイミングタスク、同期時間
6.中国語文字セット
7.ファイル記述子を大きくする
8.余分なシステム仮想アカウントの注釈
9.linuxバージョン情報の表示を隠す
10.bashセキュリティ、たとえばアイドルタイムアウト時間、コマンド履歴の数
11.定期的にメールサービスの一時ディレクトリのゴミファイルを整理する
12.カーネルパラメータの最適化
13.キーシステムファイルをロックし、権利の改ざんを防止する
14.sshdサービスを最適化する.例えば、空のパスワードを許可しない、rootユーザーのリモート接続を許可しない、リモート接続のポートを変更するなど
15.sudoは、一般ユーザーがサーバをリモートで管理できることを許可する
16.grubメニューにパスワードを付け、シングルユーザーモードに入ることを防止し、rootパスワードを解読する
17.ping禁止
18.脆弱性のないソフトウェアのアップグレード
2.12梱包と圧縮
第12題/etc/ディレクトリlinuxシステムのデフォルトのプロファイルとサービス起動コマンドのディレクトリ
1.tarで/etcディレクトリ全体をパッケージングしてください(パッケージングおよび圧縮)
2.tarで/etcディレクトリ全体をパッケージングしてください(パッケージングおよび圧縮しますが、/etc/servicesファイルを除外する必要があります)
3.a点コマンドの圧縮パッケージを/tmp指定ディレクトリに解凍してください(tarコマンドのみで実現することが望ましい)
回答:
第一小題
[root@lb01 ~]# cd /#  
[root@lb01 /]# tar zcvf etc.tar.gz ./etc
# z gzip ,c ,v ,f , ,f , 。
[root@lb01 /]# du -h etc.tar.gz #  9.3M
9.3M    etc.tar.gz

第二小題
[root@lb01 /]# tar zcf etc.tar.gz ./etc --exclude=./etc/services
[root@lb01 /]# tar tf etc.tar.gz |grep /etc/services
#  :t , 

第三小題
[root@lb01 /]# mkdir /tmp/etcbak#  
[root@lb01 /]# tar -zxf etc.tar.gz -C /tmp/etcbak/
# x ,C 
[root@lb01 /]# ll /tmp/etcbak/etc/# 

まとめ:
一般的な使い方:パッケージングパラメータ:zcvf解包パラメータ:zxvf
注意:tarはパッケージで、圧縮ではありません!
パッケージと圧縮の概念
  • パッケージングとは、大量のファイルまたはディレクトリを合計ファイル
  • に変更することを意味する.
  • 圧縮は、いくつかの圧縮アルゴリズムによって大きなファイルを小さなファイルにする
  • である.
    なぜこの2つの概念を区別するのか.これはLinuxの多くの圧縮プログラムが1つのファイルに対してしか圧縮できないため、多くのファイルを圧縮したい場合は、まずこの多くのファイルをパケット(tarコマンド)にしてから圧縮プログラムで圧縮しなければなりません(gzip bzip 2コマンド).
    linuxの下で最もよく使われるパッケージはtarです.tarプログラムを使って打ったパッケージはtarパッケージと呼ばれています.tarパッケージファイルのコマンドは通常です.tarが終わる.tarパッケージを生成すると、他のプログラムで圧縮できます.
    tarコマンド共通パラメータ
    -z, --gzip# gzip 
        filter the archive through gzip
    -c, --create# 
        create a new archive
    -v, --verbose# , ……
        verbosely list files processed
    -f, --file=ARCHIVE# 
        use archive file or device ARCHIVE
    -t, --list  # 
        list the contents of an archive
    -x, --extract, --get# 
        extract files from an archive
    -C, --directory=DIR # 
        change to directory DIR
    --exclude=PATTERN# 
        exclude files, given as a PATTERN

    2.13指定文字列のフィルタ
    第13題grep命令を調べる
    次のコマンドと結果が知られています.
    [oldboy@test ~]$ echo "I am oldboy,myqq is 31333741">>oldboy.txt 
    [oldboy@test ~]$ cat oldboy.txt  
    I am oldboy,myqq is 31333741

    ファイルから「oldboy」と「3133741」の文字列をフィルタする必要があります.コマンドを指定してください.
    回答:
    [root@lb01 ~]# awk -F '[ ,]+' '{print $3,$6}' oldboy.txt  
    oldboy 31333741

    まとめ:
    -Fは区切り記号を指定します.このファイルの内容は1行しかありませんが、区切り記号にはスペースとカンマがあるので、[]で複数の区切り記号を囲み、後ろの+記号はこの複数の区切り記号を1つの区切り記号と見なします.
    2.14統計行番号
    第14題/etc/servicesファイルの内容をどのように表示しますか?
    方法1:wcで総数を出力してからフィルタリングする
    [root@lb01 ~]# wc /etc/services 
     10774   58104   641020 /etc/services
            
    [root@lb01 ~]# wc /etc/services |awk '{print $1}'
    10774

    方法2:wcの-lパラメータを直接用いて共何行を統計する
    [root@lb01 ~]# wc -l /etc/services 
    10774 /etc/services

    まとめ:
    wcコマンドは、ファイルごとにバイト数、文字数、総行数、単語総数、最長行の長さを印刷できます.
    wcコマンドのパラメータ
    -c, --bytes  print the byte counts
    -m, --chars  print the character counts
    -l, --lines  print the newline counts
    -w, --words  print the word counts
    -L, --max-line-length  print the length of the longest line
    #  : , 

    2.15指定した文字列が存在する行をフィルタする
    第15題/etc/servicesファイルは3306または1521の2つのデータベースポートの行の内容を含む.
    方法1
    [root@lb01 ~]# grep -E "3306|1521" /etc/services 
    mysql           3306/tcp                        # MySQL
    mysql           3306/udp                        # MySQL
    ncube-lm        1521/tcp                # nCube License Manager
    ncube-lm        1521/udp                # nCube License Manager

    方法2
    [root@lb01 ~]# egrep --color=auto "3306|1521" /etc/services
    mysql           3306/tcp                        # MySQL
    mysql           3306/udp                        # MySQL
    ncube-lm        1521/tcp                # nCube License Manager
    ncube-lm        1521/udp                # nCube License Manager