☆☆ 新着記事 ☆☆

2018年10月6日土曜日

初心者が使う 基本のLinux コマンド 一覧

初心者が使うLinux コマンドと、コマンドを使う為の基礎事項も一緒にメモしておく。 


◆  Directory操作 ◆

 検索 
 $ find -name [ディレクトリ名] -type d   
 ** -type d でディレクトリを検索  type f でファイル検索

 例)
 [root@localhost /]# ls ./var/www
 cgi-bin  html

 [root@localhost /]# find -name html -type d
 ./var/www/html

 *findコマンドで検索できる範囲はcurrent directoryとその配下のdirectoryのみ。
 *全フォルダを検索したければ最上位のルートディレクトリで上記コマンドを実行。

◇ カレント・ディレクトリ内にあるディレクトリ・ファイルの確認
  $ ls  : lsコマンドは「list segments」の略

 (Option)-a
  $ ls -a

 (Option)-l (-lは、シンボリックリンクの表示オプション)
 各ディレクトリ・ファイルの属性(パーミッション等)が表示されます。
 $ ls -l 又は 単に $ll でも可。

 (Option)-Xl :ファイルを拡張子ごとにまとめる
  $ ls -Xl

  [root@localhost www]# ll
  total 0
  drwxr-xr-x 2 root   root     6 Jun 27 22:49 cgi-bin
  drwxrwxr-x 4 apache vpsuser 47 Dec  6 19:46 html
  [root@localhost www]# cd html
  [root@localhost html]# ls -l
  total 4
  drwxr-xr-x 5 root root 4096 Dec  6 19:32 blog
  drwxr-xr-x 3 root root   17 Dec  6 01:48 flaskpj

  (属性の読み方)
   drwxr-xr-x 2 root root 6 Jun 27 22:49 html
   rwx:所有者の権限
   r-x: 所有者が所属するグループの権限
   r-x: その他の人の権限
   2は解説がなく、
   root : 最初のrootは、所有者名
   root : 2番目のrootは、所有者グループ名
   最後の htmlが、対象のDirectory名

 (rwxの意味)
  -fileの場合
  r: 読める
  w: 編集して上書き保存できる
  x: コマンドとして実行できる ex) /bin/ls

  -directoryの場合 r: ファイル一覧が表示できる(lsが打てる)
  w: ファイル一覧を修正できる(rm, touch, mvとか)
  x: ディレクトリ内にcdできる。ディレクトリ内のfind, touch, rmはできない (Point計算)
  
 (数字の計算方法:意味)
  r:4 points  w:2 points x:1 points を
  権限グループごとに足し算。

  上記は、html directoryは '755'


現在いるディレクトリのPATHの表示。
 $pwd
 [○○○jp@○○ ~] $ pwd
 /home/users/0/○○○jp

◇ デイレクトリの変更
 1) cd [移動先ディレクトリへのpath]
 cd ~ : 自身のホームディレクトリへ移動する。
 cd    : 自身のホームディレクトリへ移動する。
 cd /  :ルートディレクトリへ移動する。
 cd /home : ルートディレクトリの中のhomeディレクトリへ移動する。

 2) 前に実行したコマンドのディレクトリーに移動(mkdir の直後とかで使用)
 cd !$

ディレクトリの作成
  1) 基本:work01を作成する場合
   $ mkdir work01

  2) オプション(権限の指定)
  $ mkdir -m パーミッション指定 ディレクトリ名
  $ mkdir -m 666 work02

ディレクトリの削除
  1) 基本
  $ rm -r ディレクトリ名

 2)オプション(確認なしで削除)
   $ rm -rf ディレクトリ名

