Linux(備忘録)

初めに

個人用備忘録まとめです。

誤った理解をしていましたら教えてください。

Linuxについて

 ・Linuxとは

コンプーター用のOS(オペーレーティングシステム)の一種。

つまり、コンピューター全体を管理しているプログラムのこと。

種類:『CentOS』・『Ubuntu』etc...


・CentOS

「Red Hat Enterprise Linux」のソースコードを元に開発が進められている無償のディストリビューション(サーバー構築する時に使用)


・Ubuntu(ウブントゥ)

メジャーな無償ディストリビューション

ディレクトリー構造、パッケージマネージャー、コマンド、使用方法、標準でインストールされているアプリ、自動で起動するプロセスが異なる。


・Linuxの特徴

オープンソースかつ、無償で品質の高いソフトウェアを利用できる。

世界中でサーバー用途として広く利用されているため信頼性が高い。

操作を自動化するための仕組みが用意されているため、サーバー運用が容易。


・ディストリビューション

即使用できるカーネルなどのソフトウェアを初めから組み込んだもの。

OSの中心核のカーネルとOSを構成する他のプログラムから構成される。

カーネルだけでは動かないため他のソフトウェアと組み合わせて使用する。


・パッケージマネージャー

PCに何のソフトウェアがインストールされたか記録する。

ソフトウェアの更新、削除を容易に行える。

EX) 『App Store、Google Play』のようなもの​

・パッケージをインストール
$ yum install ファイル名

・パッケージを更新
$ yum update ファイル名

・パッケージを削除
$ yum remove ファイル名 

・パッケージ一覧表示
$ yum lis


・シェル

入力したコマンドを解釈するソフトウェアのこと。

・ls

・ファイル、フォルダの一覧表示
$ ls

・cp

・ファイルをコピー
$ cp コピー元 コピー先

・mv

・ファイル移動
$ mv 移動させるもの 移動先

・ファイルのリネーム
$ mv 元のファイル名 変更するファイル名

・rm

・ファイル削除
$ rm 削除したいファイル名

・mkdir

・新規ディレクトリ作成
$ mkdir ディレクトリ名

・touch

指定したファイルが存在しない場合に空のファイルを新規作成するコマンド。

指定したファイルのアクセス時刻、更新時刻を現在、任意の時刻に変更可能。

・新規ファイル作成(アクセス時刻・更新時刻を現在に)
$ touch ファイル名

・sampleのアクセス時刻、更新時刻を(2020/12/2 15:00)に変更
$ touch -t 202012021500 sample

・cat『ファイルの内容を結合し表示する』

・ファイル閲覧
$ cat ファイル名

・ファイルの結合
$ ファイル1 ファイル2

・複数ファイル結合
$ cat ファイル1 ファイル2 ファイル3

・tail(ファイルの終わり部分の表示)

エラーログを確認できる。

サーバー構築する際はエラーファイルを末端に追加しておくことで新たに追加されたエラーログを確認できる。

・error.logファイルを確認
$ tail -f error.log

・終了する時
Ctrl + C


・vi

サーバー上で設定ファイルを編集したい場合のエディタ。

通常モードでは文字入力できない。

・ファイル名指定、ない場合新規作成される。
$ vi ファイル名

・ホームに移動
$ cd

・(sample)を(vi)で開く
$ vi sample

・インサートモードで編集
i

・変更を保存して通常モードに戻ります。
:wq

保存できない場合
:w !sudo tee % > /dev/null

・インサートモード(コマンド)

:w   ・・・ 作成、編集したファイル保存

:q   ・・・ vimコマンド終了

:q!  ・・・ 編集内容を保存しないで強制終了

:wq  ・・・ 編集内容を保存して強制終了する

i     ・・・ 文字入力可能になる 『i(インサートモード)』
      * ESCキーで通常モードに戻る

・検索

vimエディタで文字列検索

通常モードにて行う。

/文字列

enterをクリックし実行


・一般ユーザー、rootユーザー

ファイルに対しての権限の違い

一般は自分の許可されているファイルしか操作できない

rootユーザーには他のユーザーが所得するファイルも含めて、全てを制御する権限を持つ

