20211126のLinuxに関する記事は5件です。

【Linux】LInux基本コマンドまとめ

Linuxって何? LinuxはOSの一種でコンピュータを動かすための基本ソフト OSとはシステム全体を管理し、さまざまなアプリケーションソフトを動かすための最も基本的なソフトウェア ※Windows, Mac, Unix(LinuxやBSDなと含む),Androidなど Linuxはどこで使われている? サーバー、組み込み、デスクトップといった幅広い用途で使われている。 Linuxの特徴 ・オープンソースなので誰でも自由に使える。 ・品質の高い多くのソフトウェアが利用でき、世界中で使用され信頼性も高い ・サーバーとして用いられていることが多い カーネルとディストリビューション 「Linux」は、厳密には二つの意味で分けられます。 ・中核となるソフトウェア:Linuxカーネル。 ・カーネルに色々なソフトウェアを組み合わして使いやすくしたもの:Linuxディストリビューション。 Linuxカーネルについてわかりやすくまとめられています。 https://qiita.com/uguis410/items/17ec1e447e9716bfdca7 代表コマンドまとめ cd change directoryの略 ディレクトリを移動するコマンド ディレクトリ 意味 指定方法 カレントディレクトリ 現在自分がいるディレクトリ 「.」 親ディレクトリ 一つ上の階層のディrクトリ 「..」 ホームディレクトリ 「/home/ユーザー名」ディレクトリ 「~」 ルートディレクトリ 「/」ディレクトリ 「/」 pwd print name of working directoryの略 カレントディレクトリ(今いるディレクトリ)を表示するコマンド 一番親の階層から、自分がいる階層までのパス(流れ・繋がり)を表示する ls listの略 ファイルやディレクトリの一覧を表示するコマンド こちらのqiita参照 https://qiita.com/chihiro/items/6e1404c41e1236a9efe1 mkdir make directoryの略 ディレクトリを作成するコマンド -p 必要に応じて親ディレクトリも作成する $ mkdir dir1 (カレントディレクトリに「dir1」というディレクトリを作成する) $ mkdir dir1/subdir (「dir1」の中に「subdir」というディレクトリを作成する) $ mkdir -p dir1/dir2/dir3 (「dir1」「dir1/dir2」「dir1/dir2/dir3」というディレクトリを作成する) cat concatenateの略 ファイルの中身を表示するコマンド -n 表示する内容に行番号をつける $ cat sample1.txt red blue yellow green orange white black $ cat -n sample1.txt 1 red 2 blue 3 yellow 4 green 5 orange 6 white 7 black touch touchの略 空のファイルを作成するコマンド rm removeの略 ファイル・ディレクトリを削除するコマンド -r ディレクトリも合わせて削除する -f ファイルを削除する際に警告文を表示しない -i ファイルの削除前に確認する mv moveの略 ファイルの移動、ファイル名を変更するコマンド -i 上書きする前に確認する こちらのqiita参照 https://qiita.com/nasuB7373/items/f46fe8dc7ffc7a26b249 cp copyの略 ファイル、ディレクトリをコピーするコマンド -i 上書きする前に確認する -r ディレクトリをコピーする find findの略 ファイルを検索するコマンド -name ファイル名、大文字小文字を区別してファイルを検索 -iname ファイル名、大文字小文字区別せずファイルを検索 -type ファイルの種類で検索 -a 複数の検索条件を指定 -aは省略可能 chmod change modeの略 ファイルやディレクトリのパーミッションを設定する こちらのqiita参照 https://qiita.com/shisama/items/5f4c4fa768642aad9e06
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxサーバーの使用メモリ量が全体の80%に達した時に特定のコマンドを実行する

