零散的筆記

系統

gdb

gdb跟蹤zlib庫

  • 編譯debug版本
  • 鏈到編譯的庫
  • gdb -derictory 指定目錄

gdb打印jemalloc輸出信息

set scheduler-locking on

<pre>
echo 'p malloc_stats_print(0,0,0)' | gdb --quiet -nx /proc/30252/exe 30252 ___ Begin jemalloc statistics ___export LD_PRELOAD=/home/canfang.scf/libjemalloc.so.2
</pre>

gdb 調試

set scheduler-locking off|on|step
set logging on xx.log/off
set pagination off
thread find xxx
thread xx
gcore

vim

vim替換

:s/yeti\/mysql/yeti\/workspace\/mysql/g 替換當前行所有的
:%s/yeti\/mysql/yeti\/workspace\/mysql/g 替換每一行

vim刪除空行

 :g/^$/d

vim刪除

去除重復行

sort file | uniq

處理字符串

:%s//要添加的內容 行尾添加相同的內容: :%s/^/要添加的內容 首添加相同的內容 :%s/^.\{10\}// 刪除前10個字符 :%s/.\{10\}// 刪除后10個字符

git

git clean

git clean -nxfd
git clean -nf
git clean -nfd

git別名

git config --global alias.st status

顯示提交信息:
git config --add remote.origin.fetch refs/notes/review:refs/notes/review
git fetch
git config --global alias.lg 'log --show-notes=review'

others

iostat

iostat -dxm 1 10
iostat -xm 1

mac install

sudo pip install requests

修改文件所屬權限

 sudo chown -R canfang.scf:users yeti
 sudo chmod a=rwx corefiles  all

拷貝忽略某些目錄

ls | grep -v "排除目錄" | xargs -i cp -a {} "目標目錄"
grep -r --exclude="*.o" "gcov" .
--exclude-dir=

為yeti.scf創建軟鏈接

ln -sv /u01/my3306/yeti.scf test

查看GLIBC版本

strings /lib64/libc.so.6 | grep GLIBC
export LD_PRELOAD=/usr/local/gcc-5.3.0/lib64/libstdc++.so.6.0.21

安裝gcc

sudo yum install -b current gcc49.x86_64
裝好之后在 /usr/local/gcc-4.9.2 下

offsetof(s,m)

求某個結構體成員在結構體里面的偏移量。

clang-format 格式化代碼

  • find . -regex ".*.d" | xargs clang-format -i -style=file
  • git-clang-format HEAD~1

tar壓縮

tar czvf xengine.tar xengine
tar -xvf xengine.tar

亂碼問題解決

.bashrc中加入
export LC_ALL=en_US.UTF-8  
export LANG=en_US.UTF-8  
locale 查看字符編碼設置情況

gflags

安裝使用
cmake .. -DBUILD_SHARED_LIBS=ON

cpu info

<pre>
cpu邏輯個數
cat /proc/cpuinfo | grep "processor" | wc -l
cpu物理個數
cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l
每個物理CPU中Core的個數:
cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F: '{print $2}'
查看core id的數量,即為所有物理CPU上的core的個數
cat /proc/cpuinfo | grep "core id" | uniq | wc -l
是否為超線程
cat /proc/cpuinfo | grep "siblings

查看某個進程的狀態
cat /proc/129434/status

打出進程的線程列表
top -H -p 129434
uptime cpu平均負載
lscpu 查看cpu配額
iostat -txk 1 io狀態
https://shift-alt-ctrl.iteye.com/blog/2435140
</pre>

top

  • 按cpu的使用率排序,運行top命令后,鍵入大寫P。
  • 按內存的使用率排序,運行top命令后,鍵入大寫M。
  • top -c 顯示完整進程
  • top -Hp pid 然后輸入 P 依然可以按照 CPU 使用率將線程排序

systemtap

介紹
使用手冊
https://spacewander.gitbooks.io/systemtapbeginnersguide_zh/content/2_1_InstallationAndSetup.html
需要安裝

  1. kprobe
  2. kernel-devel或kernel-smp-devel rpm

find

grep -rin

grep

grep -E "begin to run dump|CK_TEST" Log 查找或

linux系統卡

  1. 查看內存使用情況
    free -g
  2. 查看磁盤使用情況
    df -h
  3. 查看磁盤IO使用情況
    iostat -x 1
    1表示1秒刷新一次
    發現最右側%util很高時,表示IO就很高了,若想看哪個進程占用IO,執行iotop命令查看
    4.查看cpu使用情況
    top
    cpu使用情況,最右側的%id表示剩余,若很低,則表示cpu被吃完了,在top界面按shift+p對進程使用cpu排序,能看到哪些進程占用cpu較多

