FrontPage
Linux Common
目次
- コマンド メモ
- ファイルシステム
- 映像
- テキスト
- システム監視、top
- ターミナルマルチプレクサー(tmux)
- sudo で adduser や sbin コマンドを使えない
- 1つ前のディレクトリに戻る
- iso ファイルをマウントする
- DVD,CD-ROMからISOファイルを作成する。
- anacron
- 特定のファイルやディレクトリを除いてコピー
- ファイル名の一括変更(正規表現)
- ハードウェアの情報を表示する,Hardware,CPU,Memory,Motherboard,メモリー,マザーボード
- Intel CPUのTurbo boost関連
- ホスト名(コンピュータ名)の変更方法(コマンド,CUI)
- less で行番号を表示する。
- 何文字目から何文字目を抽出,文字列
- 引数
- ディレクトリ名の一括置換
- MC,Midnight Commander
- ディレクトリ(フォルダ)名を指定して一括削除
- UUIDとLABELを表示する。
- プロセスの優先順位を変更する
- Argument list too long が表示される
- vim で 「visual」 となりマウスで範囲選択できない
- その他
- メモリー解放,Memory
- ln(シンボリック・リンク)
- bashで小数計算
- 環境変数設定
- findの結果で移動、コピーなどを行う
- 高速ファイル検索(fd)
- 圧縮・解凍
- Network
- Linux ディストリビューション distribution
- その他
- タイムスタンプ
- ubuntu版chkconfig
- ユーザー、グループ管理、アクセス権
- Ubuntu LTS upgrade
- ファイルがあり実行権限があるのに「そのようなファイルやディレクトリはありません」「No such file or directory」と表示される
- ubuntu, /boot 容量削減, kernel削除
- プロセス名でgrepした結果をkillする
- find の結果でpermissionを表示する。
- yum,Error: Multilib version problems found.
- dpkg-divert: エラー: パッケージの不整合です
- 省電力,充電制御,電源設定
- LVM,領域,拡張,volume,partition,
- Ubuntu, OSが起動せず「initramfs」と表示される,HDD エラー修復
- OS が起動せず Control-D とか、root といった文字だけ見える(他は文字化け)
- apt update, apt-key が非推奨となりエラーが表示される
- systemd-resolve が無い
- apt,doesn't support architecture 'i386',error,エラー
- DVD起動して、Ubuntu(Linux)のディスクの中身を編集する
- vim insert visual, 右クリックで貼り付けできない, 対応
- cronのメール送信関連
- 起動時、自動実行
- proxy経由でアクセスする設定(Linux)
コマンド メモ †
ファイルシステム †
映像 †
- ffmepg マルチコア対応オプション
-threads 8
テキスト †
システム監視、top †
- top(CPU使用率など)
- iotop (ディスクのIO監視)
- iftop (ネットワーク監視)
ターミナルマルチプレクサー(tmux) †
sudo で adduser や sbin コマンドを使えない †
1つ前のディレクトリに戻る †
cd -
iso ファイルをマウントする †
mount -o loop -t iso9660 isoファイル マウントするディレクトリ
DVD,CD-ROMからISOファイルを作成する。 †
anacron †
特定のファイルやディレクトリを除いてコピー †
ファイル名の一括変更(正規表現) †
- 参考サイト
- やりたい事など
- Ubuntu18.04で実行
- 正規表現で表した規則に則ってファイル名を変更したい。
- 最初の14桁の数字は変わる。
- 具体的には以下な感じ。
- 変更前
- 20181104165305-雑誌名-2016-11.pdf
- 20181104165524-雑誌名-2016-12.pdf
- 変更後
- 雑誌名_2016-11.pdf
- 雑誌名_2016-12.pdf
- 以下のコマンドでできました。
- テスト・コマンド(ちゃんと変換できるか確認)
for org in `find ./ -maxdepth 1 -name "201811*" -printf '%f\n'`
do
replaced=`echo ${org} | sed -e 's/201811........-雑誌名-/雑誌名_/g'`
echo ${org}
echo ${replaced}
done
- 本番(ファイル名変更)コマンド
for org in `find ./ -maxdepth 1 -name "201811*" -printf '%f\n'`
do
replaced=`echo ${org} | sed -e 's/201811........-雑誌名-/雑誌名_/g'`
mv ${org} ${replaced}
done
- スペースが含まれるとうまく変更できないので、rename コマンドも併用。
ハードウェアの情報を表示する,Hardware,CPU,Memory,Motherboard,メモリー,マザーボード †
Intel CPUのTurbo boost関連 †
- Ubuntu
- 参考サイト(UbuntuでIntel Turbo Boostを無効にする)
- 必要ソフトのインストール
udo apt-get install msr-tools
- 必要moduleのロード
sudo modprobe msr
- 状態の表示(pの後ろがCPU番号。以下は例で1)
rdmsr -p1 0x1a0 -f 38:38
- CPUコア番号の取得
cat /proc/cpuinfo | grep processor
- Turbo boost の無効化(p の後ろはCPU番号なのでCPU番号分繰り返す)
wrmsr -p0 0x1a0 0x4000850089
- Turbo boost の有効化(p の後ろはCPU番号なのでCPU番号分繰り返す)
wrmsr -p0 0x1a0 0x850089
- Redhat, CentOS, AlmaLinux
ホスト名(コンピュータ名)の変更方法(コマンド,CUI) †
- Ubuntu,CnetOS,AlmaLinux 共通
less で行番号を表示する。 †
- ファイル
less -N ファイル
- コマンド実行結果
コマンド | less -N
何文字目から何文字目を抽出,文字列 †
ls | cut -c 55-500 | sort
引数 †
$1
$2
ディレクトリ名の一括置換 †
rename 's/^12/2012/' *
MC,Midnight Commander †
- Install
- RHEL
sudo yum install mc
- Ubuntu
sudo apt install mc
- 複数選択
Insert
- 右・左の移動
Tab
- 上のメニューへ移動
F9
- help
F1 -> Enter
ディレクトリ(フォルダ)名を指定して一括削除 †
find . -type d -name .comments -prune -exec rm -rf {} +
UUIDとLABELを表示する。 †
sudo blkid
プロセスの優先順位を変更する †
- renice
- renice -n 優先度(数字) -p プロセスNo
- 優先度は確か -20 〜 19
- 値が小さいほど優先順位が高い
Argument list too long が表示される †
vim で 「visual」 となりマウスで範囲選択できない †
- vim ~/.vimrc
set mouse-=a
- sudo vim /root/.vimrc
(sudo用)
set mouse-=a
その他 †
- ls でサイズ順にソートする
ls -S
- pingコマンドの出力結果にタイムスタンプを付与する
ping 8.8.8.8 | xargs -L 1 -I '{}' date '+[%Y/%m/%d %H:%M:%S] {}'
- export した環境変数を削除する。
unset http_proxy
export http_proxy="" では削除されないので注意
- ファイルの合計容量を取得
du -bhc ~/*.pdf
メモリー解放,Memory †
sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
ln(シンボリック・リンク) †
bashで小数計算 †
環境変数設定 †
export HENSU-MEI=AtaiOrNaiyou
findの結果で移動、コピーなどを行う †
高速ファイル検索(fd) †
- install
sudo apt install ./fd-musl_10.2.0_amd64.deb
- 使用方法
- ファイル名 ディレクトリ名の検索(「data」そ含むファイル名やディレクトリ名を検索)
fd data
- 正規表現にも対応
- or 検索例(data or movie)
fd 'data|movie'
- 拡張子(ドットは不要)
fd -e js -e vue
- 拡張子と名前の組み合わせ
fd -e xml map
- 特定のパターンを除外する
fd map -E vendor
- ファイルのみ、ディレクトリのみを検索する
- -t または --type に続けてファイルの種類を指定する。種類は次の通り。
- f または file …… 通常のファイル
- d または directory …… ディレクトリ
- l または symlink …… シンボリックリンク (Windows ではジャンクションも含む)
- e または empty …… 空のファイルまたはディレクトリ
このうち file, directory, symlink は複数指定すると OR 検索となる。empty は他の条件との AND 検索となる。
- 最大のディレクトリ階層を指定する(カレントディレクトリのみ)
fd --max-depth 1 data
- 検索結果に対してプログラムを実行する
fd -e html map -x wc -l
fd -e png -x convert {} {.}.jpg
- convert image.png image.jpg のように展開される
- プレースフォルダ
- {}: 検索結果のパスそのまま (documents/images/party.jpg)
- {.}: 拡張子を除いたもの (documents/images/party)
- {/}: ファイル名 (basename) のみ (party.jpg)
- {//}: 親ディレクトリ (documents/images)
- {/.}: 拡張子を除いたファイル名 (basename) のみ (party)
- ファイルサイズで検索する
- fd -S +10M …… 10 MB 以上のファイルを検索
- fd -S -1k …… 1 kB 以下のファイルを検索
- fd -S 923b …… 923 バイトちょうどのファイルを検索
- fd -S +10M -S -12M …… 10 MB 以上 12 MB 以下のファイルを検索
- 更新日時でファイルを検索する
- --changed-within や --changed-before に続けて日時や期間を指定する。
- 3時間以内
fd --changed-within 3h
- 3年より前に変更されたファイルを検索する
fd --changed-before 3y
- 2020年5月9日 00:00:00 (UTC) 以降に変更されたファイルを検索する
fd --changed-within '2020-05-09 00:00:00'
- 2020年5月9日 00:00:00 (UTC) から 2020年5月12日 20:00:00 (UTC) の間に変更されたファイルを検索する
fd --changed-within '2020-05-09 00:00:00' --changed-before '2020-05-12 20:00:00'
圧縮・解凍 †
tar.gz †
tar.bz2、tbz †
- bzip2 -dc filename | tar xvf -
.gz †
Network †
ubuntu、network_設定 †
- 設定方法1
- dns-nameservers を利用可にする。
- sudo apt-get install resolvconf
- Network 情報の記述
- リゾルバ(resolv.con)の設定
- network-manager の無効化
#インストール
sudo aptitude -y install sysv-rc-conf
#切り替え
sudo sysv-rc-conf network-manager off
sudo sysv-rc-conf networking on
- network-manager のアンインストール
sudo apt-get remove network-manager
- network の再起動
sudo /etc/init.d/networking restart
- network の再起動2
sudo ifdown eth0
sudo ifup eth0
sudo ifdown eth1
sudo ifup eth1
- 設定方法2
CentOS,RedHat Network 設定 †
- sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
NM_CONTROLLED=no
IPADDR=192.168.1.29
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
- リゾルバ設定
- network の再起動
sudo /etc/init.d/networking restart
- network の再起動2
sudo ifdown eth0
sudo ifup eth0
/etc/resolv.conf が元に戻ってしまう †
- 以下を編集
sudo vi /etc/resolvconf/resolv.conf.d/base
- 追加
nameserver 192.168.1.1
nameserver 192.168.1.2
search tar3.net
※自分の環境ではこれをやっても resolv.conf が
勝手に書き換わってしまうので、結局上記の
network-manager をやめて /etc/network/interfaces からの
/etc/init.d/networking へ。
さらに、/etc/init.d/networking restart で設定が反映されず
sudo ifdown eth0 && sudo ifup eth0
で設定を反映させました。。。
nextdns †
DNS設定確認 †
Ubuntu(NetworkManager) †
cat /run/systemd/resolve/resolv.conf
CentOS7 †
nmcli device show
Linux ディストリビューション distribution †
Debian 系 †
- Debian
- Linux ディストリビューションの中でもかなり老舗
- Ubuntu よりシンプルな構造で軽量。
- パッケージ管理システムは apt
- Ubuntu
- デスクトップ用途に向いているDebianベースのディストリビューション。
- デバイスドライバが豊富で、ハードウェアは大体認識する。
- 2年に一度、LTS(Long time support)、半年に一度のバージョンアップが行われる。
- パッケージ管理システムは apt
- WattOS
- Debian ベースのディストリビューション。
- 省電力に特化。TLPなどを用いながら省電力化。
- Kali Linux
- Debian ベースのディストリビューション。
- サーバーに潜む脆弱性の発見に特化。
- パッケージ管理システムは apt
Redhat 系 †
- CentOS
- 有名な有償 Linux ディストリビューション RedHat のコピーOS
- 無料
- ほぼ RedHat のフル機能が使用可能
- パッケージ管理システムは yum
- Fedora
- RedHat の実験的機能が実装された無償ディストリビューション。
- 無料
- かなり頻繁に更新される模様。
- パッケージ管理システムは yum
その他 †
Puppy Linux †
- 軽量Linux の代表格
- 独自のシステムでパッケージ管理も独自。
Rescuezilla †
- OSのイメージバックアップを取るディストリビューションらしい。
- 未検証。
Back box †
- 軽量Linux
- 家の Sony VAIO Type P 用として使用。(PCG-11113N)
- バージョン7からは寄付必須??
その他 †
タイムスタンプ †
- 参考サイト
- UNIXファイルのタイムスタンプは以下の3つ。
タイムスタンプ名 | 説明 | 参照コマンド | atime | 最終アクセス時刻 (access time) | ls -lu | mtime | 最終変更時刻 (modify time) | ls -l | ctime | 最終ステータス変更時刻 (change time) | ls -lc |
ubuntu版chkconfig †
sudo apt-get install sysv-rc-conf
sudo sysv-rc-conf networking on
ユーザー、グループ管理、アクセス権 †
Ubuntu LTS upgrade †
sudo do-release-upgrade
ファイルがあり実行権限があるのに「そのようなファイルやディレクトリはありません」「No such file or directory」と表示される †
- 32bitアプリ、64bitアプリが合ってない可能性がある
ubuntu, /boot 容量削減, kernel削除 †
- 参考(外部):古いカーネルの削除方法メモ
- 現在のカーネルバージョンを確認
uname -r
- インストールされているカーネルを確認
dpkg --get-selections | grep linux-
- 削除(複数選択可能)
sudo apt-get autoremove --purge linux-headers-3.13.0-{65,67,71}
- きちんと消えなければimageを削除
sudo apt-get autoremove --purge linux-image-3.13.0-{65,67,71}
プロセス名でgrepした結果をkillする †
find の結果でpermissionを表示する。 †
yum,Error: Multilib version problems found. †
dpkg-divert: エラー: パッケージの不整合です †
- 結構はまったのですが、退避ファイルに関するパッケージの不整合。
- エラーは以下な感じ。
dpkg-divert: エラー: パッケージの不整合です
`libnvidia-gl-460 による /usr/lib/i386-linux-gnu/libEGL.so の退避 (divert)' の削除中に
`nvidia-340 による /usr/lib/i386-linux-gnu/libEGL.so から /usr/lib/i386-linux-gnu/libEGL.so.distrib への退避 (divert)' を発見しました
dpkg: アーカイブ /var/cache/apt/archives/libnvidia-gl-460_460.73.01-0ubuntu0.18.04.1_i386.deb の処理中にエラーが発生しました (--unpack):
new libnvidia-gl-460:i386 package pre-installation script subprocess returned
error exit status 2
処理中にエラーが発生しました:
/var/cache/apt/archives/libnvidia-gl-460_460.73.01-0ubuntu0.18.04.1_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
- 注目するのは以下の部分。
/usr/lib/i386-linux-gnu/libEGL.so
- distribファイルを以下のコマンドで根気良く削除していきます。
同じようなPathやファイルが有るので出来ればコピペした方が良いかも。。。
sudo dpkg-divert --rename --remove /usr/lib/i386-linux-gnu/libEGL.so
- 少しずつ削除していきますが、以下のエラーも出ます。
'nvidia-340 による /usr/lib/i386-linux-gnu/libGL.so.1 から /usr/lib/i386-linux-gnu/libGL.so.1.distrib への退避 (divert)' を削除しています
dpkg-divert: エラー: 名前変更は `/usr/lib/i386-linux-gnu/libGL.so.1' を異なるファイル `/usr/lib/i386-linux-gnu/libGL.so.1.distrib' で上書きすることを伴います。
これは許可されていません。
- この場合は、distribファイルを手動で削除して再度コマンドをsudo dpkg-divert コマンドを実行しました。
- ちなみに以下のコマンドとセットで少しずつ進めました。
sudo apt --fix-broken install
省電力,充電制御,電源設定 †
- 関連ソフトのインストール
- powertopの簡単な使い方
- tlp
- 起動
sudo systemctl start tlp
- 自動起動の設定
sudo systemctl enable tlp
- 充電制御
- Ubuntu 20.04 では以下のファイルを変更
sudo vim /etc/tlp.conf
- 以下の行のコメントアウトを外す
START_CHARGE_THRESH_BAT0=75
STOP_CHARGE_THRESH_BAT0=80
- tlp を再起動
sudo systemctl restart tlp
- tlp 設定の確認
sudo tlp-stat -b
- バッテリーの状態を確認
upower -i /org/freedesktop/UPower/devices/battery_BAT0
LVM,領域,拡張,volume,partition, †
参考サイト †
- 【LVM入門】LinuxのLVMでディスク容量を拡張する
- LVMでディスク拡張(CentOS6 + lvm2 + ext4)
df コマンドで現状を確認 †
[root@localhost ~]# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/rhel-root 14G 1.4G 13G 11% /
devtmpfs 908M 0 908M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 8.9M 911M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/mapper/vg_sdb1-lv_sdb1 2.0G 33M 2.0G 2% /mnt
拡張前のディスク容量を確認 †
fdisk -l /dev/sda
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 41M 1.9G 3% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 36G 3.5G 30G 11% /
/dev/sda1 477M 186M 262M 42% /boot
/dev/mapper/centos-var 30G 7.4G 21G 27% /var
centos6:/var/log 9.5G 692M 8.4G 8% /mnt/centos6-log
VMなどでHDDのストレージを拡張 †
- 方法は省略
- 拡張後は変わらず
fdisk -l /dev/sda
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 41M 1.9G 3% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 36G 3.5G 30G 11% /
/dev/sda1 477M 186M 262M 42% /boot
/dev/mapper/centos-var 30G 7.4G 21G 27% /var
centos6:/var/log 9.5G 692M 8.4G 8% /mnt/centos6-log
拡張後OSでリスキャンし、容量を認識させる †
パーティションの拡張 †
- 以下のコマンドを実行(例 /dev/sda)
sudo parted /dev/sda
- (parted) のプロンプトで以下のコマンドを実行
p free
- resizepart を実行
resizepart
- 再度確認
p free
PV容量拡張 †
- 現状確認
pvdisplay /dev/sda2
- PVのリサイズ
pvresize /dev/sda2
- 再度確認
pvdisplay /dev/sda2
- 一応VGも確認しておく
vgdisplay vg_sda2
LV容量拡張 †
- 現状の確認(vg_sdb1/lv_sda2 は適宜変更)
lvdisplay /dev/vg_sdb1/lv_sda2
- 対象を100%に増やす
lvextend -l +100%FREE /dev/vg_sda2/lv_sda2
- 再度確認
lvdisplay /dev/vg_sdb1/lv_sda2
ファイルシステム拡張(ext4) †
最後に確認 †
df -h
Ubuntu, OSが起動せず「initramfs」と表示される,HDD エラー修復 †
- とりあえず起動するための施策
- とりあえず以下のコマンドでファイルチェック & 修復
赤い箇所は適宜書き換え
- 途中で何回か「y」キーを押す
- 終わったら「reboot」コマンドで再起動
- 起動後、不良セクタを調べる
- sudo badblocks -v -s /dev/sda6 | tee /tmp/badblocks.txt
- 不良セクタのマーキング
- e2fsck -l /tmp/badblocks.txt /dev/sda6
- 1回のコマンドですべて実行
- sudo fsck -t -y -f -c /dev/sda6
OS が起動せず Control-D とか、root といった文字だけ見える(他は文字化け) †
- とりあえず root のパスワードを入力すれば、bash が表示される
apt update, apt-key が非推奨となりエラーが表示される †
- エラーメッセージ
- W: (URL): Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
- 対策
- まずは普通にダウンロード(例はmoose file system)
wget https://ppa.moosefs.com/moosefs.key
- 変換(import)
gpg --no-default-keyring --keyring temp-keyring.gpg --import moosefs.key
- 変換後の出力
gpg --no-default-keyring --keyring temp-keyring.gpg --export --output moosefs-gpg.gpg
- apt へコピー
sudo cp moosefs-gpg.gpg /etc/apt/trusted.gpg.d/
- soucelist の編集
vim /etc/apt/sources.list
- 例(signed-by= 以下を追加)
deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/moosefs-gpg.gpg] http://ppa.moosefs.com/moosefs-3/apt/ubuntu/focal focal main
systemd-resolve が無い †
apt,doesn't support architecture 'i386',error,エラー †
DVD起動して、Ubuntu(Linux)のディスクの中身を編集する †
- 設定を間違えて起動しなかった時など
- GUIで起動するので、「Disk」アプリを開きマウントする
- sudo を使用して、ファイルを編集
(自分は/etc/fstabを編集)
vim insert visual, 右クリックで貼り付けできない, 対応 †
cronのメール送信関連 †
- cronの結果は基本的に実行ユーザーへ送信される。
- 意図的に他のユーザーへメールを送信する場合
- sudo vim /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
LANG=ja_JP.UTF-8
CONTENT_TYPE=text/plain; charset="utf-8" MAILTO=root
- もしかするとメール本文が空白の場合、メールが送信されないのかもしれない
その場合や個別cronに対するメール送信方法
*/5 * * * * www-data /usr/bin/php -f /var/www/nextcloud/cron.php --define apc.enable_cli=1 2>&1 | mail -s "Mail Title" mailAddress@hoge.com
起動時、自動実行 †
- 以下の順番で実行される
- /etc/init.d/rcファイル。
- /etc/rc.d/ディレクトリにあるファイル。
- /etc/config/rc.localファイル。
- sudo vi /etc/config/rc.local
- 実行権限の付与
sudo chmod +x /etc/rc.local
- 注意点
- 実行権限の付与を忘れずに
- 「#!/bin/bash」も忘れずに。。。
- もしかしたらシンボリックリンクになってるかも。。。
そしたらシンボリックリンクの先にも実行権限を。
- sudo chmod +x /etc/rc.d/rc.local
proxy経由でアクセスする設定(Linux) †
|