#author("2021-05-23T06:59:08+09:00","default:dramsukohome","dramsukohome") [[FrontPage]] #shadowheader(1,Linux Common); #shadowheader(2,目次); #contents * Linux_Common [#h2e539f9] ** コマンド メモ [#daaf4bf8] *** ファイルシステム [#ecc15e6a] - 強制 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 *** 映像 [#h2799992] -ffmepg マルチコア対応オプション -threads 8 *** テキスト [#r34e2a69] - Sort sort -t: -k3 -n /etc/group - nl 行番号を付与する nl [ オプション ] [ ファイル名 ] |オプション|内容|h |-h<形式>|指定した形式でヘッダに行番号を付加する| |-b<形式>|指定した形式で本文に行番号を付加する| |-f<形式>|指定した形式でフッタに行番号を付加する| ~ |形式|内容|h |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 [#o6d0a6f0] - top(CPU使用率など) - iotop (ディスクのIO監視) -- yum install iotop - iftop (ネットワーク監視) -- CentOS install --- epel repository の追加 >最新バージョンの確認~ >・[[http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/]] < ・epel-release-6-8.noarch.rpm を探し、wget で引っ張る >例 wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm < epel パッケージのインストール rpm -ivh epel-release-6-8.noarch.rpm --- yum install --enablerepo=epel iftop *** ターミナルマルチプレクサー(tmux) [#q477635c] ssh などリモートでログインしている時のセッションを保持する。~ 作業中、ネットワークが切断されたりターミナルがブチ切れした時も~ 続きから作業が行える~ - 参考:[[tmuxチートシート(Qiita サイト):http://qiita.com/nmrmsys/items/03f97f5eabec18a3a18b]] - 参考:[[tmux基本のコマンド(nato's memo サイト):http://room6933.com/tmux/tmux-basic.html]] - 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 &color(green,){(Enter)}; -- ショートカット:C-b c - 前回セッションの復帰 --tmux attach &color(green,){(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 コマンドを使えない [#v1904084] - パスが通っていない - 以下のコマンドを実効化 .bashrc に追記 export PATH=$PATH:/usr/sbin/ *** 1つ前のディレクトリに戻る [#rcf5e8ea] cd - *** iso ファイルをマウントする [#icf1709b] mount -o loop -t iso9660 isoファイル マウントするディレクトリ *** DVD,CD-ROMからISOファイルを作成する。 [#cb7bfa3c] -コマンド dd if=[デバイス] of=[isoイメージ名].iso -例(DVDでもCD-ROMの指定で大体大丈夫です) dd if=/dev/cdrom of=/tmp/dvd.iso *** Cronで定期実行をずらす [#w2b4e1f2] -例(5, 15, 25,... 55)。多分(笑) 5-55/10 * * * * root "/root/sh/chmodBus.sh" -1分、6分、11分、……、56分 1-56/5 * * * * user command *** 特定のファイルやディレクトリを除いてコピー [#ofedca20] -rsyncを使う -option --exclude="" -例 rsync -avr --exclude='hogehoge.hoge' /home/hoge/ /home/temp/ *** ファイル名の一括変更(正規表現) [#k0edfdf4] -参考サイト --[[正規表現やワイルドカードでファイル名を一括変換する:https://www.greptips.com/posts/813/]] --[[サルにもわかる正規表現入門:https://userweb.mnet.ne.jp/nakama/]] -やりたい事など --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 [#ef9abbc4] -参考 --[[(外部サイト) Qiita-Linuxでコマンドラインからマシンスペックを確認する方法:https://qiita.com/DaisukeMiyamoto/items/98ef077ddf44b5727c29]] -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 *** その他 [#j121d922] + ls でサイズ順にソートする ls -S + 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] {}'` + export した環境変数を削除する。 unset http_proxy export http_proxy="" では削除されないので注意 + ファイルの合計容量を取得 du -bhc ~/*.pdf ** 圧縮・解凍 [#d4757f19] *** tar.gz [#uaf9718d] - tar xzfv filename.tar.gz *** tar.bz2、tbz [#e8c62d38] - bzip2 -dc filename | tar xvf - *** .gz [#g2935482] - gunzip ファイル名 ** Network [#z0d41ff0] *** ubuntu、network_設定 [#sd14fb1c] + 設定方法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 -- 複数の場合はスペース区切り 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 設定 [#c5efe19e] -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 が元に戻ってしまう [#i480b6bb] - 以下を編集 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 [#c5685afe] - [[nextdns]] ** Linux ディストリビューション distribution [#vdd9d2f4] *** Debian 系 [#s79b3911] + Debian -- Linux ディストリビューションの中でもかなり老舗 -- Ubuntu よりシンプルな構造で軽量。 -- パッケージ管理システムは apt + Ubuntu -- デスクトップ用途に向いているDebianベースのディストリビューション。 --- デバイスドライバが豊富で、ハードウェアは大体認識する。 -- 2年に一度、LTS(Long time support)、半年に一度のバージョンアップが行われる。 --- LTS のサポート期間は確か5年。 -- パッケージ管理システムは apt + WattOS -- Debian ベースのディストリビューション。 -- 省電力に特化。TLPなどを用いながら省電力化。 + Kali Linux -- Debian ベースのディストリビューション。 -- サーバーに潜む脆弱性の発見に特化。 -- パッケージ管理システムは apt *** Redhat 系 [#y2deeadb] + CentOS -- 有名な有償 Linux ディストリビューション RedHat のコピーOS -- 無料 -- ほぼ RedHat のフル機能が使用可能 -- パッケージ管理システムは yum + Fedora -- RedHat の実験的機能が実装された無償ディストリビューション。 -- 無料 -- かなり頻繁に更新される模様。 -- パッケージ管理システムは yum *** その他 [#r3fc36b4] + Puppy Linux -- 軽量Linux の代表格 -- 独自のシステムでパッケージ管理も独自。 ** その他 [#g1a484b9] *** タイムスタンプ [#x785427b] - [[参考サイト:http://x68000.q-e-d.net/~68user/unix/pickup?%A5%BF%A5%A4%A5%E0%A5%B9%A5%BF%A5%F3%A5%D7]] - UNIXファイルのタイムスタンプは以下の3つ。 |タイムスタンプ名|説明|参照コマンド|h |atime|最終アクセス時刻 (access time)|ls -lu| |mtime|最終変更時刻 (modify time)|ls -l| |ctime|最終ステータス変更時刻 (change time)|ls -lc| ***ubuntu版chkconfig [#h90729d1] sudo apt-get install sysv-rc-conf sudo sysv-rc-conf networking on ***ユーザー、グループ管理 [#t9a8402f] -[[ユーザー、グループ管理]]~ *** Ubuntu LTS upgrade [#t973e919] sudo do-release-upgrade *** ファイルがあり実行権限があるのに「そのようなファイルやディレクトリはありません」「No such file or directory」と表示される [#x5a80c1d] - 32bitアプリ、64bitアプリが合ってない可能性がある *** ubuntu, /boot 容量削減, kernel削除 [#r3dc2a10] -参考(外部):[[古いカーネルの削除方法メモ:https://qiita.com/ytkumasan/items/d6cc70f151f130d58e9b]] - 現在のカーネルバージョンを確認 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する [#t9464957] -[[参考(外部サイト),プロセス名でgrepした結果をkillするシェルスクリプトを作る(Qiita):https://qiita.com/masarufuruya/items/409679c1006980ef1b60]] -コマンド ps aux | grep [プロセス名] | grep -v grep | awk '{ print "kill -9", $2 }' | sh *** find の結果でpermissionを表示する。 [#ha723256] - -lsを付ける。 - 例 find ./ -type f -name *.js -ls *** yum,Error: Multilib version problems found. [#q8cc8446] -以下のオプションを付けて実行 --setopt=protected_multilib=false -例 yum update --setopt=protected_multilib=false