サーバのメモ


SQL(データベース)
# 基本コマンド(データベース)
CREATE DATABASE データベース名; # データベースの作成
SHOW DATABASE;                 # データベースの確認
DROP DATABASE データベース名;   # データベースの削除
USE データベース名;             # データベースの選択

# テーブル
DESC テーブル名;                           # テーブルの定義の確認
ALTER TABLE テーブル名 RENAME 新テーブル名; # テーブル名の変更
ALTER TABLE テーブル名 ADD フィールド名 データ型 オプション ...; # フィールドの追加
ALTER TABLE テーブル名 CHANGE フィールド名 新フィールド名 オプション; # フィールド変更
ALTER TABLE テーブル名 DROP フィールド名; # フィールド削除
DROP TABLE テーブル名; # テーブルの削除

# データベースの作成
CREATE TABLE データベース名.テーブル名 (
  フィールド名1 データ型1 オプション1 オプション2...,
  フィールド名2 データ型2 オプション3 オプション4...
);
## 例:
CREATE TABLE students (
  student_id VARCHAR(8) PRIMARY KEY, # 主キーの設定 PRIMARY KEY (student_id)としてもOK
  name VARCHAR(20) NOT NULL DEFAULT '山田', # NULL値を禁止, デフォルト値の設定
  gender ENUM('男', '女'),
  department_id BIGINT UNSIGNED AUTO_INCREMENT, # 自動で連番を入力
  admission_year YEAR,
  FOREIGN KEY (department_id) # 外部キーの設定
    REFERENCES departments(department_id)
    ON UPDATE CASCADE ON DELETE CASCADE # 親キーが変更,削除された時の動作
);
## ON UPDATEとON DELETEのオプション
          UPDATE           DELETE
RESTRICT  エラー            エラー
CASCADE   親キーの変更に追従 レコードを削除
SET NULL  NULLに置き換わる   NULLに置き換わる
NO ACTION RESTRICTと同じ    RESTRICTと同じ

# データ検索 SELECT
SELECT staff_code, staff_name # *で全て
FROM データベース名.staffs   # データベースを指定した場合FROM staffs;
WHERE value=0 # 条件
(GROUP BY)
(HAVING)
(ORDER BY)
LIMIT 5;

## 重複したデータを除外して表示 DISTINCT
SELECT DISTINCT 列名
SELECT
  SUM(quantity) AS sum,
  MAX(quantity) AS max,
  MIN(quantity) AS min,
  AVG(quantity) AS ave
FROM stocking_data;

## 例:stocking_dataのquantityが5以上のレコードをカウント
SELECT COUNT(*) AS data_length,
FROM stocking_data
WHERE quantity>=5;

## WHERE句の演算子一覧
a=b, a>=b, a>b, a!=b, a<>b
x BETWEEN a AND b     # xがa以上b以下
x NOT BETWEEN a AND b # xがa以上b以下を除いた部分
x IN (a, b, c)        # xがa, b, cのいずれか
x NOT IN (a, b, c)    # xがa, b, c以外のデータ
x LIKE 'Pattern'      # xがPatternに一致するデータ (%は任意のN文字_は任意の一文字)
x NOT LIKE 'Pattern'  # xがPatternに一致しないデータ
x IS NULL             # xがNULLのデータ
x IS NOT NULL         # xがNULL以外のデータ

## グループ化 GROUP BY
SELECT date
FROM stocking_data
GROUP BY date; 

## 例:stocking_dataでitem_code別に合計仕入数を集計し、集計結果を得る
SELECT
  item_code AS item,
  SUM(quantity) AS num
FROM stocking_data
GROUP BY item_code;

## 複数のグループ化
SELECT
  item_code AS item, 
  supplier_code AS supplier,
  SUM(quantity) AS num
FROM stocking_data
GROUP BY
  item_code,
  supplier_code;

## 集計結果の抽出 HAVING
### WHERE -> GROUP BY -> HAVINGの順に処理される
SELECT 
  staff_code AS code, 
  staff_name AS name
FROM staffs
HAVING staff_code='110';

