Category: Linux

  • git notes

    level 6

    rebase

    git fetch只获取,并不合并

    本地与远端使用git rebase
    git rebase进行了三步操作

    把所有master的改变放到一个临时区域里面

    运行所有origin/master的提交

    运行在临时区域的commits

    本地两个分支间的rebase,master和  develop均有提交

    在develop分支下,

    git rebase master

    然后再git checkout master

    把develp合并过来

    git merge develop

    conflicts本地master和远端origin/master都修改了同一个文件,并在本地提交

    解决冲突

    在master上git fetch

    然后git rebase,这样保证在master上有最新的代码

    这里会提示有冲突

    当解决了问题,则用git rebase –continue

    level 7

    git log
    sha hash

    git config –global color.ui true

    git log –pretty=oneline

    git log –oneline –stat

    当前分支与 master 的区别

    git log --oneline  ...master
    

    git log -p 查看具体的改变

    git diff  == git diff HEAD
    git diff HEAD^

    git diff HEAD~5
    git diff HEAD^..HEAD

    git diff sha..sha
    git diff master develop

    对于单个文件一直以来的变化
    git blame index.html –date short
    git status 看到有不想提交的,则在 .git/info/exclude 把文件过滤掉

    .gitignore
    git 删除文件
    git rm README.txt
    在 system 中不会被删除,但在 git 中会删除
    git rm –cached development.log

    mac 指定 merge 工具

    git config --global merge.tool opendiff
    git config --global alias.st status 来设置 status 的别名
    

    level 4

    git push rejected
    

    首先git pull

    pull的动做细分

    git fetch到origin/master

    将origin/master合并到本地  master

    git merge origin/master

    现在再push

    conflict

    必须手动解决

    level 1

    查看staged文件做了哪些改动

    git diff –staged

    在提交的同时进行添加

    git commit -a -m “add index”

    将修改的文件恢复

    git checkout — cats.html index.html

    level 2

    undo上一次提交,并将改变放到 staging 中

    git reset --soft HEAD^

    只修改上一次的提交

    git commit --amend -m "New Message"
    

    undo 上一次的提交和修改,你的修改会丢失

    git reset --hard HEAD^

    undo 上两次的提交和修改

    git reset --hard HEAD^^

    git reset HEAD ostrich.html

    查看远端的 fetch 及 push地址
    git remote -v

    git remote add <name> <address>

    删除远端 repo
    git remote rm <name>

    git push -u origin master

    origin是远端 repo 的名字, master 是本地分支的名字

    设置 git config user

    git config --global --edit
    #全局配置在 ~/.gitconfig
    [user]
        name = myusername
        email = [email protected]
    
    当前项目配置在
    .git/config
    

    想要保存一个空目录时,一般添加一个空文件.gitkeep,比如

    secrets/.gitkeep

    macOS 自动保存到 keychain

    git config --global credential.helper osxkeychain
    
  • sysctl的调优

    /proc/sys/net/core/somaxconn 设置

    清理 cache

    echo 3 > /proc/sys/vm/drop_caches
    echo 655350 > /proc/sys/net/netfilter/nf_conntrack_max
    echo 655350 > /proc/sys/net/nf_conntrack_max
    echo 1200 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established

    客户端端口范围

    sysctl -a | grep port_range
    net.ipv4.ip_local_port_range = 32768	61000
    
  • perf flame graph使用

    perf record -F 99 -p PID -g — sleep 10
    perf script | ./stackcollapse-perf.pl > out.perf-folded /flamegraph.pl out.perf-folded>ou.svg

  • cpu自动降频

    for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor ; do [ -f $CPUFREQ ] || continue; echo -n performance > $CPUFREQ ;done

  • linux ulimit

    ulimit 查看某用户的限制

    ulimit -a
  • linux taskset将进程指定cpu执行

    两个名词
    SMP (Symmetrical Multi-Processing):指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。 [更多…]
    CPU affinity:中文唤作“CPU亲和性”,是指在CMP架构下,能够将一个或多个进程绑定到一个或多个处理器上运行。[更多…]

    请先确定你的cpu核心及命名(例如四个核心:0,1,2,3):cat /proc/cpuinfo
    Java代码 收藏代码
    taskset -cp 1 5200
    #把PID为5200的进程运行到CPU#1上
    #也可以在启动进程时指定:
    taskset -c 1 /etc/init.d/mysql start

    linux taskset命令详解

    SYNOPSIS
    taskset [options] [mask | list ] [pid | command [arg]…]
    OPTIONS
    -p, –pid
    operate on an existing PID and not launch a new task
    -c, –cpu-list
    specifiy a numerical list of processors instead of a bitmask.
    The list may contain multiple items, separated by comma, and
    ranges. For example, 0,5,7,9-11.
    -h, –help
    display usage information and exit
    -V, –version
    output version information and exit