更新方法
ターミナル
sudo apt update # パッケージリスト更新
sudo apt upgrade -y # 既存パッケージの更新
sudo apt full-upgrade -y # カーネル更新や依存関係の変更を伴うアップグレード
sudo apt dist-upgrade -y # full-upgrade の旧称
sudo apt autoremove -y # 不要パッケージ削除
sudo apt autoremove --purge -y # 不要パッケージを設定ファイルごと削除
sudo apt purge [パッケージ名] -y # 指定したパッケージを完全削除
sudo rm -rf /var/lib/apt/lists/* # ハッシュサムが適合しない場合
sudo unattended-upgrade # セキュリティアップデート
sudo apt install gpg-agent # gpg: failed to start agent '/usr/bin/gpg-agent': No such file or directory
sudo do-release-upgrade # OSのアップグレード
状態の確認
ターミナル
lsb_release -a # OSの確認
uname -r # カーネルバージョンの確認
df -h # ディスク容量の確認
lsblk # ディスク・パーティション構成を一覧表示
free -h # メモリ使用量の確認
swapon --show # スワップの使用状況
ip link show # インターフェースの状態確認
ip r # ルーティングテーブル
ip -s link # パケット統計(RX/TX bytes packets errors dropped carrier collsns)
ss -s # ソケット統計
ss -tupn | grep [ポート番号] # 自端末の指定ポートの状態を調べる
ss -tulpn | grep [ポート番号] # 自端末の指定ポートがLISTENしているか調べる
tc -s qdisc # キュー制御 (遅延・ドロップ)
# CPU名取得
awk -F: '/model name/ {print $2; exit}' /proc/cpuinfo | sed 's/^ //'
# コア0のCPU周波数取得
awk '{print $1/1000000}' /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
echo "scale=2; $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq) / 1000000" | bc -l
# CPU平均周波 [GHz]
awk '{sum+=$1; n++} END {if(n>0) print sum/n/1000000}' /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
# Windows用
Get-CimInstance Win32_Processor | Select-Object -ExpandProperty CurrentClockSpeed
# ※ hwmon0にデータがある場合
# CPUのコア温度一覧取得
awk '{printf "%.2f\n", $1/1000}' /sys/class/hwmon/hwmon0/temp*_input
# ※ hwmon0にデータがある場合
# Core1の温度を取得
awk '{printf "%.2f\n", $1/1000}' /sys/class/hwmon/hwmon0/temp1_input
# ※ hwmon0にデータがある場合
/sys/class/hwmon/hwmon0
# device temp1_crit_alarm temp2_crit_alarm temp3_crit_alarm temp4_crit_alarm temp5_crit_alarm
# name temp1_input temp2_input temp3_input temp4_input temp5_input
# power temp1_label temp2_label temp3_label temp4_label temp5_label
# subsystem temp1_max temp2_max temp3_max temp4_max temp5_max
# temp1_crit temp2_crit temp3_crit temp4_crit temp5_crit uevent
/sys/class/net/[インターフェース名]/statistics # [インターフェース名]の統計情報が入ったフォルダ
# collisions rx_crc_errors rx_frame_errors rx_over_errors tx_carrier_errors tx_fifo_errors
# multicast rx_dropped rx_length_errors rx_packets tx_compressed tx_heartbeat_errors
# rx_bytes rx_errors rx_missed_errors tx_aborted_errors tx_dropped tx_packets
# rx_compressed rx_fifo_errors rx_nohandler tx_bytes tx_errors tx_window_errors
iw dev # Wi-Fiインターフェース一覧
iw dev [Wi-Fiインターフェース名] link # 接続状態(RSSI、ビットレート)
iw dev [Wi-Fiインターフェース名] station dump # 接続中クライアントの詳細(MCS、RSSI、リトライ率)
iw [Wi-Fiインターフェース名] survey dump # チャネルの混雑状況(busy time / noise)
iw reg get # 電波地域確認
ethtool -S [ethインターフェース名] # NICの詳細統計
cat /proc/cpuinfo # CPUの情報
cat /proc/loadavg # CPU負荷
cat /proc/net/dev # 各ネットワークインターフェースの統計
cat /proc/net/wireless # Wi-Fiの品質情報
cat /proc/net/arp # ARPテーブル
cat /proc/net/softnet_stat # カーネルのパケット処理統計
cat /proc/net/nf_conntrack # コネクション数
仮想フォルダ(RAM上に構築されたフォルダ等)
/proc # カーネル内部状態をファイルとして見せる
/sys # デバイス・カーネルオブジェクトの設定・状態
/dev # デバイスファイル
/run # 早期ブート用の揮発性ランタイムデータ
/tmp # 一時ファイル
ホスト名の変更
現在のホスト名を確認
ターミナル
hostnamectl status
新しいホスト名を設定する
ターミナル
sudo hostnamectl set-hostname [新しいホスト名]
sudo nano /etc/hosts
エディタ
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 [新しいホスト名]
ターミナル
sudo reboot # 再起動して適用
Bash
Aliasの設定
ターミナル
nano ~/.bashrc
エディタ
alias addcmd="nano ~/.bashrc"
alias linux_update="sudo apt update&&sudo apt upgrade -y&&sudo apt autoremove -y"
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
Python
pip --break-system-packages問題
ターミナル
nano ~/.config/pip/pip.conf
nano ~/.pip/pip.conf # Legacy
エディタ
[global]
break-system-packages = true
SSH
鍵作成 (エドワード曲線)
Windows ターミナル
ssh-keygen -t ed25519 -C '""'
公開鍵認証
Windows ターミナル
cd %userprofile%/.ssh
scp id_ed25519.pub [リモート接続するユーザ名]@[リモート接続する端末のIPアドレス]:~/
ターミナル
cd ~/
mkdir -p .ssh
cat id_ed25519.pub >> .ssh/authorized_keys
chmod 700 .ssh
cd .ssh
chmod 600 authorized_keys
公開鍵認証 (コマンドを少なくした方法)
Windows コマンドプロンプト
type %userprofile%\.ssh\id_ed25519.pub | ssh [リモート接続するユーザ名]@[リモート接続する端末のIPアドレス] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
mozcのインストール
ターミナル
sudo apt -y install fcitx5 fcitx5-mozc
フォントのインストール
ターミナル
sudo apt -y install fonts-noto fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-color-emoji
時刻設定
ターミナル
sudo nano /etc/systemd/timesyncd.conf
エディタ
NTP=ntp.nict.jp
ターミナル
sudo systemctl restart systemd-timesyncd.service
date # 確認
修復コマンド
Windows
sfc /scannow
dism /online /cleanup-image /restorehealth
Linux
sudo debsums -s
sudo touch /forcefsck
ファイルシステム修復
1. マウント状態の確認
ターミナル
lsblk -f
[対象ストレージ]
├─[FAT32形式のパーティション] vfat FAT32 bootfs AAE0-77E1 391M 23% [FAT32形式パーティションのマウントパス]
└─[ext4形式のパーティション] ext4 1.0 rootfs ca2be9ef-61a4-4400-a5a1-dc17d7ea790d 101.4G 5% [ext4形式パーティションのマウントパス]
##### [対象ストレージ]
* sda
* sdb ...
##### [パーティション]
* sda1
* sda2
* sdb1
* sdb2 ...
2. アンマウント
ターミナル
sudo umount -l [FAT32形式パーティションのマウントパス]
sudo umount -l [ext4形式パーティションのマウントパス]
※ lazy unmount:論理的に切り離したことにする
3. fsck でファイルシステム修復
ターミナル
sudo fsck.vfat -a /dev/[FAT32形式のパーティション] # boot パーティション修復 (FAT32)
sudo fsck -fy /dev/[ext4形式のパーティション] # root パーティションを修復 (ext4)
# -f : 強制チェック
# -y : 全てyes
壊れたパッケージの修復
1. 再マウントフォルダを作成
ターミナル
sudo mkdir -p /Programs/mnt
2. システム(ルート)パーティションをマウント
ターミナル
sudo mount /dev/[ext4形式のパーティション] /Programs/mnt
2. EFIパーティションをマウント(UEFI起動の場合)
ターミナル
sudo mount /dev/[FAT32形式のパーティション] /Programs/mnt/boot/efi
3. 修理に必要な特殊ディレクトリを紐付ける(バインドマウント)
ターミナル
for i in /dev /dev/pts /proc /sys /run; do \
sudo mount -B $i /Programs/mnt$i; \
done
4. ネットワークの解決
ターミナル
sudo cp /Programs/mnt/etc/resolv.conf /Programs/mnt/etc/resolv.conf.bak
sudo cp /etc/resolv.conf /Programs/mnt/etc/resolv.conf
5. chroot (正常なLinuxのカーネルを使い、破損Linuxを修復する)
ターミナル
sudo chroot /Programs/mnt
6. ブートローダー(GRUB)の修復・再インストール
ターミナル
apt update
grub-install /dev/[対象ストレージ] # パーティション指定はしないこと
update-grub # 設定ファイルを更新
# apt install --reinstall linux-image-generic # カーネル自体が怪しい場合は再インストール (インターネット接続が必要)
# update-initramfs -u -k all # カーネルの再構成を強制的に行う
7. 設定の適用
ターミナル
exit
cd /
sudo umount -R /Programs/mnt
8. ブートローダー(GRUB)の修復・再インストール
ターミナル
grub-install /dev/[対象ストレージ] # パーティション指定はしないこと
ログクリア
ターミナル
sudo logrotate -f /etc/logrotate.conf