Linux » 履歴 » バージョン 2
  kanata, 2025/04/13 16:12 
  
| 1 | 1 | kanata | # Linux | 
|---|---|---|---|
| 2 | |||
| 3 | みんなの役に立つかもしれないと思った物をメモ | ||
| 4 | |||
| 5 | {{toc}} | ||
| 6 | |||
| 7 | {{child_pages}} | ||
| 8 | |||
| 9 | # KnowHow | ||
| 10 | |||
| 11 | ## コマンドラインからgmailを送る | ||
| 12 | |||
| 13 | ■python で SMTP 認証を行ってメールを送信する | ||
| 14 | http://t2y.hatenablog.jp/entry/20090705/1246772990 | ||
| 15 | |||
| 16 | の snakemail.py を使うと送れる。スクリプト1本で動く。 | ||
| 17 | とても便利です。 | ||
| 18 | |||
| 19 | |||
| 20 | ## ログ監視時に特定のキーワードを引っ掛けて色を着ける | ||
| 21 | |||
| 22 | 以下の2ファイルを作る | ||
| 23 | |||
| 24 | ### rcg.pl | ||
| 25 | |||
| 26 | ``` | ||
| 27 | #!/usr/bin/perl -w | ||
| 28 | use strict; | ||
| 29 | use Term::ANSIColor qw(:constants); | ||
| 30 | |||
| 31 | my %target = (); | ||
| 32 | |||
| 33 | while (my $arg = shift) { | ||
| 34 | my $clr = shift; | ||
| 35 | |||
| 36 | if(($arg =~ /^-/) | (!$clr)) { | ||
| 37 | print "Usage: rcg [regex] [color] [regex] [color] ...\n"; | ||
| 38 | exit; | ||
| 39 | } | ||
| 40 | |||
| 41 | # | ||
| 42 | # Ugly, lazy, pathetic hack here | ||
| 43 | # | ||
| 44 | $target{$arg} = eval($clr); | ||
| 45 | } | ||
| 46 | |||
| 47 | my $rst = RESET; | ||
| 48 | |||
| 49 | while(<>) { | ||
| 50 | foreach my $x (keys(%target)) { | ||
| 51 | s/($x)/$target{$x}$1$rst/g; | ||
| 52 | } | ||
| 53 | print; | ||
| 54 | } | ||
| 55 | |||
| 56 | ``` | ||
| 57 | |||
| 58 | 今だと[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/)というのがあるのでこっちの方が便利そうです | ||
| 59 | |||
| 60 | ### syslog.sh | ||
| 61 | |||
| 62 | ``` | ||
| 63 | #!/bin/sh | ||
| 64 | |||
| 65 | # 色つきシスログのtail -f | ||
| 66 | |||
| 67 | RCG="/usr/local/bin/rcg.pl" | ||
| 68 | |||
| 69 | tail -f /var/log/messages |${RCG} '.*ERROR.*' 'BOLD . RED' \ | ||
| 70 | '.*Error.*' 'BOLD.RED' \ | ||
| 71 | '.*WARNING.*' 'BOLD.BLUE' \ | ||
| 72 | '.*DEBUG.*' 'YELLOW' \ | ||
| 73 | '.*INFO.*' 'GREEN' \ | ||
| 74 | '.*NOTICE.*' 'GREEN' \ | ||
| 75 | '.*LOGIN.*' 'CYAN' \ | ||
| 76 | '.*session.*' 'CYAN' \ | ||
| 77 | '.*fail.*' 'RED' \ | ||
| 78 | '.*deny.*' 'RED' \ | ||
| 79 | '.*Deny.*' 'RED' \ | ||
| 80 | '.*denied.*' 'RED' \ | ||
| 81 | '.*Denied.*' 'RED' \ | ||
| 82 | '.*refused.*' 'RED' \ | ||
| 83 | '.*Unable.*' 'RED' \ | ||
| 84 | '.*down.*' 'MAGENTA' | ||
| 85 | |||
| 86 | exit 0 | ||
| 87 | ``` | ||
| 88 | |||
| 89 | で、以下の通り、実行権限つけたりした後、syslog.shを実行すると、シスログに色がついた状態で tail -f してログが見れる。 | ||
| 90 | 同じやり方でアクセスログとかも色付けられます。 | ||
| 91 | |||
| 92 | ``` | ||
| 93 | # chmod ugo+x rcg.pl | ||
| 94 | # mv -i rcg.pl /usr/local/bin | ||
| 95 | # chmod ugo+x syslog.sh | ||
| 96 | # ./syslog.sh | ||
| 97 | ``` | ||
| 98 | |||
| 99 | また、rcg.pl は該当箇所を色付けできるので | ||
| 100 | |||
| 101 | ``` | ||
| 102 | # cat test.txt | rcg.pl 'error' 'BOLD . RED' | ||
| 103 | ``` | ||
| 104 | みたいに使うと、特定の箇所だけ色付けして表示できる。 | ||
| 105 | |||
| 106 | perlの ANSIColor.pm というやつを使って実現している。指定できる色は、以下の通り。 | ||
| 107 | |||
| 108 | ``` | ||
| 109 | CLEAR RESET BOLD DARK UNDERLINE UNDERSCORE BLINK REVERSE CONCEALED | ||
| 110 | BLACK RED GREEN YELLOW BLUE MAGENTA CYAN WHITE | ||
| 111 | ON_BLACK ON_RED ON_GREEN ON_YELLOW ON_BLUE ON_MAGENTA ON_CYAN ON_WHITE | ||
| 112 | ``` | ||
| 113 | |||
| 114 | ## よくアクセスしてきてるIPアドレス TOP100を出力 | ||
| 115 | |||
| 116 | ワンライナーでいける。 | ||
| 117 | |||
| 118 | ``` | ||
| 119 | # cat /var/log/httpd/access_log*|awk '{print $1}'|grep -v '::1'|sort|uniq -c|sort -nr|head -100 | ||
| 120 | ``` | ||
| 121 | |||
| 122 | ## IPアドレスがどこの国から来てるか調べる | ||
| 123 | |||
| 124 | http://cc.wariate.jp/ さんのお世話になることで可能になる。 | ||
| 125 | ありがとうございます。 | ||
| 126 | |||
| 127 | こんなシェルスクリプトを作った。nslookupがインストールされていることが前提 | ||
| 128 | |||
| 129 | ### whereDoYouComeFrom.sh | ||
| 130 | |||
| 131 | ``` | ||
| 132 | #!/bin/sh | ||
| 133 | |||
| 134 | if [ $# = "0" ] | ||
| 135 | then | ||
| 136 |         echo "ex>${0} [ip address].." | ||
| 137 | exit 1 | ||
| 138 | fi | ||
| 139 | |||
| 140 | if echo "${1}"|grep l >/dev/null | ||
| 141 | then | ||
| 142 | # Display only Country "-l" | ||
| 143 | SWITCH="ON" | ||
| 144 | shift | ||
| 145 | fi | ||
| 146 | |||
| 147 | for WORD in "${@}" | ||
| 148 | do | ||
| 149 |         REVERS_IP=`echo ${WORD}|awk -F'.' '{print $4,".",$3,".",$2,".",$1}'|sed -e 's/ / | ||
| 150 | /g'` | ||
| 151 |         COUNTRY=`nslookup -type=TXT ${REVERS_IP}.cc.wariate.jp|grep '"'|awk -F'"' '{prin | ||
| 152 | t $2}' ` | ||
| 153 | |||
| 154 |         if [ "${SWITCH}" = "ON" ] | ||
| 155 | then | ||
| 156 |                 echo "${COUNTRY}" | ||
| 157 | else | ||
| 158 |                 echo "${WORD}   ${COUNTRY}" | ||
| 159 | fi | ||
| 160 | done | ||
| 161 | |||
| 162 | exit 0 | ||
| 163 | ``` | ||
| 164 | |||
| 165 | で、以下みたいに使う | ||
| 166 | |||
| 167 | ``` | ||
| 168 | # whereDoYouComeFrom.sh 182.22.59.229 | ||
| 169 | 182.22.59.229 JP | ||
| 170 | ``` | ||
| 171 | |||
| 172 | ## Linuxでファイル・ディレクトリ監視を行う『inotify』 | ||
| 173 | |||
| 174 | Linuxでファイル・ディレクトリ監視を行う『inotify』 | ||
| 175 | 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/ | ||
| 176 | |||
| 177 | inotifywaitを用いたファイルのバージョニング・バックアップスクリプトの作成 | ||
| 178 | 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/ | ||
| 179 | |||
| 180 | ファイルやディレクトリの編集・変更などに応じてプログラムを実行させる『incron』 | ||
| 181 | 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/ | ||
| 182 | |||
| 183 | 再帰的にフォルダを監視できるincronライクなコマンド『Watcher』 | ||
| 184 | 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/ | ||
| 185 | |||
| 186 | ## ddとsshを使ってネットワークごしにディスクイメージをコピーする | ||
| 187 | |||
| 188 | ### ローカルのディスクをサーバにコピーする場合 | ||
| 189 | |||
| 190 | ``` | ||
| 191 | $ dd if=デバイスファイル | gzip -1 - | ssh ユーザ名@ホスト名(IPアドレス) dd of=コピー後のファイル名 | ||
| 192 | ``` | ||
| 193 | |||
| 194 | ### dd if=デバイスファイル | gzip -1 - | ssh ユーザ名@ホスト名(IPアドレス) dd of=コピー後のファイル名 | ||
| 195 | |||
| 196 | ``` | ||
| 197 | $ ssh ユーザ名@ホスト名(IPアドレス) dd if=コピー後のファイル名 | gzip -1 - | dd of=デバイスファイル | ||
| 198 | ``` | ||
| 199 | |||
| 200 | ## vimでリモート先のファイルをsshプロトコル経由で編集する | ||
| 201 | |||
| 202 | ``` | ||
| 203 | $ vim scp://ユーザ名@リモートホスト(IPアドレス)//編集対象のファイル | ||
| 204 | ``` | ||
| 205 | |||
| 206 | ## ファイルの削除前に、そのファイルを参照しているシンボリックリンクを確認する | ||
| 207 | |||
| 208 | ``` | ||
| 209 | $ ls -la $(find -L /シンボリックリンクがあるフォルダのPATH -samefile /オリジナルファイルのPATH) | ||
| 210 | $ ls -la $(find -L /{work,home} -samefile /work/test.txt) | ||
| 211 | ``` | ||
| 212 | |||
| 213 | ## 『chattr』コマンドで属性を変更し追記専用や削除不可能なファイルにする | ||
| 214 | |||
| 215 | ``` | ||
| 216 | $ chattr [オプション] [属性の変更値] ファイル・ディレクトリ | ||
| 217 | ``` | ||
| 218 | |||
| 219 | | オプション | 説明 | | ||
| 220 | |------------+------------------------------------------------| | ||
| 221 | | -R | フォルダ内のファイルの属性値を再帰的に変更する | | ||
| 222 | | -V | 属性値の変更内容を詳細に出力する | | ||
| 223 | | -f | エラーメッセージを抑制する | | ||
| 224 | |||
| 225 | |||
| 226 | | 属性の変更値 | 説明 | | ||
| 227 | |--------------+------------------------------------------------| | ||
| 228 | | a | 追記編集のみ可能とする | ||
| 229 | | c | ファイルの圧縮を行う | ||
| 230 | | d | dumpの対象外にする | ||
| 231 | | e | 拡張フォーマットを使用する | ||
| 232 | | i | ファイルを変更出来なくする | ||
| 233 | | j | データのジャーナリングを行う | ||
| 234 | | s | 安全に削除させる(データブロック内を消去) | ||
| 235 | | t | 末尾のマージをできなくする | ||
| 236 | | u | ファイルを削除不可にする | ||
| 237 | | A | atime(アクセス時刻)を更新しない | ||
| 238 | | D | ディレクトリを同期的に更新する | ||
| 239 | | S | 同期的に更新する | ||
| 240 | |||
| 241 | 属性値を追加する場合は「+」を、削除する場合は「-」の後に記述する。 | ||
| 242 | |||
| 243 | ## extglobを有効にして「指定したパターン以外のファイル」を指定する | ||
| 244 | |||
| 245 | ### 現状、有効か無効か確認する | ||
| 246 | |||
| 247 | ``` | ||
| 248 | $ shopt | grep extglob | ||
| 249 | ``` | ||
| 250 | |||
| 251 | ### extglobを有効にする | ||
| 252 | |||
| 253 | ``` | ||
| 254 | $ shopt -s extglob | ||
| 255 | ``` | ||
| 256 | |||
| 257 | ### extglobでできること | ||
| 258 | |||
| 259 | ワイルドカードの指定で以下が利用可能になる | ||
| 260 | |||
| 261 | | extglob | 説明 | | ||
| 262 | |-------------+------------------------------------------------| | ||
| 263 | | ?(パターン) | 指定したパターンに一致するものを指定 | ||
| 264 | | *(パターン) | 指定したパターンを0回以上繰り返すものを指定 | ||
| 265 | | +(パターン) | 指定したパターンを0回以上繰り返すものを指定 | ||
| 266 | | @(パターン) | 指定したパターンのいずれかに一致するものを指定 | ||
| 267 | | !(パターン) | 指定したパターンに該当しないものを指定 | ||
| 268 | |||
| 269 | 例 | ||
| 270 | |||
| 271 | 「/work」フォルダにある、「aaaaa.txt」および「bbbbb.txt」以外を抽出する | ||
| 272 | |||
| 273 | ``` | ||
| 274 | $ ls -la /work/!(aaaaa.txt|bbbbb.txt) | ||
| 275 | ``` | ||
| 276 | |||
| 277 | ### Linux Performance Observability Tools | ||
| 278 | |||
| 279 | Linux Performance Observability Tools | ||
| 280 | https://twitter.com/kamranahmedse/status/1501116746811547654 | ||
| 281 | |||
| 282 | {{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>— 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>)}} | ||
| 283 | |||
| 284 | |||
| 285 | |||
| 286 | |||
| 287 | |||
| 288 | # Tool | ||
| 289 | |||
| 290 | ## peco - インタラクティブ・フィルタリングツール | ||
| 291 | |||
| 292 | Qiita - おい、peco もいいけど fzf 使えよ | ||
| 293 | http://qiita.com/b4b4r07/items/9e1bbffb1be70b6ce033 | ||
| 294 | |||
| 295 | Qiita - 例えば、pecoをビルドしない | ||
| 296 | http://qiita.com/lestrrat/items/de8565fe32864f76ac19 | ||
| 297 | |||
| 298 | ## up | ||
| 299 | |||
| 300 | up - the Ultimate Plumber | ||
| 301 | https://github.com/akavel/up | ||
| 302 | |||
| 303 | >実行結果をインタラクティブに表示 Ctrl+x でそこまで記述したものをシェルスクリプトとして出力する | ||
| 304 | |||
| 305 | ## lnav - コンソール上でログをカラフルに見やすく表示してくれるログビューアコマンド | ||
| 306 | |||
| 307 | lnav | ||
| 308 | http://lnav.org/ | ||
| 309 | |||
| 310 | |||
| 311 | |||
| 312 | |||
| 313 | |||
| 314 | ### インストール | ||
| 315 | |||
| 316 | ``` | ||
| 317 | # wget https://github.com/tstack/lnav/releases/download/v0.7.3/lnav-0.7.3-linux-64bit.zip | ||
| 318 | # unzip lnav-0.7.3-linux-64bit.zip | ||
| 319 | # mv lnav-0.7.3/lnav /usr/local/bin/ | ||
| 320 | # cd /usr/local/bin/ | ||
| 321 | # chmod +x ./lnav | ||
| 322 | ``` | ||
| 323 | |||
| 324 | ### 基本的な使い方 | ||
| 325 | |||
| 326 | ``` | ||
| 327 | # lnav /var/log/messages /var/log/httpd/access_log /var/log/httpd/error_log /var/log/secure /var/log/cron /var/log/maillog | ||
| 328 | ``` | ||
| 329 | |||
| 330 | ログに対してSQL検索もできるらしい。詳しくは[こちら](http://lnav.org/features/) | ||
| 331 | |||
| 332 | ## Any tools | ||
| 333 | |||
| 334 | 偏りに満ちたWayland時代のLinux Desktopおすすめアプリ 2024 | ||
| 335 | https://joker1007.hatenablog.com/entry/2024/03/29/222656 | ||
| 336 | |||
| 337 | Linuxでトラブルが発生したときの診断に役立つツール一覧、「事前のインストールを強く推奨」とリストの作者は語る | ||
| 338 | https://gigazine.net/news/20240327-linux-crisis-tools/ | ||
| 339 | |||
| 340 | |||
| 341 | |||
| 342 | |||
| 343 | |||
| 344 | |||
| 345 | |||
| 346 | |||
| 347 | |||
| 348 | |||
| 349 | # Memo | ||
| 350 | |||
| 351 | LPIC - Linux教科書 | ||
| 352 | http://lpi.or.jp/linuxtext/admin.shtml | ||
| 353 | |||
| 354 | rcmdnk's blog - ssh周りの設定、Tipsのまとめ | ||
| 355 | http://rcmdnk.github.io/blog/2015/09/09/computer-remote/ | ||
| 356 | |||
| 357 | メモ。。メモ。。 - 【RHEL】linuxのメモリ使用率(利用率)の計算方法 | ||
| 358 | http://nopipi.hatenablog.com/entry/2015/09/13/181026 | ||
| 359 | |||
| 360 | Qiita - 最強のSSH踏み台設定 | ||
| 361 | http://qiita.com/kawaz/items/a0151d3aa2b6f9c4b3b8 | ||
| 362 | |||
| 363 | 余白の書きなぐり - sshで多段接続 (ncも-Wもない人用) | ||
| 364 | http://auewe.hatenablog.com/entry/2014/03/10/043030 | ||
| 365 | |||
| 366 | RHEL/CentOSユーザーのUbuntu入門【コマンド、設定ファイル編】 | ||
| 367 | http://dev.classmethod.jp/server-side/os/ubuntu-command-for-centos-useres/ | ||
| 368 | |||
| 369 | CentOSで自宅サーバー構築 | ||
| 370 | http://centossrv.com/ | ||
| 371 | |||
| 372 | メモ。。メモ。。 - 【RHEL】linuxのメモリ使用率(利用率)の計算方法 | ||
| 373 | http://nopipi.hatenablog.com/entry/2015/09/13/181026 | ||
| 374 | |||
| 375 | Tech random memoranda - Linuxのブートシーケンスの基礎まとめ | ||
| 376 | http://nishidy.hatenablog.com/entry/2016/09/08/230637 | ||
| 377 | |||
| 378 | GitBook - Linux Inside | ||
| 379 | https://www.gitbook.com/book/0xax/linux-insides/details | ||
| 380 | |||
| 381 | LISA2019 Linux Systems Performance | ||
| 382 | https://www.slideshare.net/brendangregg/lisa2019-linux-systems-performance | ||
| 383 | |||
| 384 | Linux Performance | ||
| 385 | http://www.brendangregg.com/linuxperf.html | ||
| 386 | |||
| 387 | SRE deep dive into Linux Page Cache # SRE が Linux ページ キャッシュを深く掘り下げる | ||
| 388 | https://biriukov.dev/docs/page-cache/0-linux-page-cache-for-sre/ | ||
| 389 | |||
| 390 | Linuxサーバのセキュリティ監視プラクティス (概要編) | ||
| 391 | https://qiita.com/odorusatoshi/items/05209655932f0bb401ba | ||
| 392 | |||
| 393 | LinuxサーバーのTCPネットワークのパフォーマンスを決定するカーネルパラメータ – 3編 | ||
| 394 | https://meetup-jp.nhncloud.com/1516 |