# データの並べ替え ORDER BY
SELECT data, item_code, quantity
FROM stocking_data
WHERE quantity>=2
ORDER BY quantity ASC; # 昇順:ASC, 降順:DESC, 省略するとASC

## 評価順番
1. FROM句
2. WHERE句
3. GROUP BY句
4. HAVING句
5. SELECT句
6. ORDER BY句
7. DISTINCT句
8. LIMIT句

# データ入力 INSERT
INSERT INTO items # テーブル名
  (item_code, item_name, price)
VALUES('6004', '炭酸水', 2000);

# データ更新 UPDATE
UPDATE stocking_data
SET quantity = quantity+1;
(WHERE句)

# データ削除 DELETE
DELETE
FROM stocking_data;
(WHERE句)

Docker(コンテナ型仮想環境)
## コンテナイメージのダウンロード
docker pull mysql

## コンテナイメージを見る
docker images

## コンテナの作成と実行
docker run --name nish-mysql -p 13306:3306 \
 -e MYSQL_ROOT_PASSWORD={パス} -d mysql
# --name:コンテナの名前
# -p:ポートフォワード
# -e:環境変数の設定
# -d:コンテナイメージの指定

## 起動しているコンテナの一覧表示
docker ps
docker ps -a # 停止中のも見れる

## コンテナに入る
docker exec -it nish-mysql bash

## コンテナから抜ける
Ctrl + P, Ctrl + Q

## コンテナを停止
docker stop nish-mysql

## コンテナを起動
docker start nish-mysql

## コンテナを削除
docker rm nish-mysql

## コンテナイメージの削除
docker rmi mysql
【Docker入門】初心者向け!Dockerの基本を学んでコンテナ型の仮想環境を作ろう!
📘 サプーの書籍が絶賛発売中 📘 Amazon ▶︎ https://www.amazon.co.jp/dp/4297142856 「VTuberサプーが教える! Python 初心者のコード/プロのコード」 詳しくはこちらのライブで解説してます! https://youtube.com/live/Y9WBX26m4e0?feature=share ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Pythonプログラミングに関する情報を発信しているサプーです! この動画は仮想環境をサクッと作れるDockerを解説している動画です! ・Dockerとは? ・コンテナの起動方法 ・Dockerfileからイメージを作る方法 これらについて説明しています💙 実際にdockerを動かして実演しているので、最後まで見てもらえたら嬉しいです😊 💙 メンバーシップ 💙 説明動画 ▶︎ https://youtu.be/-Pc2SAxKSC4 登録 ▶︎ https://www.youtube.com/channel/UC5Kgc_HNzx4GJ-w4QMeeKiQ/join iPhoneの方はこらから ▶︎ https://twitter.com/PythonSuppl/status/1466049000658718729?s=20 💻 動作環境 💻 Windows 10 Python 3.9.0 ⭐️ チャプター ⭐️ 0:00 今日のテーマ「Docker」 0:35 Dockerとは? 8:15 Dockerの基本操作 22:46 Dokcerファイルからコンテナ起動 36:41 エンディング 🌎 参考URL 🌎 Docker インストーラ ▶︎ https://docs.docker.com/desktop/#download-and-install Docker Hub ▶︎ https://hub.docker.com/ Docker 操作コマンド ▶︎ https://docs.docker.com/engine/reference/commandline/docker/ Dockerfile 命令文 ▶︎ https://docs.docker.com/engine/reference/builder/ 💜 チャンネル説明 💜 Pythonプログラミングについて解説するVtuber サプーです✨ 初心者でも分かりやすく、Pythonを体系的に学習できるような動画をアップロードしていきます! みんなが少しでもPythonが好きになってくれたら嬉しいな💕 Twitterもやってるので、フォローお願いします! Twitter ▶︎ https://twitter.com/PythonSuppl メール ▶︎ python.supu.vtuber@gmail.com #Docker #コンテナ #仮想環境 #PythonVTuberサプー
https://www.youtube.com/watch?v=B5tSZr_QqXw&t=326s

uv(Python仮想環境)
# uvのインストール
uv init
uv python pin 3.10
uv venv