ディレクトリの移動
  1)基本
  $ mv 元のディレクトリ 移動先

  2-1)応用(カレント・ディレクトリ内の全ファイルを下位フォルダに移動)

  手順1) .(ドット)付のディレクトリを作る
  $ mkdir  .dir
  手順2) .(ドット)付のディレクトリに全ファイル移動
  $ mv *  .dir
  手順3) .(ドット)付のディレクトリを最終的な残すディレクトリ名に変更
  $ mv  .dir  dir

 2-2)応用(カレント・ディレクトリ配下のディレクトリにある全ファイルを現フォルダに移動)
  $mv フォルダ名/*  .    (最後のdotがこのディレクトリという移動先を示してます。)


ディレクトリ名の変更
 1) 基本: mv コマンドを使います。
 $ mv 元の名前 変更後の名前

ディレクトリ・Owner Permission変更

 1) Ownershipの変更

 # chown -R apache:apache * ← * の部分は具体的なdirectory/file名を指定することも可能

(Rは再帰的に実行する、という意味。 上のコマンドは、コマンドを実行したディレクトリに格納されている全てのディレクトリーとファイルに適用される。 (実行した時のCurrent Directoryは、chownの対象に含まれない。)

 2) permission(権限)の変更

   # chmod -R g+w *  <-symbol modeでの記述
   (simbol modeでの記述方法)

   記号   意味
    u     所有者
    g    所有グループ
    o   所有者でもなく、所有グループでもないその他のアカウント
    a   全ての意味。u,g,o全てを選択した意味となります。
  省略  ugoaを省略することも可能です。その場合は、「a」を指定したことになります。

   記号  意味
   +  選択したアクセス権を加える。
   -  選択したアクセス権を削除する。
   =  選択したアクセス権にする


  # chmod -R 755 *

  (ファイル・ディレクトリ属性)
  chownでファイルの所有者(ユーザーとグループ)の変更をし、chmodで書き込み権限を変更します。-R オプションをつけることで、「サブディレクトリにあるファイルも対象」になります。
  (ねこでもわかる 「さくら VPS」 を試してみる 第八回 -Wordpressインストール DB構築 :参照)

  通常WEBに公開するファイルのパーミッションはhtmlファイルやcssファイルなどは644ディレクトリは755で大丈夫。 htmlファイルやcssファイルを読み込むのは、一般のユーザではなく、apacheだから。 (その他のユーザでファイル又はディレクトリにアクセスする場合には、ドキュメント・ルートからファイルまでの全てのディレクトリと、実行するファイルに、実行権限 '1' が最低でもついている必要があります。'601' とか、'401' でも良いので。 ついていないとpermission deniedのエラーが出ます。)

 3))一連のPATHとファイルの実行権限を確認したいとき。
    namei -m [PATH とFile名] (*当然、PATHのディレクトリーのみでも可)
   [root@ofcm9och /]# namei -m var/www/html/templates/sample01.html
   f: var/www/html/templates/sample01.html
    drwxr-xr-x var
    drw-r-xr-x www
    drw-r-xr-x html
    drw-r-xr-x templates
    -rw-r-xr-x sample01.html


 File 操作

file検索
 find / -name "<ファイル名>"
 ワイルド・カード "*" 使用可能。
 又は、
 find / -name "<ファイル名>" -type f
 でも可。

◇ 作成・追加
 $ touch ファイル名

◇ 削除
 $ rm ファイル名
(確認なしは rm -rf ファイル名)

コピー作成
 cp 元ファイル名 新ファイル名

 新ファイル名を元ファイル名+日付で指定。
 cp -piv /etc/selinux/config /etc/selinux/config.`date "+%Y%m%d_%H%M%S"`

-p, --preserve  オーナー,グループ,パーミッション,タイムスタンプを保持したままコピーする
(タイムスタンプを上のように不可するときは、 -p だけでも良い)
-i, --interactive  上書きされるファイルがあるときは問い合わせする
-v, --verbose  コピーの前に,ファイル名を表示する

移動
 $ mv ファイル名 移動先

 例)
  [root@localhost html]# mv test.py ../../../root/flaskpj
 [root@localhost html]# cd ../../../root/flaskpj
 [root@localhost flaskpj]# ls -a
 .  ..  test.py  venv

名前の変更
 $ mv 元ファイル名 新ファイル名

  ◆アーカイブ・ファイル tar の取り扱い
   tar はアーカイブするだけで圧縮していないが、zオプションがついていると圧縮されている。
   オプションは、どの順番で書いても構わない。
   tar zxvf Python-3.5.2.tgz
   tar xvfz mod_wsgi-4.6.5.tar.gz

 オプション: -x  :書庫からファイルを取り出す(tarファイルを展開する)
  オプション: -v(--verboseオプション):処理したファイルの一覧を表示する
  オプション: -f : 指定したファイル名を使用する
  オプション: -z : gzipを通し処理する(拡張子:.gz)
  オプション: -a : 圧縮形式を拡張子から自動認識

 パッケージの管理
 
yum系、rpm系コマンドともルート・ディレクトリで実行する。
yumの使用を優先し、出来ないものがあればrpmコマンドを使用。

yum系コマンド

   1) インストールされたパッケージの確認
     $ yum list [installed|updates|available|extras]

   2) 利用できるパッケージ情報の確認
     $ yum list available | grep php
      php.x86_64                                5.4.16-46.el7                  base
 
      cf) pipで取得できるパッケージ・バージョンの確認
      pip install [パッケージ名] ==

   3) パッケージをインストールする
  yum install [パッケージ名]
     yum install -y python-pip --enabl erepo=epel を実行すると
  python2-pip.noarch 0:8.1.2-8.el7 がインストールされた。 何?


  (?? インストールするディレクトリを指定する: --installrootの指定 ??
  yum --installroot=/path --releasever=7 install postgresql93-server
  (pathはabsolute path)

   yum --installroot = /home/tw_virtualenv/lib/python3.7/site-packages install  python-pip   
   --enablerepo=epel
-   ではエラー。
   調べると
   -installrootオプションはchroot内に新しいLinux環境を作成しようとする際 に、
         そのchroot内にパッケージをインストールなどするために使用されます。
        できないのか?

  (インストールするディレクトリを指定する: --downloaddirの指定
   yum install nginx --downloadonl --downloaddir=DownloadDir


  3) インストール済みのパッケージをアップデートする
     yum update
  (yum自身のアップデート: yum update yum)

     yum upgrade
    yum update --obsoletesと同じ
    --obsoletesは、パッケージの更新時にのみ有効なオプションで、不要になった
    パッケージの削除を自動で行う 。
  CentOSでは、/etc/yum.confにobsoletes=1と書いてあるため、デフォルトで--obsoletes
  有効の状態なので、yum updateyum upgradeも変わらない。
 
  4) プロセスの強制終了
  何らかの理由で以下のメッセージが出て、新しいyumコマンドが実行できない時。
   Another app is currently holding the yum lock; waiting for it to exit...
    The other application is: yum
   $ rm -f /var/run/yum.pid
 
  5) wget の取得
   # yum install wget


rpm系コマンド
 Linux系ディストリビューションに標準でついてくる rpmコマンドを使用。 なければインスール
 する必要がある。

  1)インストールされたパッケージの確認。
   # yum list installed | grep パッケージ名
   $ yum list | grep httpd  <-Apacheのパッケージであるhttpdの表示
     httpd.x86_64                            2.4.6-88.el7.centos       base
     httpd-devel.x86_64                      2.4.6-88.el7.centos       base
     ****省略****
     python2-keycloak-httpd-client-install.noarch

   # rpm -qa | grep パッケージ名
   (rpm -qa パッケージ名  だけでも動くが、一気に表示されてしまう。)

   (オプション)
      | less ゆっくり一覧表示

      |  grep
     grepで指定した条件に合致するものだけを表示。


レポジトリ(epel)
    1) epel リポジトリの追加
     [root@ /]# yum install epel-release
     Installed:
     epel-release.noarch 0:7-11
     Complete!

    2)epel レポジトリ・オフ
     # vi /etc/yum.repos.d/epel.repo
     [epel]
     enabled=1
     ↓変更
     enabled=0


   3) レポジトリを使う場合は、使うことを明示
   $ yumにオプション 
    --enablerepo=epel  を指定
   ♯ yum install --enablerepo=epel, certbot python2-certbot-apache

   $ yum install --enablerepo=remi,remi-php71 phpMyAdmin

    4) レポジトリがインストールされているか確認
    [root@ /]# rpm -qa | grep "epel"
    epel-release-7-11.noarch

 テキストの操作  

実際の利用例は、
【 Linux の ログ格納場所一覧 と SSH アクセスログをみる  】

  ◇cutコマンド
  テキストファイルを横方向に分割するコマンド

  -d (オプション--delimiter):区切り文字を指定する
  (-dオプションは、次の-fオプションと組み合わせて使用する。)
  -f (オプション--fields):
  -dオプションによって区切られた項目の中で取り出したい項目を項目数で指定する

  ◇Sort コマンド
  ファイルの内容を並べ替えるコマンド
  書式は、[$ sort ファイル名]だが、ファイルに書き出したい場合はリダイレクトして
  [$ sort 並べ替え対象ファイル > 並べ替え出力ファイル]

  -n(オプション--numeric-sort):数値として並べ替える。
  -r(オプション--reverse):降順で並べ替える。

  ◇uniqコマンド
  ファイルから重複する行を削除するコマンド
  -cオプション:(--countオプション):重複した行数も表示する

  ◇wcコマンド
  ファイルの大きさを確認する
  書式は、[$ wc ファイル名]
  行数、1白で区切られた単語数、ファイル容量(バイト数)の順で表示される。
   ( -l オプションは、行数のみ表示)

  [root@ httpd]$ wc access_log
  1141  21934 206777 access_log

 ログの確認  

◇ tail コマンドで。
  リアルタイムで確認する
  (logファイルの存在するディレクトリーで)

  tail  -f [ ログファイル名 ] リアルタイムで操作ログが表示されていく。

  又は

  tailf   [ ログファイル名 ] 直近の操作ログを表示。

  *直近のログ 10行を表示。 新しくログが書き込まれると自動的に表示するので、ほぼリアルタイムだが、
tailfはイベントが発生するまでモニターを止めているので、サーバー負荷がかからない。 

 終了するには、' ctl + c '


 ◇ less <ファイル名> コマンドで
  • q:less終了(quit)
  • f:次のページを見る(forward)
  • b:前のページを見る(backward)
  • j:1行下へ
  • k:1行上へ
  • g:ファイルの先頭へ移動
  • G:ファイルの末尾へ移動
  • /キーワード:前方検索。nで次の検索一致へ移動。Nで前の検索一致へ移動。
  • ?キーワード:後方検索。nで次の検索一致へ移動。Nで前の検索一致へ移動。
  • F:監視状態。tail -fと同じ機能。Ctrl + cでless状態に戻る。
   Fで監視状態になり、止めたい時はCtrl + cで止めて/キーワードで検索することが可能。



 ユーザの管理  

  1) ユーザーの追加
   # useradd usertest
   *home Directoryにユーザが追加されます。
   *所属グループは、指定しなければユーザ名となります。

  2) 特定のユーザ情報を確認
   $ cat /etc/passwd |grep [ ユーザー名 ]
   [root@ home]# ls -a
   .  ..  vpsuser
  $ cat /etc/passwd |grep vpsuser
  vpsuser:x:1000:1000::/home/vpsuser:/bin/bash

  表示される情報は、左から、
  ・ユーザー名 ・パスワード(xで表示される)・ユーザーID(UID)
  ・グループID ・何も表示されない箇所は作成時に任意でつけるコメント
  ・ユーザーのホームディレクトリ
  ・シェルの場所



 PATHの管理 

  1) Pathの確認
   [@  /]$ echo $PATH

     (CentOS 7の初期設定)
  
   (結果)
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

 2) Symbolic Linkの作成
     lnコマンド:ファイルに複数のパス名を付加します。
   $ ln -s [元のファイルパス名]  [新しいファイルパス名]

       ln -s /usr/local/bin/python3.5 /usr/bin/python3

 Memory / Diskの管理 


1) メモリー容量の確認。
- free コマンド: 現在のメモリ使用量

[root@] # free -m (-m で, mega bite 単位 -g でgiga bite単位)
              total        used        free      shared  buff/cache   available
Mem:            992         184         606           2         201         651
Swap:          1023         103         920

- top コマンド: 実行中のプロセスの状態を確認
[root@] # top
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
    1 root      20   0  125272   2716   1656 S  0.0  0.3   0:03.72 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd

2) ディスク容量の確認。

   [root@] # df -h
  Filesystem      Size     Used    Avail Use% Mounted on
 /dev/vda4        16G    2.0G      14G  13%        /
  devtmpfs        233M     0       233M   0%    /dev
  tmpfs            244M     0       244M   0%    /dev/shm
  tmpfs            244M  4.5M   240M   2%    /run
  tmpfs            244M     0  2    44M   0%    /sys/fs/cgroup
  /dev/vda2       497M  222M  276M  45%  /boot
  tmpfs              49M     0        49M   0%   /run/user/1000

 システムの管理  

OSの再起動
shutdown -r now




参考: https://qiita.com/Tocyuki/items/2e811cedd53b58b10270

0 件のコメント:

コメントを投稿