重要コマンド(自分用)

自分のためにメモっておきます。また追記していきます。

GPU関連

  • GPUがどのくらい使われているか確認するコマンド(1秒ごとに表示)
nvidia-smi -l 1

pip関連

  • あるコマンドをアップデートするとき
pip install -U <コマンド>

ssh関連

  • sshのconfigみるコマンド

config = sshでどこに繋がれるのかとかの諸々の設定を書いておくファイル

書いておけば、ssh Hostnameだけで飛べる。そうしないと長いIPアドレスを打つはめになる。

cat .ssh/config

バックグラウンドでコマンド実行

時間がかかるコマンドをssh先のマシンでやりたい時がある。この時、ssh接続が切れてもコマンドを動かし続けたい

そこで出てくるのが tmux コマンドである

※ tmuxでコマンドをバックグラウンド実行させて ctl-b then dでセッションを出た後、exitでそのssh接続を切らないように。exitで切ると何故だがtmuxのセッションが消えてしまう...

なので今のところtmuxでのセッションをデタッチした後に、右上の×ボタンでssh接続を切ると何故だがtmuxのセッションがしっかりと動いてくれている...(アドバイスください..)

  • tmuxインストール
$ apt-get install tmux
  • 名前付きセッション(例: hogehoge)作成
$ tmux new -s hogehoge
  • セッションをデタッチ(抜けるイメージ)
Ctl-b then d
  • 今起動中のセッション表示
$ tmux ls
  • セッション(例: hogehoge)に再びアタッチ
$ tmux attach -t hogehoge

ディスク容量確認

df -h

メモリ関連

  • PCのメモリ使用状況を確認(-h オプションで見やすくする)
free -h
  • PCのメモリ使用状況を確認(1秒ごと)
free -h -s 1

ファイル操作

a.txtの先頭100行を取得してb.txtに送る

head -n 100 a.txt > b.txt

オプションの確認

あるコマンドのオプションを確認したいときは脳死ググるのではなく--help使おう

(あるコマンド) --help

Docker関連

Dockerにおいて、イメージを作って、イメージからインスタンスとしてコンテナを作り、そこで開発を行う。

  • 今あるimageを表示
sudo docker images
  • 作ったDockerファイルでimageを作る

例えば、ローカルで作ったDockerfileを入れておくレポジトリに移動して、そのレポジトリ内で

sudo docker build -t [作るimageの名前] [(Dockerfileが入っているディレクトリのPATH、大抵 "." でok)]
  • 停止中も含め全てのコンテナをリスト表示
sudo docker ps -a
  • 作成済みコンテナを起動
sudo docker start  -i [コンテナIDの先頭1,2桁]
  • コンテナ作成&起動(新しいコンテナ作るときはコレ)
sudo docker run --gpus=all -it --name=[自分が付けたいコンテナ名] [元となるimageの名前] [シェルの指定(bash, zshなど)]

sudo docker run -p (ホストのポート番号):(コンテナのポート) --gpus=all -it --name=[自分が付けたいコンテナ名] [元となるimageの名前] [シェルの指定(bash, zshなど)]

研究室はUbuntuなのでbashに指定しよう、仮想環境アクセスではポートフォワーディング忘れずに。

シェル: 自分たちが普段、コンソールで操作する時にコマンドを受け取ってそれを解釈してカーネルに伝えるプログラム。つまりユーザはシェルというインターフェースを通して、カーネルにコマンドの実行をお願いする。

bin: いろんなコマンド(cp, rm, mv,..)に関するバイナリファイル(実行ファイル)が保存されているディレクトリのこと。バイナリファイルが入っているからbinary file -> bin である。

ファイル拡張子: 単に人間が見分けやすいようにファイル名の後ろにつけているもの。本当はなんの意味もなく、.~がついてないからファイルではないのかというと全くそんなことはない。

一方で、windowsなどはわかりやすさのために拡張子がついてないとエラーが出るようにプログラムされているものもある。

  • コンテナ削除
sudo docker rm [コンテナIDの先頭1,2桁]
  • イメージ削除
sudo docker rmi [イメージIDの先頭1,2桁]
  • コンテナからログアウト(コンテナは停止されない)
ctl-p ctl-q

この後、docker ps -aでコンテナを確認するとSTATUSがUp(コンテナは停止しておらず、ログアウトした状態=dettach)の状態になる。

また開始するにはsudo docker attach [コンテナ名]

  • コンテナから出るとき(コンテナは停止される)
exit

この後、docker ps -aでコンテナを確認するとSTATUSがExited(コンテナ停止)の状態になる。

また開始するにはsudo docker start -i [コンテナIDの先頭1, 2桁]

Dockerでの作業の流れ

  1. Dockerfileを作って、それを元にimageを作る

  2. imageからコンテナ作る

  3. コンテナ内で自分が作業しているgithubをclone

  4. GPU使って実験

  5. ローカルでは主にコードの修正、ミニデータでのコード検証

  6. 動作確認できたらgithubに挙げて、コンテナ内で実験

unix関連

  • n個のコマンドを続けて書く&改行
コマンド1 && \
コマンド2 && \
:
:
コマンドn

&& が続けて、\ が改行の意味を持っている

環境構築関連

  • インストール済みのパッケージ一覧表示
pip freeze
  • requirements.txtの作り方
pip freeze > requirements.txt

間違っていることを書いていたら、ご指摘いただけると非常にありがたいです。。