系統(tǒng)
gdb
gdb跟蹤zlib庫
- 編譯debug版本
- 鏈到編譯的庫
- gdb -derictory 指定目錄
gdb打印jemalloc輸出信息
set scheduler-locking on
<pre>
export LD_PRELOAD=/home/canfang.scf/libjemalloc.so.2
</pre>
gdb 調(diào)試
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 替換當(dāng)前行所有的 :%s/yeti\/mysql/yeti\/workspace\/mysql/g 替換每一行
vim刪除空行
:g/^$/d
去除重復(fù)行
sort file | uniq
處理字符串
:%s/// 刪除后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
修改文件所屬權(quán)限
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創(chuàng)建軟鏈接
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)
求某個結(jié)構(gòu)體成員在結(jié)構(gòu)體里面的偏移量。
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 查看字符編碼設(shè)置情況
gflags
安裝使用
cmake .. -DBUILD_SHARED_LIBS=ON
cpu info
<pre>
cpu邏輯個數(shù)
cat /proc/cpuinfo | grep "processor" | wc -l
cpu物理個數(shù)
cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l
每個物理CPU中Core的個數(shù):
cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F: '{print $2}'
查看core id的數(shù)量,即為所有物理CPU上的core的個數(shù)
cat /proc/cpuinfo | grep "core id" | uniq | wc -l
是否為超線程
cat /proc/cpuinfo | grep "siblings
查看某個進程的狀態(tài)
cat /proc/129434/status
打出進程的線程列表
top -H -p 129434
uptime cpu平均負載
lscpu 查看cpu配額
iostat -txk 1 io狀態(tài)
https://shift-alt-ctrl.iteye.com/blog/2435140
</pre>
top
- 按cpu的使用率排序瓤摧,運行top命令后耻涛,鍵入大寫P。
- 按內(nèi)存的使用率排序也榄,運行top命令后块攒,鍵入大寫M哮塞。
- top -c 顯示完整進程
- top -Hp pid 然后輸入 P 依然可以按照 CPU 使用率將線程排序
systemtap
介紹
使用手冊
https://spacewander.gitbooks.io/systemtapbeginnersguide_zh/content/2_1_InstallationAndSetup.html
需要安裝
- kprobe
- kernel-devel或kernel-smp-devel rpm
find
grep -rin
grep
grep -E "begin to run dump|CK_TEST" Log 查找或
linux系統(tǒng)卡
- 查看內(nèi)存使用情況
free -g - 查看磁盤使用情況
df -h - 查看磁盤IO使用情況
iostat -x 1
1表示1秒刷新一次
發(fā)現(xiàn)最右側(cè)%util很高時,表示IO就很高了算凿,若想看哪個進程占用IO份蝴,執(zhí)行iotop命令查看
4.查看cpu使用情況
top
cpu使用情況,最右側(cè)的%id表示剩余氓轰,若很低婚夫,則表示cpu被吃完了,在top界面按shift+p對進程使用cpu排序署鸡,能看到哪些進程占用cpu較多
crontab 定時任務(wù)
安裝crontab:yum install crontabs
服務(wù)操作說明:
/sbin/service crond start //啟動服務(wù)
/sbin/service crond stop //關(guān)閉服務(wù)
/sbin/service crond restart //重啟服務(wù)
/sbin/service crond reload //重新載入配置
查看crontab服務(wù)狀態(tài):service crond status
手動啟動crontab服務(wù):service crond start
查看crontab服務(wù)是否已設(shè)置為開機啟動案糙,執(zhí)行命令 ntsysv
加入開機自動啟動: chkconfig –level 35 crond on
- cat /etc/crontab
taobao rpm安裝包
使用自定義的malloc覆蓋系統(tǒng)的
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小型服務(wù)器
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
{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 -》 不正確Qデ臁时捌! https://www.fromdual.com/hunting-the-core ulimit -c unlimited
前置條件:確保系統(tǒng)配置的core file size足夠,一般設(shè)置成unlimited
ulimit -c unlimited
配置corefile的參數(shù):
echo 2 > /proc/sys/fs/suid_dumpable [程序中切換用戶炉抒,也要產(chǎn)生corefile]
mkdir /tmp/corefiles
chmod 777 /tmp/corefiles
echo "/tmp/corefiles/core">/proc/sys/kernel/core_pattern //配置core文件產(chǎn)生的目錄為/tmp/corefiles
echo "1" > /proc/sys/kernel/core_uses_pid
ld_patth
export
man ld.so
批量重命名
for var in
ls
; do mv -f "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
扁鵲相關(guān)命令
sudo /etc/init.d/bianque status 在 /home/admin/bianque/bin 目錄下執(zhí)行 ./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 "蝙蝠俠"
找出當(dāng)前目錄以及其所有子目錄下所有名字中包含“蝙蝠俠”三字的文件
find . -name "*.rmvb" -maxdepth 1
找出當(dāng)前目錄(不包括子目錄)下所有名字中后綴為".rmvb"的文件
</pre>
定時打印jemalloc內(nèi)存信息腳本
<pre>
largest=70
while :; do
mem=(printf %.0f imem -gt 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 拿取環(huán)境變量的值
pPath = getenv ("PATH");
中文亂碼問題
locale -a | grep zh_CN
eclipse問題
構(gòu)建項目問題:.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 [選項] 數(shù)字[后綴] 命令 [參數(shù)]...
timeout 10 command
tar.lz4解壓
MTR-mysql-test.tar.lz4
tar -I lz4 -xvf MTR-mysql-test.tar.lz4
sysbench
<pre>
- bulk_insert.lua 批量寫入操作
- oltp_delete.lua 寫入和刪除并行操作
- oltp_insert.lua 純寫入操作
- oltp_point_select.lua 只讀操作奢讨,條件為唯一索引列
- oltp_read_only.lua 只讀操作,包含聚合焰薄,去重等操作
- oltp_read_write.lua 讀寫混合操作拿诸,最常用的腳本
- oltp_update_index.lua 更新操作入录,通過主鍵進行更新
- oltp_update_non_index.lua 更新操作,不通過索引列
- oltp_write_only.lua 純寫操作佳镜,常用腳本,包括insert update delete
- select_random_points.lua 隨機集合只讀操作凡桥,常用腳本蟀伸,聚集索引列的selete in操作
- select_random_ranges.lua 隨機范圍只讀操作,常用腳本缅刽,聚集索引列的selete between操作
</pre>
磁盤
IOPS啊掏,即I/O per second,即每秒讀寫(I/O)操作的次數(shù)衰猛,多用于OLTP/數(shù)據(jù)庫迟蜜、小文件存儲等場合,衡量隨機訪問的性能啡省。
事務(wù)
XA 就是 X/Open DTP 定義的交易中間件與數(shù)據(jù)庫之間的接口規(guī)范(即接口函數(shù))娜睛,交易中間件用它來通知數(shù)據(jù)庫事務(wù)的開始、結(jié)束以及提交卦睹、回滾等畦戒。 XA 接口函數(shù)由數(shù)據(jù)庫廠商提供。
sysstat 系統(tǒng)狀態(tài)
實際上是一個工具箱结序,這其中包含了好幾個工具障斋。它們的介紹如下:
工具 說明
iostat 報告CPU狀態(tài),塊設(shè)備以及分區(qū)的IO信息徐鹤。
mpstat 報告單個核或整體CPU的信息垃环。
pidstat 報告進程,線程的IO返敬,CPU和內(nèi)存使用情況遂庄。
tapestat 報告磁帶設(shè)備的信息。
cifsiostat 報告CIFS的信息救赐。
sar 收集涧团,報告和存儲系統(tǒng)活動信息。
sadc sar的后端经磅,用來收集系統(tǒng)活動數(shù)據(jù)泌绣。
sa1 以二進制的形式收集和存儲系統(tǒng)活動數(shù)據(jù)。
sa2 負責(zé)寫入日吃ぱ幔活動報告的統(tǒng)計信息阿迈。
sadf 以不同的格式(CSV,XML轧叽,JSON等)顯示sar收集的數(shù)據(jù)苗沧。
ptmalloc
mallopt (int PARAM, int VALUE) 設(shè)置參數(shù)
異步io
cat /proc/sys/fs/aio-nr
linux-aio
內(nèi)存
透明大頁 縮寫為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 查看空閑內(nèi)存塊
虛存導(dǎo)致的oom問題