. .venv/bin/activate # 仮想環境を立ち上げる

uv add {何か} # パッケージ追加
uv pip list # リストの確認

screen(仮想セッション)
screen -S {何か} # 始める

screen -r {何か} # 途中から入る

ctrl+a d # ジョブを残したまま抜ける

ctrl+a k # 終了

screen -ls # ジョブの状態を確認

screen -d {何か} # 入れんくなった時

bushrc(環境変数)
  • コマンドを作成
    # 1.bushrcを開く
    
    # 2.書き込む
    alias myenv='. .venv/bin/activate'
    
    # 3.シェルの設定を反映
    source ~/.bashrc
    
    # 4.コマンドを打ち込むとそれが実行される
  • 環境変数の設定
    # 1.bushrcを開く
    
    # 2.書き込む
    export HUGGING_FACE_TOKEN="{自分のトークンの名前}"
    
    # 3.シェルの設定を反映
    source ~/.bashrc
    
    # 4.pyファイルなどでosでとってこれる
    import os
    os.environ["HUGGING_FACE_TOKEN"]
    os.environ.get("HUGGING_FACE_TOKEN")

Vim(テキストエディタ)
$vim {ファイル名} # vimを立ち上げる

Esc+i # 挿入

Esc+:wq # 保存

Esc+:q! # 保存せず終了

PS(プロセスの表示)
# よく使う
ps -eo user,pid,ppid,%cpu,%mem,stat,start,time | grep -E "^USER|^nishida"

ps aux # 履歴
ps aux | grep ^{誰か} # 誰かの履歴を見る
ps -eo # カラム指定(user,pid,ppid,%cpu,%mem,stat,start,time,command)
ps --sort=-%cpu # ソート、-をつけると降順
ps aux | head -n 10 # トップ10を表示

# stat(プロセスの状態)
R: 実行中(Running)
S: スリープ(待機中)
Z: ゾンビプロセス
T: 停止中
D: 割り込み不能なスリープ(ディスクI/O待ちなど)
わかりづらいLinux psオプションシリーズまとめ - Qiita
はじめに LinuC 101/102の資格を取得しようと学習していますが、psオプションのややこしさに毎回つまづいているため、psオプションについてまとめました。 psオプションのわかりづらいところはなんといってもハイフンが付くか付かないかによっても若干違いがあるところで...
https://qiita.com/kyrieee/items/f521eb0f07b7b16faa80

GitHub(コード管理・共有)
# gitの削除
rm -r .git

# gitのログ
git log
git status

# ブランチの作成(mainから切る)
git checkout main
git checkout -b develop
git add .
git commit -m "create develop"
git push origin develop

# 取り込み
git init
git branch -m main
git clone {----.git}

# ユーザ情報の登録
git config --global user.name "Your Name"
git config --global user.email "you@example.com"

# 更新
git checkout main
git pull origin main

# コミット
git add .
git commit -m "add files"
git push -u origin main

# マージ
git checkout develop
git pull origin develop
git checkout nishida
git merge origin develop

Jupyter

jupyter+venv

# 1. uv環境を作成 + 立ち上げる

# 2. jupyter kernelの作成
pip install ipykernel
ipython kernel install --user --name=projectname

# 3. pipを追加
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

# 4. ipynbを開き、カーネルを選択
# 5. 環境の構築
%pip install {何か}

CPU, GPU
  • GPU見たりする
    • 単体GPU
    nvidia-smi # GPU見る
    nviwatch # リアルタイムにGPU見る
    • 複数GPU
    nlpr    # GPUの空き具合
    squeue  # 誰が使っているか
    
    gpustat-m # GPUの空き具合と誰が使っているかを同時に見る
  • GPUの指定
    CUDA_VISIBLE_DEVICES=0,1

