零散的笔记

系统

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阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容

  • 系统巡检脚本:Version 2016.08.09 ############################ 系统...
    NamasAmitabha阅读 1,303评论 0 0
  • 前言 因为在做nodejs程序的性能分析的时候,了解到了Perf和FlameGraph这两个神奇的工具,接着就知道...
    泡沫与周期_白羊Jerry阅读 3,926评论 0 7
  • 【net】 ########################cat/proc/sys/net/ipv4/tcp_s...
    济夏阅读 738评论 0 50
  • 楚河汉界一条河, 霸王横刀向天割。 万古流得棋盘在, 排兵列阵把酒喝。
    自珍阅读 334评论 0 2
  • 今天公司的活很少,几乎一天都是在闲置的状态。趁着活少,一直在忙着自己的事情。兑现了给别人的承诺,也赚到了收入,和翻...
    暖暖正美丽阅读 149评论 0 0