はじめに cronでLinuxサーバーの使用メモリ量が全体の80%に達した時に特定のコマンドを実行するための動作確認とcron設定を行った際のメモです。 参考記事 コマンド コマンド例 [[ $(free | head -2 | tail -n 1 | awk '{print $3/$2}') > 0.8 ]] && command 動作確認 動作確認 [root@linux userA]# free total used free shared buff/cache available Mem: 8166304 2272464 5094276 452 799564 5645496 Swap: 0 0 0 [root@linux userA]# [root@linux userA]# [[ $(free | head -2 | tail -n 1 | awk '{print $3/$2}') > 0.8 ]] && echo $? [root@linux userA]# [[ $(free | head -2 | tail -n 1 | awk '{print $3/$2}') > 0.2 ]] && echo $? 0 [root@linux userA]# 全体のメモリ量が 8166304。 現在の使用量が 2272464。 ですので現在の使用量割合は0.27で27%。 確認その1 [root@linux userA]# [[ $(free | head -2 | tail -n 1 | awk '{print $3/$2}') > 0.8 ]] && echo $? このコマンドを実行した結果、次の行に何も表示されないのは"echo $?"が実行されていないからです。 これは判定が 判定その1 0.27 > 0.8 のようになり判定結果がfalseになったからです。 次に、 確認その2 [root@linux userA]# [[ $(free | head -2 | tail -n 1 | awk '{print $3/$2}') > 0.2 ]] && echo $? 0 このコマンドを実行した結果、次の行に"0"が表示されたのは"echo $?"が実行されたからです。 これは判定が 判定その2 0.27 > 0.2 のようになり判定結果がtrueになったからです。 $?にはコマンドの実行結果(0や1)が入る。 echo $?の表示結果が0なのに、何故echo $?が実行されたの??? 0 && echo $? となりecho $?は実行されないはずでは??? と思われた方は先頭で記載している参考記事をご確認ください。 応用 最終的に私がやりたかったことでもあります。 使用量が80%を超えたらrebootを実行してサーバーを再起動したり、 [[ $(free | head -2 | tail -n 1 | awk '{print $3/$2}') > 0.8 ]] && reboot そのサーバーで稼働している主要サービスが1個だけなら、 [[ $(free | head -2 | tail -n 1 | awk '{print $3/$2}') > 0.8 ]] && systemctl restart xxx.service などでもよいと思います。 そしてcronでは cron * */1 * * * [[ $(free | head -2 | tail -n 1 | awk '{print $3/$2}') > 0.8 ]] && reboot とします。 参考コマンド 今回は全体のメモリ量から使用量がどうなったかで判断していますが、freeコマンドは使用可能量/空き容量も取得できますので、使用可能量/空き容量がいくらまで減ったかで判断することも可能だと思います。 さらに使用量の算出方法の以下のようなやり方がありますので、参考までに記載しておきます。 実行中のプロセス全部をカウントして使用量を求める ps aux | awk '{sum += $6}END{print sum}' 特定のプロセスだけに限定して求める top -b -c -n 1 | grep PROCESSNAME | grep -v grep | awk '{print $10}' | cut -d. -f1 最後に 管理するLinuxサーバーの台数が多い場合はZabbixとか監視サービスなどを利用するのも手かと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Laravel】画像保存処理実行時のエラー対処

Laravelで画像保存処理を実行中、遭遇したエラーと対処法をまとめました。 開発環境 PHP7.4 Laravel6 Bootstrap4.4 Docker20.10.8 前提 画像保存処理は実装済み テーブル作成・マイグレーション実行済み バリデーション実装済み フォーム作成済み プレビュー表示処理実装済み(JavaScript) Intervention Image インストール済み public artisan storage:link 実行済み ❗注意 コマンドをコピペして実行する際、コマンドの最後に余分なスペースが入らないよう注意しましょう。 コマンドが強制実行される場合があります。実行の際は慎重に。 目次 画像が正常に保存されない。 GD Library extension not available with this PHP installation.解決 1. 画像が正常に保存されない。 フォームをクリックして拡張子.JPEGの画像ファイルを選択。 プレビューも正常に表示 更新ボタンクリック後、プロフィール画面に遷移するはずが、バリデーションに引っかかり保存できない。 バリデーションは以下の通りです。(画像アップロード処理の部分のみ抜粋) src/app/Request/UserRequest.php public function rules() { return [ 'avatar' => ['file', 'image'], ]; } public function attributes() { return [ 'avatar' => 'プロフィール画像', ]; } Viewは以下のとおりです。(画像フォームのみ抜粋) src/resources/view/users/edit.blade.php <form method="POST" class="p-3 mb-1" action="{{ route('users.update', ["name" => Auth::user()->name] )}}" > @method('PUT') @csrf -----省略----- <div class="avatar-form image-picker text-center"> <input type="file" name="avatar" id="avatar" class="d-none @error('avatar') is-invalid @enderror" accept="images/png,image/jpeg" /> <label for="avatar" class="d-inline-block"> @if (!empty($user->avatar)) <img src="/storage/avatars/{{$user->avatar}}" class="rounded-circle" style="object-fit: cover; width: 125px; height: 125px;"> @else   <img src="/images/default.svg" class="rounded-circle" style="object-fit: cover; width: 125px; height: 125px;"> @endif  </label>  <div class="small">プロフィール画像をアップロードできます。</div>  @error('avatar')  <span class="invalid-feedback" role="alert">  <strong>{{ $message }}</strong>  </span>  @enderror </div> 色々調べてみた結果、formタグに以下一文が抜けていたせいで保存出来なかった事が判明 enctype="multipart/form-data" enctype="multipart/form-data"については以下の方の記事をご参考いただくと、理解が深まります。 以下のように修正します。 src/resources/view/users/edit.blade.php <!-- enctype="multipart/form-data"追加 --> <form method="POST" class="p-3 mb-1" action="{{ route('users.update', ["name" => Auth::user()->name] )}}" enctype="multipart/form-data"> 再度フォームをクリックして拡張子.JPEGの画像ファイルを選択。 プレビューも正常に表示 更新ボタンクリック後、プロフィール画面に遷移するはずが、今度は以下のエラーに遭遇。 GD Library extension not available with this PHP installation. 2. GD Library extension not available with this PHP installation.解決 調べてみたところ、インストール済みのIntervention Imageを使用するためには、GD Libraryがインストールされていなければならないことが判明 GD Libraryのインストール手順は、Dockerfileにコードを追加して行う方法と、 ターミナルコマンドで実行する方法があるが、私はターミナルコマンドでインストールしたので、その方法を解説します。 appコンテナに入って実行してください  以下コマンドでappコンテナに入る。(環境によってはコマンドが異なります) ターミナル $ docker compose exec app bash 以下のコマンドを上から順に実行(PHP7.4の場合) ターミナル # apt-get update # apt-get install -y zlib1g-dev libpng-dev libjpeg62-turbo-dev # docker-php-ext-configure gd --with-jpeg # docker-php-ext-install -j$(nproc) gd インストールできたらコンテナの再起動をしてください。 以下のコマンドで実行 ターミナル  $ docker restart コンテナ名 コンテナ再起動後、再び画像を保存してみる。 * 再度フォームをクリックして拡張子.JPEGの画像ファイルを選択。 * プレビューも正常に表示 * 更新ボタンクリック後、プロフィール画面に遷移し画像も正常に表示されました。 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Mac]getconfで参照できる構成変数と結果の全一覧TSVの作成

