お名前.com VPS を使用するにあたって私が使用しているコマンド一覧です。
環境
パソコン Windows11
VPS OS Ubuntu 20.04.3 LTS、 Dockerを使用
Docker
一覧、削除
コンテナ一覧表示(-aを付けない場合は稼働中のコンテナのみ表示)
sudo docker ps -a
コンテナstop
sudo docker stop コンテナID
コンテナ個別削除
sudo docker rm コンテナID
コンテナ全削除
docker container prune
コンテナ全削除(動いていても削除できる)
docker rm -f `docker ps -a -q`
イメージ一覧
sudo docker images
イメージ個別削除
sudo docker rmi イメージID
イメージ全削除(うまくいかない場合は個別で削除)
docker image prune
ボリューム一覧
sudo docker volume ls
ボリューム削除
sudo docker volume rm ボリューム名
ネットワーク一覧
sudo docker network ls
動いているネットワーク名はbridge、host、noneは多分必要なもので消さないほうがいい。
ネットワーク削除
sudo docker network rm ネットワークID
ネットワーク作成(Error response from daemon: network shared not foundが出たとき実施)
sudo docker network create shared
Build Cacheを削除
docker system prune
イメージ、コンテナ、ネットワークを削除(prune)するショートカットのようですが。
(ボリュームはデフォルトでは削除されない。)
これを実行するとDeleted build cache objects:となってBuild Cacheも削除されました。
目次へ
コンテナ操作
コンテナの中に入る
imeageがalpineの場合
sudo docker exec -it コンテナ名 sh
imeageがalpine以外の場合
sudo docker exec -it コンテナ名 bash
rootでコンテナの中に入る
sudo docker exec -it --user root コンテナ名 bash
Nginxのconfを反映させる(restartの他にstopで停止、startで開始)
sudo docker restart コンテナ名
ymlを変更したとき反映させたり、最初にymlを実行するとき
sudo docker-compose up -d
目次へ
ファイルコピー
SSH接続したVsコードの左側のツリー(ホスト上)からファイルをコピー
(ファイルは、このコマンドを実行する同階層におく。)
sudo docker cp ファイル コンテナID:ディレクトリ
例sudo docker cp 50x.html コンテナID:/usr/share/nginx/html
コンテナからSSH接続したVsコードの左側のツリー(ホスト上)にファイルをコピー
sudo docker cp <コンテナID>:<コピーしたいファイルパス> <ホスト上のコピー先パス>
例docker cp 1c8caa876b98:/usr/local/apache2/conf/httpd.conf ./
ホスト上のコピー先パスを./にすればコマンドを実行しているディレクトリにコピーされます。
Vsコードでファイルを右クリックしダウンロードでローカルにダウンロードできます。
ログ
エラーログをターミナルに表示(-f:ログをリアルタイムで追跡)
sudo docker logs コンテナ名 -f 1>/dev/null
アクセスログをターミナルに表示
sudo docker logs コンテナ名 -f 2>/dev/null
1or2>/dev/nullの意味は
1は標準出力、2はエラー出力、
>/dev/nullを付けると、その番号の出力は捨てるという意味なので上記のようになる。
ログが長すぎるとき(5行10個のフィールドの場合)
sudo docker logs コンテナ名 -f --tail=5 2>/dev/null | awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}'
各行の最初から8つ目までのフィールドをスペースで区切って出力します。各フィールドは、スペースで区切られたテキストのセグメントです。
10個のフィールドにしておけば多くの場合statusまで表示します。
ログの中身を見るときはメモ帳ではなくVsコードに貼りましょう。
ログをメモ帳に貼ると勝手に改行が入り行の判別がわからなくなります。
VSコードに貼ると長くても改行はしませんので分かりやすいです。
{"transaction": ...}で始まる行は、ModSecurityによって生成されたトランザクションデータを含むJSON形式の文字列です。これは、ModSecurityが検出したセキュリティイベントに関する詳細情報を提供します。{"transaction": ...} 内のデータには、クライアントのIPアドレス、サーバーの応答、リクエストの詳細などが含まれています。
リアルタイムでアクセスとエラーログを監視するとき私が使うのは
sudo docker logs コンテナ名 -f --tail=5 | awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}'
アクセスログをlog.txtファイルにコピー
sudo docker logs コンテナ名 > log.txt
日付後のアクセスログをlog.txtファイルにコピー
sudo docker logs --since 2024-04-01T00:00:00 コンテナ名 > log.txt
日付後のアクセスログをlog.txtファイルにコピー、エラーログをerror_log.txtにコピー
sudo docker logs --since 2024-05-24T00:00:00 コンテナ名 > log.txt 2> error_log.txt
日付後のアクセスログとエラーログを混ぜてcombined_log.txtにコピー
sudo docker logs --since 2024-05-24T00:00:00 コンテナ名 &> combined_log.txt
Vsコード接続してるときに、このコマンドを実行するとVsコードにlog.txtなどができる。
VPSのほうはコマンドを実行したディレクトリにできます。
Vsコードでlog.txtを右クリックしダウンロードでローカルにダウンロードできます。
目次へ
Linux(ubuntu)
一覧表示
ls
削除
rm -r 削除するディレクトリ
消していいか聞かれるのでy+Enter
ディレクトリ移動
cd ディレクトリ名
ディレクトリ上へ移動
cd ..
ログイン状況の確認
last
パーミッション確認
ls -l
パーミッション設定
chmod *** ディレクトリorファイル
例chmod 755 /etc/letsencrypt/live
メモリ容量
free
メモリ使用率の高い順にプロセスを表示
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem
メモリ使用率の高い順にプロセスを表示(上位9個)
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem |head
ディスク容量
df -h
ファイルの最後の数行表示
tail ファイル名
ファイルサイズ確認
du -ch ファイル名 | grep total$ | cut -f 1
ディレクトリと、その中のファイルサイズ確認
du -ah ディレクトリ名
ディレクトリのサイズ確認
du -h ディレクトリ名
検索
find 探すディレクトリ -type f -name "ファイル名"
例:find /path/to/search -type f -name "filename.txt"
grep -r -i "検索する文字列" 探すディレクトリ
例:grep -r -i "StartServers" /etc/apache2/
コンテナとプロセスの関係が分かるツリー表示
systemctl status
pstreeよりもこっちのほうが見やすい
443portのトラフィックをキャプチャ
(SSH接続のVsコードでは見れなかったが管理画面のシリアルコンソールだと見れた。)
sudo tcpdump -i ens3 port 443
TCPソケットのみ表示
ss -natp
TCPでコネクションが確立してるのだけ表示
ss -t
最近5件のログインのみ表示
last -n 5
Cronの状況確認(エラーが出てたら確認できる)
systemctl status cron
プロセス表示
ps aux
プロセス削除
kill
実施例
python manage.py runserver 0.0.0.0:800* &
で起動したプロセスの削除https://kikuichige.com/24495/#toc11
Djangoのログ(ターミナルを閉じても実行し続けlogファイルを作る方法)
以下で実行するとpython manage.py runserver 0.0.0.0:8008でターミナルに出力されていたものが
logに保存される。ターミナルを閉じてもok。
nohup python manage.py runserver 0.0.0.0:8008 > output.log 2>&1 &
目次へ
おすすめ
必要に迫られてコマンド実行していましたが、
こちらのYoutubeみたら、だいぶ何やっているか分かってきました。
https://youtu.be/-asvOd3nmNY?si=ni5IU9KtDKxLR-eP
https://youtu.be/XyUFp1SQEic?si=64C29myWiAV1aWRJ
その他
Django
モジュールインストール
pip install -r requirements.txt
サーバーラン
python manage.py runserver 0.0.0.0:8000
静的ファイルをstaticfilesに集める
python manage.py collectstatic
データベース
migrationファイル作成
python manage.py makemigrations
migrationファイル登録
python manage.py migrate
Git
git clone https://アクセストークン@github.com/ユーザーname/レポジトリ名.git
目次へ
コメント