sbatch(ジョブスケジューラ)
  • ジョブの作成
    #!/bin/bash
    #SBATCH -J testJNMT       #ジョブ名。なんでもよい。
    #SBATCH -p luce           #指定しなければデフォルトパーテーションはopus、[opus,luce,lepin,ausone,varuna,ganesa,budha,hestia]この中から選ぶ。
    #SBATCH -o logs/%x_%j.log #標準出力先。この場合[ジョブ名]_[ジョブID].logというファイル名で保存される。
    #SBATCH -t 3-00:00:00     #ジョブの実行上限時間を指定。days-hours:minutes:seconds
    #SBATCH -c 4              #要求するCPUコア数指定。指定しなければ、1コアが割り当てられる。
    #SBATCH --mem=60GB        #要求するメモリ量。
    #SBATCH --gpus=1          #要求するGPUの枚数。指定しなければGPUは使えない。
    #SBATCH --mail-type=ALL   #ジョブの開始や終了などメールを受け取ることができる。 値はBEGIN, END, FAIL, ALL。メール送信の際は#を1個を外すこと。
    #SBATCH --mail-user=nishida@ai.cs.ehime-u.ac.jp   #メール送信先。メール送信の際は#を1個を外すこと。
    . ../.venv/bin/activate
    python3 -m joeynmt test small_parallel_jaen/model_3-1/config.yaml
  • 動かす
    sbatch run.sh
  • ジョブのキャンセル
    scancel -u {ユーザ名}

Linux(コマンド)
# ファイル操作
touch file.txt          # 空のファイルを作成
cp コピー元 コピー先     # ファイルのコピー
mv コピー元 コピー先     # ファイルの移動
rm file.txt             # ファイルを削除
cat file.txt            # ファイルの内容を表示
less file.txt           # ファイルの内容をページ単位で表示
head -n 10 file.txt     # ファイルの先頭を表示
tail -n 10 file.txt     # ファイルの末尾を表示
find / -name "*.txt"    # ファイルの検索
locate file.txt         # ファイルを高速に検索
grep "keyword" file.txt # ファイルから特定の文字列を検索
chmod +x file.txt       # ファイルのアクセス権の変更

# データの転送
curl # データを転送
wget -O ファイル名 URL # ファイル名でダウンロード

# コマンドリストを見る
compgen -c | sort | grep -i '^[a-zA-Z]'
compgen -c | sort | head -n 10 # トップ10

# 容量を見る
du -h  # 各ディレクトリの容量確認
du -sh # 全体の容量確認
df -h  # ディスクの空き容量を表示

history      # 履歴
echo ${何か} # .bashrcの環境変数を見る
date         # 日時を表示
uptime       # システムの稼働時間を表示
who          # ユーザを表示
Linuxコマンド集 - 現場でガチで使う100選!💪🔥 - Qiita
こんにちは!😊 Linuxって、 コマンド が たくさん あって、 覚えるの大変 ですよね?😥 「あれ?あの操作をするコマンドは何だっけ? 🤔」 なんて、 毎日格闘 している方もいるのではないでしょうか? 😅 そこで今回は、 Linuxエンジニア なら 知っておくべき 重要...
https://qiita.com/josephmonch/items/530e2e6c32887a50ac83
プロセスを終了するkillコマンドの使い方まとめ!【Linuxコマンド集】
killは実行しているプロセスを終了するコマンドだ。普通ではない動作をしているジョブやプロセスを終了する。他にも正規表現検索などでコンピュータに負荷をかけている動作を止める時などに使用する。
https://eng-entrance.com/linux-command-kill
【ps・kill】実行中のプロセス表示と強制終了 - Qiita
実行中のプロセスを表示 よく使うコマンドは下記。 ps aux psコマンド:実行中のプロセスを表示 auxはオプション a:自分以外のユーザーのプロセスも表示する u:ユーザー名と開始時刻を表示する x:制御端末のないプロセスの情報も表示する 実際には、grep...
https://qiita.com/shuntaro_tamura/items/4016868bda604baeac3c
【メモ】Linux圧縮/解凍コマンド - Qiita
このドキュメントでは、Linuxで一般的に使用される圧縮・解凍コマンドの一覧を紹介します。 コマンドオプションの説明 tar コマンドのオプション -x: 解凍(extract) -c: 圧縮(create) -v: 詳細表示(verbose) -f: ファイ...
https://qiita.com/t-kubo0325/items/158e02aa6b8e62b76242