SSHでリモートサーバーにログインする時にユーザー名を指定してログインすることで、リモートサーバーでの権限を調整することができる

$ ssh root@gmail.com
$ ssh yamada@gmail.com 

・sudo

sudoコマンドは現在のユーザー(rootユーザー)のまま他のユーザーに変わってコマンドを実行することができる。

(sudoが使用できる権限を他のユーザーに付与する必要がある)

(パスワードは必要ない)

・su

他のユーザーにログインし直すことができる

(成り代わるユーザーのパスワードが必要)

・パーミッション

ファイル、ディレクトリに対してどのような権限を許可するのかを規定したもの

・権限の種類

r ・・・(read)読み込み、ファイルの中身を確認

w ・・・(write)書き込み、ファイルの記述の追加、変更

x ・・・(execute)実行、ファイルの実行、ディレクトリを開く
・権限の確認
ls -l ファイルのパス

$ ls -l projects/sample
drwxr-xr-x 22 sample 745 9 14 12:00 sample

『rwx r-x r-x』で誰に許可されているか確認する

所有者      ・・・ r・w・xが可能 (マスター権限)

グループユーザー ・・・ r・xが可能 (グループに所属しているユーザー)

一般ユーザー    ・・・ r・xが可能 (その他のユーザー)


・chmod・chown

アクセス権限を書き換えるコマンド

$ chmod 与える権限の種類 権限を与えるファイル

r = 4
w = 2
x = 1

の合計しの3桁を入力する

EX)
・アクセス権限を確認
$ ls -l projects/sample
drwxr-xr-x  22 sample      745  9 14 12:00 sample

・アクセス権限を変更
$ chmod 777 projects/sample

・再度アクセス権限を確認
$ ls -l projects/sample
drwxrwxrwx  22 sample     745  9 14 12:00 sample

全てのユーザーが(r・w・x)を使用できるように変更した。

(表示の例)
7 ・・・ rwx
6 ・・・ rw-
5 ・・・ r-x
4 ・・・ r--
3 ・・・ -wx
2 ・・・ -w-
1 ・・・ --x
0 ・・・ ---

$ chmod 755 projects/sample

$ ls -l projects/sample
drwxr-xr-x 22 sample    745 9 14 12:00 sample


・ps

アクセス権限を書き換えるコマンド。

・自分以外のプロセスも表示
$ ps -a

・実行中のプロセスを表示
$ ps -r

・ユーザー名とプロセスが実行された時刻を表示
$ ps -u ユーザー名

・実行中の全てのプロセスに関してCPUの使用率などの詳細な情報つきで表示
$ ps aux

・パイプライン処理

コマンドの結果を次のコマンドに渡す処理のこと

$ 最初に実行するコマンド|左の結果を受けて最終的な結果を返すコマンド

EX)
$ ps aux | grep sample

・kill

プロセスのIDに対して特定のコマンドを実行することでプロセスを再起動したり、強制終了したりできる。

・プロセスを終了
$ kill プロセスID

・プロセス強制終了
$ kill -9 プロセスID


・SSH

・SSHとは

離れた場所にあるサーバーの中で作業する場合に使用する。

暗号、認証技術を利用してリモートサーバーと通信できる。

・メリット

通信を盗聴の危機性を回避して安全に作業できる。

サーバー上でファイル操作、設定ファイルの編集ができる。

データのバックアップをしたい時にサーバー上で圧縮できる。

ファイルの一括ダウンロードできるため時短に繋がる。

・SSHサーバとSSHクライアント

IPアドレスを指定してSSHコマンドを実行すればリモートサーバにログインできます。
$ ssh ログインユーザー名 @ IPアドレス

・cat

ファイルの中身を確認

$ cat ファイル名

・scpコマンド

送信先のディレクトを指定してファイルを送ることができるコマンド

# .sshディレクトリにローカル環境の公開鍵のファイル(id_rsa.pub)をコピー

$ scp ~/.ssh/id_rsa.pub [ユーザー名]@ [IPアドレス]:~/.ssh

この記事が気に入ったらサポートをしてみませんか?