crontab 定時任務

安裝crontab:yum install crontabs
服務操作說明:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
查看crontab服務狀態:service crond status
手動啟動crontab服務:service crond start
查看crontab服務是否已設置為開機啟動,執行命令 ntsysv
加入開機自動啟動: chkconfig –level 35 crond on

  • cat /etc/crontab

taobao rpm安裝包

rpm

使用自定義的malloc覆蓋系統的

https://yaoguais.github.io/article/jemalloc/start.html
https://stackoverflow.com/questions/262439/create-a-wrapper-function-for-malloc-and-free-in-c

python WEB小型服務器

python -m SimpleHTTPServer 8080

重定向

1>man.log 2>&1
0表示鍵盤輸入 1表示屏幕輸出 2表示錯誤輸出

eclipse支持c++11

<pre>
1.eclipse支持c++11
c/c++ general->PreprocessorInclude-> cdt fcc built-in compiler seting
{COMMAND}{FLAGS} -E -P -v -dD "${INPUTS}" -std=c++11

2.eclipse Unresolved inclusion: <iostream>
Project > Properties > C/C++ General > Preprocessor Includes… > Providers
并將 “CDT GCC Built-in Compiler Settings”打鉤
</pre>

<pre>
symbols and path
/home/canfang.scf/dev/workdir/x-db1/IS/dependency/mysql/include
/usr/local/gcc-5.3.0/include

</pre>

c++11編譯

g++ -g -Wall -std=c++11 main.cpp
gcc -g -Wall -std=c11 main.cpp

linux查看磁盤信息

tbraid disk

查看缺頁

sudo perf record -g -e faults -p pidof mysqld

perf

 perf record -p 56259 sleep 10
 perf report  

perf record -g -p 線程號 或者 perf record -g -a
大概 5 秒鐘之后 ctrl + c 中斷就可以了,然后 perf report

dmesg

dmesg -T | grep memory

棧變量知識

-fstack-usage -Wstack-usage

https://lark.alipay.com/db_core_team/internal_docs/stack-linux

core文件

sysctl kernel.core_pattern
sysctl -w kernel.core_pattern=core 
cat /proc/sys/kernel/core_pattern
sudo sh -c "echo /u01/my3306/corefile/core-%e-%p-%t > /proc/sys/kernel/core_pattern"   /u01/corefile -》 不正確!!
 https://www.fromdual.com/hunting-the-core
 ulimit -c unlimited

前置條件:確保系統配置的core file size足夠,一般設置成unlimited
ulimit -c unlimited

配置corefile的參數:
echo 2 > /proc/sys/fs/suid_dumpable [程序中切換用戶,也要產生corefile]
mkdir /tmp/corefiles
chmod 777 /tmp/corefiles
echo "/tmp/corefiles/core">/proc/sys/kernel/core_pattern //配置core文件產生的目錄為/tmp/corefiles
echo "1" > /proc/sys/kernel/core_uses_pid

ld_patth

export
man ld.so

批量重命名

for var in ls; do mv -f "var" `echo "var" |sed 's/^.../rocks_/'`; done

myfs

sudo yum install t-ais-db-myfs -b current
sudo yum search myfs

查看占用端口號的進程

sudo lsof -i:3306 查看占用端口號的進程

端口號沖突

netstat -anp|grep 11000

扁鵲相關命令

sudo /etc/init.d/bianque status
在 /home/admin/bianque/bin 目錄下執行 ./bianque_daemon_server
 sudo yum install bianque-daemon-server-generic.x86_64 

pstack

pt-pmp file.log

grep color

grep -r "log_error_verbosity"  . -n --color

mac find

<pre>
find . -name "蝙蝠俠"

找出當前目錄以及其所有子目錄下所有名字中包含“蝙蝠俠”三字的文件

find . -name "*.rmvb" -maxdepth 1

找出當前目錄(不包括子目錄)下所有名字中后綴為".rmvb"的文件

</pre>

定時打印jemalloc內存信息腳本

<pre>
largest=70

while :; do
mem=(ps -p `pidof mysqld` -o %mem | tail -1) imem=(printf %.0f mem) if [imem -gt largest ]; then largest=imem
echo date, $largest >> /tmp/large_mem.log
echo 'p malloc_stats_print(0,0,"a")' | gdb --quiet -nx -p pidof mysqld
fi
sleep 20
done
</pre>

lcov 單測覆蓋率

ctest --timeout 30
lcov -b ./ -d ./ -c -o lcov_origin.info --rc lcov_branch_coverage=1
lcov -b ./ -d ./CMakeFiles/xengine.dir/ -c -o lcov_origin.info --rc lcov_branch_coverage=1
genhtml -o result lcov_origin.info

