プロジェクト

全般

プロフィール

Linux » 履歴 » リビジョン 2

リビジョン 1 (kanata, 2025/04/13 16:12) → リビジョン 2/3 (kanata, 2025/04/13 16:12)

# Linux 

 みんなの役に立つかもしれないと思った物をメモ 

 {{rawhtml(<canvas id="map"></canvas><script src="/javascripts/pagemap.min.js"></script><script>pagemap(document.querySelector("#map"));</script>)}} 

 {{toc}} 

 {{child_pages}} 

 # KnowHow 

 ## コマンドラインからgmailを送る 

 ■python で SMTP 認証を行ってメールを送信する 
 http://t2y.hatenablog.jp/entry/20090705/1246772990 

 の snakemail.py を使うと送れる。スクリプト1本で動く。 
 とても便利です。 


 ## ログ監視時に特定のキーワードを引っ掛けて色を着ける 

 以下の2ファイルを作る 

 ### rcg.pl 

 ``` 
 #!/usr/bin/perl -w 
 use strict; 
 use Term::ANSIColor qw(:constants); 

 my %target = (); 

 while (my $arg = shift) { 
 my $clr = shift; 

 if(($arg =~ /^-/) | (!$clr)) { 
 print "Usage: rcg [regex] [color] [regex] [color] ...\n"; 
 exit; 
 } 

 # 
 # Ugly, lazy, pathetic hack here 
 # 
 $target{$arg} = eval($clr); 
 } 

 my $rst = RESET; 

 while(<>) { 
 foreach my $x (keys(%target)) { 
 s/($x)/$target{$x}$1$rst/g; 
 } 
 print; 
 } 

 ``` 

 今だと[ccze](https://orebibou.com/2014/09/%E3%83%AD%E3%82%B0%E3%82%92%E3%82%AB%E3%83%A9%E3%83%95%E3%83%AB%E3%81%AB%E3%81%97%E3%81%A6%E3%82%82%E3%81%A3%E3%81%A8%E8%A6%8B%E3%82%84%E3%81%99%E3%81%8F%EF%BC%81%E3%80%8Eccze-tool%E3%80%8F/)というのがあるのでこっちの方が便利そうです 

 ### syslog.sh 

 ``` 
 #!/bin/sh 

 # 色つきシスログのtail -f 

 RCG="/usr/local/bin/rcg.pl" 

 tail -f /var/log/messages |${RCG} '.*ERROR.*' 'BOLD . RED' \ 
                         '.*Error.*' 'BOLD.RED' \ 
                         '.*WARNING.*' 'BOLD.BLUE' \ 
                         '.*DEBUG.*' 'YELLOW' \ 
                         '.*INFO.*' 'GREEN' \ 
                         '.*NOTICE.*' 'GREEN' \ 
                         '.*LOGIN.*' 'CYAN' \ 
                         '.*session.*' 'CYAN' \ 
                         '.*fail.*' 'RED' \ 
                         '.*deny.*' 'RED' \ 
                         '.*Deny.*' 'RED' \ 
                         '.*denied.*' 'RED' \ 
                         '.*Denied.*' 'RED' \ 
                         '.*refused.*' 'RED' \ 
                         '.*Unable.*' 'RED' \ 
                         '.*down.*' 'MAGENTA' 

 exit 0 
 ``` 

 で、以下の通り、実行権限つけたりした後、syslog.shを実行すると、シスログに色がついた状態で tail -f してログが見れる。 
 同じやり方でアクセスログとかも色付けられます。 

 ``` 
 # chmod ugo+x rcg.pl 
 # mv -i rcg.pl /usr/local/bin 
 # chmod ugo+x syslog.sh 
 # ./syslog.sh 
 ``` 

 また、rcg.pl は該当箇所を色付けできるので 

 ``` 
 # cat test.txt | rcg.pl 'error' 'BOLD . RED' 
 ``` 
 みたいに使うと、特定の箇所だけ色付けして表示できる。 

 perlの ANSIColor.pm というやつを使って実現している。指定できる色は、以下の通り。 

 ``` 
 CLEAR RESET BOLD DARK UNDERLINE UNDERSCORE BLINK REVERSE CONCEALED  
 BLACK RED GREEN YELLOW BLUE MAGENTA CYAN WHITE  
 ON_BLACK ON_RED ON_GREEN ON_YELLOW ON_BLUE ON_MAGENTA ON_CYAN ON_WHITE 
 ``` 

 ## よくアクセスしてきてるIPアドレス TOP100を出力 

 ワンライナーでいける。 

 ``` 
 # cat /var/log/httpd/access_log*|awk '{print $1}'|grep -v '::1'|sort|uniq -c|sort -nr|head -100 
 ``` 

 ## IPアドレスがどこの国から来てるか調べる 

 http://cc.wariate.jp/ さんのお世話になることで可能になる。 
 ありがとうございます。 

 こんなシェルスクリプトを作った。nslookupがインストールされていることが前提 

 ### whereDoYouComeFrom.sh 

 ``` 
 #!/bin/sh 

 if [ $# = "0" ] 
 then 
         echo "ex>${0} [ip address].." 
         exit 1 
 fi 

 if echo "${1}"|grep l >/dev/null 
 then 
         # Display only Country "-l" 
         SWITCH="ON" 
         shift 
 fi 

 for WORD in "${@}" 
 do 
         REVERS_IP=`echo ${WORD}|awk -F'.' '{print $4,".",$3,".",$2,".",$1}'|sed -e 's/ / 
 /g'` 
         COUNTRY=`nslookup -type=TXT ${REVERS_IP}.cc.wariate.jp|grep '"'|awk -F'"' '{prin 
 t $2}' ` 

         if [ "${SWITCH}" = "ON" ] 
         then 
                 echo "${COUNTRY}" 
         else 
                 echo "${WORD}     ${COUNTRY}" 
         fi 
 done 

 exit 0 
 ``` 

 で、以下みたいに使う 

 ``` 
 # whereDoYouComeFrom.sh 182.22.59.229 
 182.22.59.229     JP 
 ``` 

 ## Linuxでファイル・ディレクトリ監視を行う『inotify』 

 Linuxでファイル・ディレクトリ監視を行う『inotify』 
 http://orebibou.com/2015/04/linux%E3%81%A7%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%BB%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E7%9B%A3%E8%A6%96%E3%82%92%E8%A1%8C%E3%81%86%E3%80%8Einotify%E3%80%8F/ 

 inotifywaitを用いたファイルのバージョニング・バックアップスクリプトの作成 
 http://orebibou.com/2015/05/inotifywait%E3%82%92%E7%94%A8%E3%81%84%E3%81%9F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0%E3%83%BB%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2/ 

 ファイルやディレクトリの編集・変更などに応じてプログラムを実行させる『incron』 
 http://orebibou.com/2015/04/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%84%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AE%E7%B7%A8%E9%9B%86%E3%83%BB%E5%A4%89%E6%9B%B4%E3%81%AA%E3%81%A9%E3%81%AB%E5%BF%9C%E3%81%98/ 

 再帰的にフォルダを監視できるincronライクなコマンド『Watcher』 
 http://orebibou.com/2015/05/%E5%86%8D%E5%B8%B0%E7%9A%84%E3%81%AB%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%82%92%E7%9B%A3%E8%A6%96%E3%81%A7%E3%81%8D%E3%82%8Bincron%E3%83%A9%E3%82%A4%E3%82%AF%E3%81%AA%E3%82%B3%E3%83%9E%E3%83%B3/ 

 ## ddとsshを使ってネットワークごしにディスクイメージをコピーする 

 ### ローカルのディスクをサーバにコピーする場合 

 ``` 
 $ dd if=デバイスファイル | gzip -1 - | ssh ユーザ名@ホスト名(IPアドレス) dd of=コピー後のファイル名 
 ``` 

 ### dd if=デバイスファイル | gzip -1 - | ssh ユーザ名@ホスト名(IPアドレス) dd of=コピー後のファイル名 

 ``` 
 $ ssh ユーザ名@ホスト名(IPアドレス) dd if=コピー後のファイル名 | gzip -1 - | dd of=デバイスファイル 
 ``` 

 ## vimでリモート先のファイルをsshプロトコル経由で編集する 

 ``` 
 $ vim scp://ユーザ名@リモートホスト(IPアドレス)//編集対象のファイル 
 ``` 

 ## ファイルの削除前に、そのファイルを参照しているシンボリックリンクを確認する 

 ``` 
 $ ls -la $(find -L /シンボリックリンクがあるフォルダのPATH -samefile /オリジナルファイルのPATH) 
 $ ls -la $(find -L /{work,home} -samefile /work/test.txt) 
 ``` 

 ## 『chattr』コマンドで属性を変更し追記専用や削除不可能なファイルにする 

 ``` 
 $ chattr [オプション] [属性の変更値] ファイル・ディレクトリ 
 ``` 

 | オプション | 説明                                             | 
 |------------+------------------------------------------------| 
 | -R           | フォルダ内のファイルの属性値を再帰的に変更する | 
 | -V           | 属性値の変更内容を詳細に出力する                 | 
 | -f           | エラーメッセージを抑制する                       | 


 | 属性の変更値 | 説明                                             | 
 |--------------+------------------------------------------------| 
 | a              | 追記編集のみ可能とする 
 | c              | ファイルの圧縮を行う 
 | d              | dumpの対象外にする 
 | e              | 拡張フォーマットを使用する 
 | i              | ファイルを変更出来なくする 
 | j              | データのジャーナリングを行う 
 | s              | 安全に削除させる(データブロック内を消去) 
 | t              | 末尾のマージをできなくする 
 | u              | ファイルを削除不可にする 
 | A              | atime(アクセス時刻)を更新しない 
 | D              | ディレクトリを同期的に更新する 
 | S              | 同期的に更新する 

 属性値を追加する場合は「+」を、削除する場合は「-」の後に記述する。 

 ## extglobを有効にして「指定したパターン以外のファイル」を指定する 

 ### 現状、有効か無効か確認する 

 ``` 
 $ shopt | grep extglob 
 ``` 

 ### extglobを有効にする 

 ``` 
 $ shopt -s extglob 
 ``` 

 ### extglobでできること 

 ワイルドカードの指定で以下が利用可能になる 

 | extglob       | 説明                                             | 
 |-------------+------------------------------------------------| 
 | ?(パターン) | 指定したパターンに一致するものを指定 
 | *(パターン) | 指定したパターンを0回以上繰り返すものを指定 
 | +(パターン) | 指定したパターンを0回以上繰り返すものを指定 
 | @(パターン) | 指定したパターンのいずれかに一致するものを指定 
 | !(パターン) | 指定したパターンに該当しないものを指定 

 例 

 「/work」フォルダにある、「aaaaa.txt」および「bbbbb.txt」以外を抽出する 

 ``` 
 $ ls -la /work/!(aaaaa.txt|bbbbb.txt) 
 ``` 

 ### Linux Performance Observability Tools 

 Linux Performance Observability Tools 
 https://twitter.com/kamranahmedse/status/1501116746811547654 

 {{rawhtml(<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Linux Performance Observability Tools<a href="https://t.co/N9VkCQFAcw">https://t.co/N9VkCQFAcw</a> <a href="https://t.co/3wfuNSQmPL">pic.twitter.com/3wfuNSQmPL</a></p>&mdash; Kamran Ahmed (@kamranahmedse) <a href="https://twitter.com/kamranahmedse/status/1501116746811547654?ref_src=twsrc%5Etfw">March 8 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>)}} 





 # Tool 

 ## peco - インタラクティブ・フィルタリングツール 

 Qiita - おい、peco もいいけど fzf 使えよ 
 http://qiita.com/b4b4r07/items/9e1bbffb1be70b6ce033 

 Qiita - 例えば、pecoをビルドしない 
 http://qiita.com/lestrrat/items/de8565fe32864f76ac19 

 ## up 

 up - the Ultimate Plumber 
 https://github.com/akavel/up 

 >実行結果をインタラクティブに表示 Ctrl+x でそこまで記述したものをシェルスクリプトとして出力する 

 ## lnav - コンソール上でログをカラフルに見やすく表示してくれるログビューアコマンド 

 lnav 
 http://lnav.org/ 





 ### インストール 

 ``` 
 # wget https://github.com/tstack/lnav/releases/download/v0.7.3/lnav-0.7.3-linux-64bit.zip 
 # unzip lnav-0.7.3-linux-64bit.zip 
 # mv lnav-0.7.3/lnav /usr/local/bin/ 
 # cd /usr/local/bin/ 
 # chmod +x ./lnav 
 ``` 

 ### 基本的な使い方  

 ``` 
 # lnav /var/log/messages /var/log/httpd/access_log /var/log/httpd/error_log /var/log/secure /var/log/cron /var/log/maillog 
 ``` 

 ログに対してSQL検索もできるらしい。詳しくは[こちら](http://lnav.org/features/) 

 ## Any tools 

 偏りに満ちたWayland時代のLinux Desktopおすすめアプリ 2024 
 https://joker1007.hatenablog.com/entry/2024/03/29/222656 

 Linuxでトラブルが発生したときの診断に役立つツール一覧、「事前のインストールを強く推奨」とリストの作者は語る 
 https://gigazine.net/news/20240327-linux-crisis-tools/ 










 # Memo 

 LPIC - Linux教科書 
 http://lpi.or.jp/linuxtext/admin.shtml 

 rcmdnk's blog - ssh周りの設定、Tipsのまとめ 
 http://rcmdnk.github.io/blog/2015/09/09/computer-remote/ 

 メモ。。メモ。。 - 【RHEL】linuxのメモリ使用率(利用率)の計算方法 
 http://nopipi.hatenablog.com/entry/2015/09/13/181026 

 Qiita - 最強のSSH踏み台設定 
 http://qiita.com/kawaz/items/a0151d3aa2b6f9c4b3b8 

 余白の書きなぐり - sshで多段接続 (ncも-Wもない人用) 
 http://auewe.hatenablog.com/entry/2014/03/10/043030 

 RHEL/CentOSユーザーのUbuntu入門【コマンド、設定ファイル編】 
 http://dev.classmethod.jp/server-side/os/ubuntu-command-for-centos-useres/ 

 CentOSで自宅サーバー構築 
 http://centossrv.com/ 

 メモ。。メモ。。 - 【RHEL】linuxのメモリ使用率(利用率)の計算方法 
 http://nopipi.hatenablog.com/entry/2015/09/13/181026 

 Tech random memoranda - Linuxのブートシーケンスの基礎まとめ 
 http://nishidy.hatenablog.com/entry/2016/09/08/230637 

 GitBook - Linux Inside 
 https://www.gitbook.com/book/0xax/linux-insides/details 

 LISA2019 Linux Systems Performance 
 https://www.slideshare.net/brendangregg/lisa2019-linux-systems-performance 

 Linux Performance 
 http://www.brendangregg.com/linuxperf.html 

 SRE deep dive into Linux Page Cache # SRE が Linux ページ キャッシュを深く掘り下げる 
 https://biriukov.dev/docs/page-cache/0-linux-page-cache-for-sre/ 

 Linuxサーバのセキュリティ監視プラクティス (概要編) 
 https://qiita.com/odorusatoshi/items/05209655932f0bb401ba 

 LinuxサーバーのTCPネットワークのパフォーマンスを決定するカーネルパラメータ – 3編 
 https://meetup-jp.nhncloud.com/1516