重要コマンド(自分用)
自分のためにメモっておきます。また追記していきます。
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での作業の流れ
Dockerfileを作って、それを元にimageを作る
imageからコンテナ作る
コンテナ内で自分が作業しているgithubをclone
GPU使って実験
ローカルでは主にコードの修正、ミニデータでのコード検証
動作確認できたらgithubに挙げて、コンテナ内で実験
unix関連
- n個のコマンドを続けて書く&改行
コマンド1 && \ コマンド2 && \ : : コマンドn
&& が続けて、\ が改行の意味を持っている
環境構築関連
- インストール済みのパッケージ一覧表示
pip freeze
- requirements.txtの作り方
pip freeze > requirements.txt
間違っていることを書いていたら、ご指摘いただけると非常にありがたいです。。