getenv 拿取環境變量的值

pPath = getenv ("PATH");

中文亂碼問題

locale -a | grep zh_CN

eclipse問題

構建項目問題:.cproject, .project
eclipse 配色 https://blog.csdn.net/jdbc/article/details/52983914
eclipse 字體 http://www.iteye.com/news/11102-10-great-programming-font

eclipse 字體變大的問題

重啟XQuator 或者重裝

終端文件

attach to the process in question using gdb, and run:
p dup2(open("/dev/null", 0), 1)
p dup2(open("/dev/null", 0), 2)
detach
quit
ls -l /proc/5636/fd

linux timeout

timeout [選項] 數字[后綴] 命令 [參數]...
timeout 10 command

tar.lz4解壓

MTR-mysql-test.tar.lz4
tar -I lz4 -xvf MTR-mysql-test.tar.lz4

sysbench

<pre>

  1. bulk_insert.lua 批量寫入操作
  2. oltp_delete.lua 寫入和刪除并行操作
  3. oltp_insert.lua 純寫入操作
  4. oltp_point_select.lua 只讀操作,條件為唯一索引列
  5. oltp_read_only.lua 只讀操作,包含聚合,去重等操作
  6. oltp_read_write.lua 讀寫混合操作,最常用的腳本
  7. oltp_update_index.lua 更新操作,通過主鍵進行更新
  8. oltp_update_non_index.lua 更新操作,不通過索引列
  9. oltp_write_only.lua 純寫操作,常用腳本,包括insert update delete
  10. select_random_points.lua 隨機集合只讀操作,常用腳本,聚集索引列的selete in操作
  11. select_random_ranges.lua 隨機范圍只讀操作,常用腳本,聚集索引列的selete between操作
    </pre>

磁盤

IOPS,即I/O per second,即每秒讀寫(I/O)操作的次數,多用于OLTP/數據庫、小文件存儲等場合,衡量隨機訪問的性能。

事務

XA 就是 X/Open DTP 定義的交易中間件與數據庫之間的接口規范(即接口函數),交易中間件用它來通知數據庫事務的開始、結束以及提交、回滾等。 XA 接口函數由數據庫廠商提供。

sysstat 系統狀態

實際上是一個工具箱,這其中包含了好幾個工具。它們的介紹如下:

工具 說明
iostat 報告CPU狀態,塊設備以及分區的IO信息。
mpstat 報告單個核或整體CPU的信息。
pidstat 報告進程,線程的IO,CPU和內存使用情況。
tapestat 報告磁帶設備的信息。
cifsiostat 報告CIFS的信息。
sar 收集,報告和存儲系統活動信息。
sadc sar的后端,用來收集系統活動數據。
sa1 以二進制的形式收集和存儲系統活動數據。
sa2 負責寫入日常活動報告的統計信息。
sadf 以不同的格式(CSV,XML,JSON等)顯示sar收集的數據。

ptmalloc

mallopt (int PARAM, int VALUE) 設置參數

異步io

cat /proc/sys/fs/aio-nr
linux-aio

內存

透明大頁 縮寫為THP
grep Huge /proc/meminfo
cat /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /proc/sys/vm/nr_hugepages 查看透明大頁是否開啟
cat /proc/81116/oom_score 進程的oom_score
cat /proc/buddyinfo 查看空閑內存塊
虛存導致的oom問題

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,763評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,238評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,823評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,604評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,339評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,713評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,712評論 3 445
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,893評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,448評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,201評論 3 357
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,397評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,944評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,631評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,033評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,321評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,128評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,347評論 2 377

推薦閱讀更多精彩內容

  • 系統巡檢腳本:Version 2016.08.09 ############################ 系統...
    NamasAmitabha閱讀 1,343評論 0 0
  • 前言 因為在做nodejs程序的性能分析的時候,了解到了Perf和FlameGraph這兩個神奇的工具,接著就知道...
    泡沫與周期_白羊Jerry閱讀 3,962評論 0 7
  • 【net】 ########################cat/proc/sys/net/ipv4/tcp_s...
    濟夏閱讀 746評論 0 50
  • 楚河漢界一條河, 霸王橫刀向天割。 萬古流得棋盤在, 排兵列陣把酒喝。
    自珍閱讀 343評論 0 2
  • 今天公司的活很少,幾乎一天都是在閑置的狀態。趁著活少,一直在忙著自己的事情。兌現了給別人的承諾,也賺到了收入,和翻...
    暖暖正美麗閱讀 153評論 0 0