Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: 資訊學習

grep 時保留前後 N 行內文

Posted on 2016 年 9 月 27 日2021 年 3 月 12 日 By 日落 在〈grep 時保留前後 N 行內文〉中尚無留言

一般 grep 只會將出現關鍵字的那一行文字顯示出來,例如:

johnroyer@box:~/logs$ zgrep 'parse' *gz
2016-02-27.log.gz:[2016-02-27 12:00:35] local.INFO: DOMDocument cannot parse XML: Premature end of data in tag html line 2
2016-02-27.log.gz:[2016-02-27 12:00:36] local.INFO: DOMDocument cannot parse XML: Premature end of data in tag html line 2
2016-02-27.log.gz:[2016-02-27 12:01:08] local.INFO: DOMDocument cannot parse XML: Premature end of data in tag html line 2
....

但有時顯示出來的訊息只是 function call stack trace 的其中一行,單看這一行無法理解到底發生了什麼事情。

遇到這種情況時,可以透過參數「-A」和「-B」來設定保留前後文:

johnroyer@box:~/logs$ zgrep 'Exception' *.gz -A 5 -B 2
[2016-05-29 23:41:22] production.INFO: RuntimeException: https://theinitium.com/newsfeed/
[2016-05-29 23:41:22] production.INFO: DOMDocument cannot parse XML: PCDATA invalid Char value 8
[2016-05-29 23:41:23] production.ERROR: exception 'RuntimeException' with message 'Invalid host label, check its content' in /home/segm/prod/www-crawler/vendor/league/url/src/Components/Host.php:164
Stack trace:
#0 /home/segm/prod/www-crawler/vendor/league/url/src/Components/AbstractSegment.php(47): LeagueUrlComponentsHost->validate('rss_Content.jsp')
#1 /home/segm/prod/www-crawler/vendor/league/url/src/Components/AbstractSegment.php(39): LeagueUrlComponentsAbstractSegment->set('rss_Content.jsp')
#2 /home/segm/prod/www-crawler/vendor/league/url/src/Components/Host.php(72): LeagueUrlComponentsAbstractSegment->__construct('rss_Content.jsp')
#3 /home/segm/prod/www-crawler/vendor/league/url/src/AbstractUrl.php(226): LeagueUrlComponentsHost->__construct('rss_Content.jsp')
.....

上面的範例是關鍵字前保留 2 行,往後保留 5 行。

Tags:Bash, Linux, 資訊學習

在 gnome-teminal 使用 Ctrl + arrow 切換 GNU screen 視窗

Posted on 2016 年 6 月 26 日2021 年 3 月 12 日 By 日落 在〈在 gnome-teminal 使用 Ctrl + arrow 切換 GNU screen 視窗〉中有 2 則留言

這邊標題應該下的不是很好,其實問題和 gnome-teminal 應該是沒什麼關係的。

在 windows 透過 pietty (快換 putty 吧) 連上 server 時,都是直接用 Ctrl + 左/右 來切換 windows, .screenrc 設定方式如下:

bindkey 33[C next
bindkey 33[D prev

不過當 client 是 Ubuntu 時,在 gnome-terminal 操作時,Ctrl + arraow 卻完全沒有效果。後來友人提示在 screen 底下可以先 ctrl + V,再按下 key binding,screen 會把收到的 key code 顯示出來,方便 debug。嘗試了不少種組合都沒有成功。

當 Google 第一頁搜尋結果無法找到方法時,只好往第二頁找屍體。慢慢看到有人提到需要修改 /etc/inputrc 的設定:

# allow the use of the Home/End keys
"e[1~": beginning-of-line
"e[4~": end-of-line

# allow the use of the Delete/Insert keys
"e[3~": delete-char
"e[2~": quoted-insert

....

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"e[1;5C": forward-word
"e[1;5D": backward-word
"e[5C": forward-word
"e[5D": backward-word
"ee[C": forward-word
"ee[D": backward-word

設定檔中間可以看到 Ctrl + arrow 已經被轉成 forward-word 等操作,把那幾行註解掉即可。

ps. 除了 ssh client 這邊的 inputrc 需要修改外,server side 若有 inputrc 也需要一起修改,不然 client 送過去的 key binding 還是會被 server 改掉。

Tags:Linux, Ubuntu, 資訊學習

準備離開 StartSSL

Posted on 2016 年 2 月 23 日2021 年 3 月 12 日 By 日落 在〈準備離開 StartSSL〉中有 2 則留言

Why I stopped using StartSSL (Hint: it involves a Chinese company)
https://pierrekim.github.io/blog/2016-02-16-why-i-stopped-using-startssl-because-of-qihoo-360.html

由於 cert 被扔到大陸機房去,所以還是換家 SSL provider 比較安全一點。

噗浪上有不少朋友提供 Let’s Encrypt 的解決方案,除了「root can only help」以外,好像沒什麼奇怪的地方。另外 JoeHorn 寫了一個全自動 renew 的 script,假日的時候來玩玩看 ~

Tags:資訊學習, 資訊安全

同時追蹤多個 log 檔

Posted on 2015 年 11 月 9 日2021 年 3 月 12 日 By 日落 在〈同時追蹤多個 log 檔〉中有 2 則留言

通常我們會用「tail -f FILE」來將檔案新增加的內容顯示在螢幕上,不過要同時顯示多個檔案的新資料就有點麻煩了,會需要改成以下寫法:

tail -f FILE_1 -f FILE_2 ....

所以有人寫了個歡樂的工具叫做「multitail」可以一次監視多個檔案,甚至還會自動幫你切割視窗來顯示不同檔案的內容。

要做到同上的功能,只要這樣寫:

multitail FILE_1 FILE_2

若要觀察的檔案太多,多到分割視窗根本看不到東西時,也可以讓 multitail 不要做切割,全部顯示在一起就好:

 multitail --mergeall FILE_1 FILE_2
Tags:Linux, 資訊學習

寫 shell script 的一些平行處理工具

Posted on 2015 年 9 月 16 日2021 年 3 月 12 日 By 日落 在〈寫 shell script 的一些平行處理工具〉中有 4 則留言

最近在處理數十 TB 的 HTTP server log 有感,記錄一些可以拿來做分散式運算的工具以及語法 (參數)。

pigz

gzip 一直是你的好工具,特別是儲存空間放在網路上時,可以大幅的減少讀取、寫入資料時所需要的 throughput。不過 gzip 一次只會用到一個 CPU core 壓縮資料,所以有人寫了 pigz ,在壓縮時建立多個 thread 同時運算。

還有不少針對 gz 的工具可以使用,像是:zcat、zgrep 和 zless (這超神奇,其實打 less 好像就會自動偵測是不是 gz 了  XD)

parallel

之前的筆記參考一下即可。

sort

排序大量資料也是會耗掉相當多的時間,幸好 sort 內建平行運算功能,只要加個參數即可。

$ sort --parallel=8 -S 4G unsort.list > sorted.list

「–parallel」可以指定要同時多少資源做排序,而「-S」則是設定要使用多大的記憶體來做排序。

xargs

感謝 Joe Horn 和 Wen-Shih Chao 提供指點,xargs 也有 parallel 的功能。使用「-P」參數就可以讓 xargs 自動做平行處理。

ls *.log | xargs -P 8 grep PATTERN

目前最常用的是這幾個,其他的就待以後用到慢慢補上。若有更好的做法也歡迎分享~

Tags:Bash, Linux, 分享, 資訊學習

文章分頁

上一頁 1 ... 8 9 10 ... 53 下一頁

其他

關於我  (About me)

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.