LinuxあるいはMacでシステム構成変数を参照するためにはgetconfコマンドがしばしば用いられる。 ビット数や最大値等の参照に便利だが、指定する構成変数を調べる必要がある。 簡単に全ての変数を知るためにはaオプションが必要だが、Macでは利用できない。 そのため今回はMacのgetconfで参照できる構成変数及び結果の全一覧TSVリスト作成のコマンドを記録する。 環境 Mac 20.3.0 結果 結果の記述は以下の通り。 strings $(command -v getconf) | grep -E '^_?[0-9A-Z_]+$' | awk '{printf($1"\t");system("getconf "$1"")}' ******************* LONG_BIT 64 LONG_MAX 9223372036854775807 LONG_MIN -9223372036854775808 MB_LEN_MAX 6 SCHAR_MAX 127 SCHAR_MIN -128 ******************** 結果をファイルにTSV形式で格納しておけば、検索や抽出が便利。 ※定義されているがエラーとなる構成変数もあるため、エラー出力も一緒にファイルへ格納する。 # ファイルへ格納 strings $(command -v getconf) | grep -E '^_?[0-9A-Z_]+$' | awk '{printf($1"\t");system("getconf "$1"")}' &> all_getconf_data.tsv # 検索 grep 'DARWIN' all_getconf_data.tsv DARWIN_USER_DIR /var/folders/76/***** DARWIN_USER_TEMP_DIR /var/folders/76/**** DARWIN_USER_CACHE_DIR /var/folders/76/**** # 抽出 grep 'LONG_BIT' all_getconf_data.tsv | cut -f 2 64 内容 変数一覧取得 まずgetconfのプログラムを確認するためにcommand -vでファイル名を出力。 名前が/usr/bin/getconfのバイナリファイルのため、stringsコマンドで中身を可視化する。 中身は「簡単な説明・利用方法・構成変数一覧」とまとめらている。 構成変数一覧は大文字でまとめられているため、grepで正規表現で取り出すと以下のような一覧の出力が可能。 ※Linuxではより多くの情報で記述されているため、更に絞り込む必要がある。 PATH POSIX_V6_ILP32_OFF32_CFLAGS POSIX_V6_ILP32_OFF32_LDFLAGS POSIX_V6_ILP32_OFF32_LIBS ******* ******* 実行及び整理 参照できる構成変数一覧が出力されたため、一つ一つにawkでgetconfコマンドを実行。 その際に出力が以下のような対応表のTSVになるようにawkで整理。 構成変数名 値 ***** * ***** * ***** * 参考 https://docs.oracle.com/cd/E62101_01/html/E62874/getconf-1.html
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

オリジナルCコンパイラ neo-c2 version 2.0.0リリースです。BoehmGCのみとなりました。Python, viクローンもBoehmGCに対応

タイトル通りです。少しソースコード本体にはオリジナルヒープシステムのコードも混じってますが とりあえず、マニュアル、Python, viの方はBoehmGCのみとしました。 C + BoehmGC + Collection + String librariesという構成となっております。 今後はちまちまPython処理系の方作っていきます。メモリー管理を考えずコードが書けるので 気が楽ですね。viクローンの方も少しバグが減ってます。あとCollectionでBoehmGCを使った場合 バグがあったのですが修正してます。 よかったらどうぞ。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む