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