バックエンドエンジニア 勉強#1 Linux

ポートフォリオを作成していて、Linuxを触ることがあっても使っているコマンドはcd 、ls、などの基本的なものばかりでいまいちLinuxを使っているというよりただコマンドを打っている感じが強かったのでLinuxについてまとめてみようと思います。


Linuxとは

PCのwindows、スマホのiOS、Andoroidなどと同じOS(オペレーションシステム)の一つ

特徴、できること

・無料で誰でも使えるオープンソース
・開発、改良、再配布行為が認められている
・新しいOSを開発できる
・サーバを自由に構築できる

メリット

・導入コストがかからない
→無料のため導入コスト0、大量のサーバー用PCを必要とする現場では重宝 
 される

・低スペックのデバイスでも使える
→必要最低限の機能だけを備えているので軽量

・ディストリビューションが豊富
→ディストリビューション(さまざまな団体や企業がLinuxをベースに開発・
 再配布している亜種のOS)が無料で多数配布されている
 例:Ubuntu、Debian、Fedoraなど

デメリット

・トラブルがあった時は自己解決する必要がある
→サポート企業がいないのでトラブルが起きた時のサポートがない

・他OSで使えるソフトウェアが使えない
→Microsoft OfficeやAdobeシリーズなどの一部OSが使えない(ゲームも一部 
 はwindows前提になっていたりでアンチチートが働き起動できない)

Linux用語

カーネル  :ユーザーの支持を正しく反映させるOSの中核部分
       メモリ管理機能やネットワーク、ファイルシステムなど
シェル   :Linuxのカーネルの指示を伝えるためのツール
コマンド  :シェルへ入力する命令文
       例:cd、ls、cpなど
パッケージ :Linuxが導入しているアプリケーションの配布形態
       Linuxでは「RPM」や「DFN」などのパッケージ管理ツールを
       用いてアプリケーションをインストールする

よく使うLinuxコマンド

ディレクトリの確認

・pwd:今いるディレクトリの絶対パスを表示
・ls:現在のフォルダにあるファイルやディレクトリを表示
・cd:階層移動(カレントディレクトリの変更)

階層移動とファイルの操作

・mkdir: ディレクトリの作成
・touch:ファイルの作成、タイムスタンプの更新
・mv:ファイルやディレクトリの移動
・cp:フォルダやファイルのコピー
・rm:ファイルの削除
・tar:ファイルの圧縮、展開(tar形式)

テキスト処理

・cat: ファイル内容を結合して出力
・wc:単語数、行数を数える
・head:先頭からn行を出力
・tail:末尾からn行を出力
・sort:行単位でソート
・uniq:重複を排除
・grep:テキスト検索
・sed:文字列置換
・awk:unix伝統のプログラム言語
・xargs:標準入力をコマンドライン引数に変換
・less:標準入力をエディタっぽく表示
・>、>>:標準入力をファイルに書き出す

インストール関連

・apt、yum: コマンドのインストール
・sudo:ルート権限でコマンドを実行
・su:ユーザ切り替え
・echo:文字列の表示
・env:環境変数の表示
・which、whereis:コマンドの場所を探す
・source、.:設定の反映(ファイル内容を現在のシェルで実行)
・chmod:ファイル、ディレクトリのパーミッションを変更
・chown:ファイル、ディレクトリの所有者を変更
・systemctl:サービスの起動、停止など

OS関連

・date: 時刻の確認、設定
・df:ディスク空き容量の確認
・du:ディレクトリのサイズを確認
・free:メモリの空き状況を確認
・top:CPUやメモリの使用状況を確認
・ps:プロセス情報の確認
・kill:PIDを指定してプロセスを停止させる(シグナルを送る)
・pkill:指定したプロセス名を持つプロセスを一括で停止させる
・pgrep:指定したプロセス名を持つプロセスのPIDを表示
・netstat:ネットワークの状況を見る

その他

・find: ファイルやディレクトリを探す(パスの出力)
・history:コマンド履歴の参照
・diff:差分確認
・jobs:実行中のジョブを確認
・bg:指定したジョブをバックグラウンドに移す
・fg:指定したジョブをフォアグラウンドに移す
・&:バックグラウンド実行
・&&、||:2つのジョブの実行条件
・$()、<():コマンド置換、プロセス置換
・$?:直前のコマンドの終了ステータスを確認
・for:ループ処理
・vi:ファイルの編集
・make:プログラムのコンパイル
・curl:HTTPリクエストを出す
・rsync:ネットワーク越しにディレクトリ内容を同期
・ssh- keygen:sshの秘密鍵、公開鍵を作る
・npm:nodeのパッケージをインストールするなど
・git:git関連のコマンド


参考URL


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