零散的筆記

系統(tǒng)

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 調(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

vim刪除

去除重復(fù)行

sort file | uniq

處理字符串

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

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 {} "目標(biāo)目錄"
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)

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

查看某個(gè)進(jìn)程的狀態(tài)
cat /proc/129434/status

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

top

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

systemtap

介紹
使用手冊(cè)
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系統(tǒng)卡

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

crontab 定時(shí)任務(wù)

安裝crontab:yum install crontabs
服務(wù)操作說明:
/sbin/service crond start //啟動(dòng)服務(wù)
/sbin/service crond stop //關(guān)閉服務(wù)
/sbin/service crond restart //重啟服務(wù)
/sbin/service crond reload //重新載入配置
查看crontab服務(wù)狀態(tài):service crond status
手動(dòng)啟動(dòng)crontab服務(wù):service crond start
查看crontab服務(wù)是否已設(shè)置為開機(jī)啟動(dòng),執(zhí)行命令 ntsysv
加入開機(jī)自動(dòng)啟動(dòng): chkconfig –level 35 crond on

  • cat /etc/crontab

taobao rpm安裝包

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表示錯(cuò)誤輸出

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 線程號(hào) 或者 perf record -g -a
大概 5 秒鐘之后 ctrl + c 中斷就可以了,然后 perf report

dmesg

dmesg -T | grep memory

棧變量知識(shí)

-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

前置條件:確保系統(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" `echo "var" |sed 's/^.../rocks_/'`; done

myfs

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

查看占用端口號(hào)的進(jìn)程

sudo lsof -i:3306 查看占用端口號(hào)的進(jìn)程

端口號(hào)沖突

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>

定時(shí)打印jemalloc內(nèi)存信息腳本

<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 拿取環(huán)境變量的值

pPath = getenv ("PATH");

中文亂碼問題

locale -a | grep zh_CN

eclipse問題

構(gòu)建項(xiàng)目問題:.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 [選項(xiàng)] 數(shù)字[后綴] 命令 [參數(shù)]...
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 更新操作,通過主鍵進(jìn)行更新
  8. oltp_update_non_index.lua 更新操作,不通過索引列
  9. oltp_write_only.lua 純寫操作,常用腳本,包括insert update delete
  10. select_random_points.lua 隨機(jī)集合只讀操作,常用腳本,聚集索引列的selete in操作
  11. select_random_ranges.lua 隨機(jī)范圍只讀操作,常用腳本,聚集索引列的selete between操作
    </pre>

磁盤

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

事務(wù)

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

sysstat 系統(tǒng)狀態(tài)

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

工具 說明
iostat 報(bào)告CPU狀態(tài),塊設(shè)備以及分區(qū)的IO信息。
mpstat 報(bào)告單個(gè)核或整體CPU的信息。
pidstat 報(bào)告進(jìn)程,線程的IO,CPU和內(nèi)存使用情況。
tapestat 報(bào)告磁帶設(shè)備的信息。
cifsiostat 報(bào)告CIFS的信息。
sar 收集,報(bào)告和存儲(chǔ)系統(tǒng)活動(dòng)信息。
sadc sar的后端,用來收集系統(tǒng)活動(dòng)數(shù)據(jù)。
sa1 以二進(jìn)制的形式收集和存儲(chǔ)系統(tǒng)活動(dòng)數(shù)據(jù)。
sa2 負(fù)責(zé)寫入日?;顒?dòng)報(bào)告的統(tǒng)計(jì)信息。
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 進(jìn)程的oom_score
cat /proc/buddyinfo 查看空閑內(nèi)存塊
虛存導(dǎo)致的oom問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 系統(tǒng)巡檢腳本:Version 2016.08.09 ############################ 系統(tǒng)...
    NamasAmitabha閱讀 1,464評(píng)論 0 0
  • 前言 因?yàn)樵谧鰊odejs程序的性能分析的時(shí)候,了解到了Perf和FlameGraph這兩個(gè)神奇的工具,接著就知道...
    泡沫與周期_白羊Jerry閱讀 4,182評(píng)論 0 7
  • 【net】 ########################cat/proc/sys/net/ipv4/tcp_s...
    濟(jì)夏閱讀 796評(píng)論 0 50
  • 楚河漢界一條河, 霸王橫刀向天割。 萬古流得棋盤在, 排兵列陣把酒喝。
    自珍閱讀 387評(píng)論 0 2
  • 今天公司的活很少,幾乎一天都是在閑置的狀態(tài)。趁著活少,一直在忙著自己的事情。兌現(xiàn)了給別人的承諾,也賺到了收入,和翻...
    暖暖正美麗閱讀 166評(píng)論 0 0

友情鏈接更多精彩內(nèi)容