FrontPage

Linux Common

目次

Linux_Common

コマンド メモ

ファイルシステム

  • 強制 umount
    sudo umount -l ディレクトリ
  • 全てmount [#ua2f8bc5]
    sudo mount -a
  • ext4 フォーマット [#d6df1d57]
    mkfs.ext4
  • HDD、パーティションラベル [#zbb73ab2]
    e2label|
    • 単体でラベル確認。引数でラベル設定)
  • ファイルシステムの修復
    e2fsck -c /dev/sda1
    • e2fsck: Cannot continue, aborting.
      e2fsck -nf /dev/sda1

映像

  • ffmepg マルチコア対応オプション
    -threads 8

テキスト

  • Sort
    sort -t: -k3 -n  /etc/group
  • nl 行番号を付与する
    nl [ オプション ] [ ファイル名 ]
    オプション内容
    -h<形式>指定した形式でヘッダに行番号を付加する
    -b<形式>指定した形式で本文に行番号を付加する
    -f<形式>指定した形式でフッタに行番号を付加する

    形式内容
    a全ての行
    t空白以外の行
    n行番号を付加しない
    • 論理テキストの表記方法
      \:\:\:ヘッダの開始を意味する行
      \:\:本文の開始を意味する行
      \:フッタの開始を意味する
    • nl -ha -bt -fn sample.txt
  • grep
    • 含まれる文字列を指定したファイル検索,含む
      • 方法1
        find ./ -name "*.*" |  xargs grep -n "hoge"
      • 方法2
        find ./ -name "*.*" |  xargs -I{} grep -n "hoge" {}
    • 文字列が含まれない行を検索
      grep searchChar  | grep -v noExistsChar
  • tail -f
    • less で同じ機能を実現する
      less +F
    • tail モードとの切り替え
      Shift + f (大文字F)
    • less モードへ
      ctrl + c

システム監視、top

ターミナルマルチプレクサー(tmux)

ssh などリモートでログインしている時のセッションを保持する。
作業中、ネットワークが切断されたりターミナルがブチ切れした時も
続きから作業が行える

  • 参考:tmuxチートシート(Qiita サイト)
  • 参考:tmux基本のコマンド(nato's memo サイト)
  • install
    • ubuntu
      sudo apt-get install tmux
    • centos
      sudo yum install epel-release
      sudo yum install tmux
  • .bashrc の記述内容
    # 初回シェル時のみ tmux実行
    if [ $SHLVL = 1 ]; then
       tmux
    fi
  • tmux を実行し tmux モードへ
    • tmux (Enter)
    • ショートカット:C-b c
  • 前回セッションの復帰
    • tmux attach (Enter)
    • tmux a
      ショートカット:無し
  • その他コマンド
    • 新規セッション開始
      • ショートカット:C-b c
    • セッション名変更
      • ショートカット:C-b ,
    • ウィンドウ一覧表示/移動¶
      • ショートカット:C-b w
    • 前/次のウィンドウ移動
      • ショートカット:C-b p
      • ショートカット:C-b n
    • 最後に操作したウィンドウへ移動
      • C-b l
    • 指定したウィンドウへ移動
      • C-b ウィンドウ番号
    • ウィンドウを強制終了¶
      • C-b &
    • ペイン分割
      • C-b "
      • C-b %
    • ペイン分割解除
      • C-b !
    • ペイン強制終了
      • C-b x
    • ペイン間移動
      • C-b o
    • ペインを入れ替え
      • C-b {
    • セッションの確認
      • tmux list-sessions
      • tmux ls
    • デタッチ¶
      • C-b d
    • アタッチ
      • tmux attach
      • tmux a
      • tmux attach -t 0
    • セッションの名前変更
      • tmux rename-session -t 0 hoge
      • tmux rename -t 0 hoge
    • ウィンドウ配置の変更
      • C-b Space
    • コピーモードの使い方¶
      • コピーモードに入る。
        C-b [
    • 名前をつけて新規セッション開始
      tmux new -s <セッション名>
    • セッションの一覧表示
      tmux ls
    • 接続クライアントの一覧表示
      tmux lsc
    • セッションを再開 ※-t <対象セッション名>でセッション名の指定も可能
      tmux a
      tmux a -t testSession
    • セッションを終了 ※-t <対象セッション名>でセッション名の指定も可能
      tmux kill-session
      tmux kill-session -t testSession
    • tmux全体を終了
      tmux kill-server
    • その他コマンドを実行
      tmux [command [flags]]

sudo で adduser や sbin コマンドを使えない

  • パスが通っていない
  • 以下のコマンドを実効化 .bashrc に追記
    export PATH=$PATH:/usr/sbin/

1つ前のディレクトリに戻る

cd -

iso ファイルをマウントする

mount -o loop -t iso9660 isoファイル マウントするディレクトリ

DVD,CD-ROMからISOファイルを作成する。

  • コマンド
    dd if=[デバイス] of=[isoイメージ名].iso
  • 例(DVDでもCD-ROMの指定で大体大丈夫です)
    dd if=/dev/cdrom of=/tmp/dvd.iso

Cronで定期実行をずらす

  • 例(5, 15, 25,... 55)。多分(笑)
    5-55/10  *     * * *   root    "/root/sh/chmodBus.sh"
  • 1分、6分、11分、……、56分
    1-56/5 * * * * user command

特定のファイルやディレクトリを除いてコピー

  • rsyncを使う
  • option
    --exclude=""
  • rsync -avr --exclude='hogehoge.hoge' /home/hoge/  /home/temp/

ファイル名の一括変更(正規表現)

  • 参考サイト
  • やりたい事など
    • 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 コマンドも併用。
    • こんな感じ。
      rename "s/ /-/" 2008*.pdf

ハードウェアの情報を表示する,Hardware

  • 参考
  • CPU
    cat /proc/cpuinfo
  • Memory
    cat /proc/meminfo
    sudo dmidecode -t memory
  • マザーボード,Mother board
    sudo dmidecode -t baseboard
  • グラフィック・カード,グラボ,Graphic board,
    lspci | grep VGA
    • nVidiaの場合
      nvidia-smi
  • ハードディスク,HDD,Hard disk,
    • mount point
      df -h
    • disk 情報。ディスク,
      sudo parted -l
  • Networkカード, ネットワーク・カード,
    lspci | grep Ethernet
  • OS
    • Kernelバージョン, カーネル,
      uname -a
    • ディストリビューションのバージョン
      • Ubuntu
        lsb_release -r
        cat /etc/lsb-release
      • RedHat?,CentOS,AlmaLinux?,
        cat /etc/redhat-release

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
      • 1=disabled
      • 0=enabled
    • 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? 共通
    • sudo hostnamectl set-hostname 新しいホスト名
    • sudo hostnamectl set-hostname hogeComputer.domain.jp

その他

  1. ls でサイズ順にソートする
    ls -S
  2. pingコマンドの出力結果にタイムスタンプを付与する
    ping 8.8.8.8 | xargs -L 1 -I '{}' date '+[%Y/%m/%d %H:%M:%S] {}'
    • nohup する場合は ` でくくる
      nohup `ping 8.8.8.8 | xargs -L 1 -I '{}' date '+[%Y/%m/%d %H:%M:%S] {}'`
  3. export した環境変数を削除する。
    unset http_proxy
    export http_proxy="" では削除されないので注意
  4. ファイルの合計容量を取得
    du -bhc ~/*.pdf

圧縮・解凍

tar.gz

  • tar xzfv filename.tar.gz

tar.bz2、tbz

  • bzip2 -dc filename | tar xvf -

.gz

  • gunzip ファイル名

Network

ubuntu、network_設定

  1. 設定方法1
    • dns-nameservers を利用可にする。
      • sudo apt-get install resolvconf
    • Network 情報の記述
      • sudo vi /etc/network/interfaces
      • 下記を追加
        auto lo
        iface lo inet loopback
        
        auto eth0
        iface eth0 inet static
        address 192.168.1.43
        network 192.168.1.0
        netmask 255.255.255.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 192.168.1.37 192.168.1.35 192.168.1.1
        
        auto eth1
        iface eth1 inet dhcp
    • リゾルバ(resolv.con)の設定
      • sudo vi /etc/resolv.conf
        nameserver 192.168.1.37
        nameserver 192.168.1.35
        search tar3.net
    • 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. 設定方法2
    • 複数の場合はスペース区切り
      sudo vi /etc/resolvconf/resolv.conf.d/base
      nameserver 192.168.11.1 192.168.11.2
    • 設定の反映
      sudo resolvconf -u
    • 確認
      cat /etc/resolv.conf

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
  • リゾルバ設定
    • sudo vi /etc/resolv.conf
      nameserver 192.168.12.12
      nameserver 192.168.11.11
      search tar3.net
  • 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

Linux ディストリビューション distribution

Debian 系

  1. Debian
    • Linux ディストリビューションの中でもかなり老舗
    • Ubuntu よりシンプルな構造で軽量。
    • パッケージ管理システムは apt
  2. Ubuntu
    • デスクトップ用途に向いているDebianベースのディストリビューション。
      • デバイスドライバが豊富で、ハードウェアは大体認識する。
    • 2年に一度、LTS(Long time support)、半年に一度のバージョンアップが行われる。
      • LTS のサポート期間は確か5年。
    • パッケージ管理システムは apt
  3. WattOS
    • Debian ベースのディストリビューション。
    • 省電力に特化。TLPなどを用いながら省電力化。
  4. Kali Linux
    • Debian ベースのディストリビューション。
    • サーバーに潜む脆弱性の発見に特化。
    • パッケージ管理システムは apt

Redhat 系

  1. CentOS
    • 有名な有償 Linux ディストリビューション RedHat? のコピーOS
    • 無料
    • ほぼ RedHat? のフル機能が使用可能
    • パッケージ管理システムは yum
  2. Fedora
    • RedHat? の実験的機能が実装された無償ディストリビューション。
    • 無料
    • かなり頻繁に更新される模様。
    • パッケージ管理システムは yum

その他

  1. Puppy Linux
    • 軽量Linux の代表格
    • 独自のシステムでパッケージ管理も独自。

その他

タイムスタンプ

  • 参考サイト
  • 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を表示する。

  • -lsを付ける。
  • find ./ -type f -name *.js -ls

yum,Error: Multilib version problems found.

  • 以下のオプションを付けて実行
    --setopt=protected_multilib=false
  • yum update --setopt=protected_multilib=false

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

省電力

  • Redhat, CentOS, AlmaLinux?
    • 関連ソフトのインストール
      yum install powertop
    • powertopの簡単な使い方
      • 実行
        sudo powertop
      • Tabで上のタブが切り替わります。
      • 良く使うのが「Overview」と「Device stats」
      • 「Tunables」は取りあえず全部「Good」に切り替えてOK。
      • ESCキーで powertop を終了させることができます。
      • 自動設定
        sudo powertop --auto-tune

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-06-06 (日) 15:52:59 (12d)