常用shell命令(git/svn/vim等)
1、git
1.1 推代码
git checkout file_name //回退某文件修改 git add file_name //添加文件(git add --all添加所有) git commit -m "xxxxxx" //生成conmit信息 git push origin HEAD:refs/for/master //将代码推送到分支master最新节点上 git push origin hash_Idxxx:refs/for/master //推送指定节点master
1.2 新环境配置git
git config --global user.name "Your Name" git config --global user.email "your.email@example.com" git config --global color.ui auto git config --global remote.origin.push refs/heads/*:refs/for/* git config --list ssh-keygen -t rsa -b 4096 -C "your.email@example.com" //生成ssh 密匙 cat ~/.ssh/id_rsa.pub //将本地密匙添加到 Git 服务器账户
1.3
//1.1、推代码 //1.2、去除git add添加的文件 去除git add修改 git rm --cached “文件路径”,不删除物理文件,仅将该文件从缓存中删除; git reset 也可以 git rm --f “文件路径”,不仅将该文件从缓存中删除,还会将物理文件删除 //1.3、去掉每行结尾的^M windows和linux行结尾差异导致 %s/^M//g 或者 %s/\r//g 然后esc退出 :wq保存退出 git diff 去掉匹配换行差异 git config --global core.whitespace cr-at-eol //1.4、git push 失败 push 失败:显示 error Missing tree git push 后增加 --no-thin https://opendev.org/opendev/git-review/commit/39cd763d5d3ae310b00e54f6fc24eba993ed57f5 这是gerrit的一个bug,丢失了git tree ,gerrit在推送是默认是采用thin,将发生的包降低到最低,忽略本地和远端文档公共部分。 //1.5、git status 只显示被跟踪文件 git status -uno //1.6、更新代码、回退代码 git pull --all 更新所有分支 git pull origin xxxx 更新远端分支xxx到本地 //1.7、查看comimit git show commit的ID git show commit的ID --stat 回退修复并删除修改 git reset HEAD 文件名 //回退修改 git checkout 文件名 //删除修改 //1.8 带本地commit 并更新代码 git pull origin 分支名 --rebase //1.9 合并commit git rebase -i xxxxcommit节点(合并节点前的一个节点) 将第一个改为pich,其他的都改为squash。 再从新编辑commit
2、svn
svn revert [-R] [something] //回退本地修改[-R] [文件名]
3、vim
3.1 设置tab为4个空格
set ts=4 set expandtab set autoindent
3.2 粘贴代码取消自动缩进
1,在拷贝前输入:set paste (这样的话,vim就不会启动自动缩进,而只是纯拷贝粘贴) 2,拷贝完成之后,输入:set nopaste (关闭paste)
3.3 替换某字符串(全部替换)
将dev替换成mydev
:%s/dev/mydev/g
4、patch
5、查看栈的大小
内核栈:默认8K(32位)16K(64位)
用户态线程栈:ulimit -s
临时改变线程栈空间的大小:ulimit -s 大小
进程栈:是动态开辟的,比线程栈大小大
6、解压/压缩文件
*.tar 文件
tar –xvf file.tar //解压 tar包
*.tar.gz 和 *.tgz 文件
tar -xzvf file.tar.gz //解压tar.g
*.gz 文件
gunzip FileName.gz //第一种 *.gz 解压 gzip -d FileName.gz //第二种 *.gz 解压
*.bz2 文件
bzip2 -d FileName.bz2 //第一种解压 *.bz2 文件 bunzip2 FileName.bz2 //第二种解压 *.bz2 文件
*.tar.bz2 文件
tar jxvf FileName.tar.bz2 //第一种解压 *.tar.bz2 文件 tar --bzip xvf FileName.tar.bz2 //第二种解压 *.tar.bz2 文件
*.zip 文件
unzip FileName.zip //解压 *.zip 文件
.xz 文件
XZ compressed data xz -d filename.xz //解压
.cpio 文件
cpio -iv < filename.cpio
7z文件
7z x xx.7z
*.rar 文件
unrar e Filename.rar //解压 *.rar 文件
7、tar 压缩/加密/解密
tar -czvf - file-name | openssl des3 -salt -k password -out file-name.tar.gz //加密文件 file-name文件名 password 加密密码 openssl des3 -d -k password -salt -in file-name.tar.gz | tar xzf - //解密文件 file-name文件名 password 加密密码
openssl version -a //查看openssl 版本,解压失败,可能是OpenSSL 版本差异较大导致
8、grep
grep -C 5 foo file //显示file文件里匹配foo字串那行以及上下5行 grep -B 5 foo file //显示foo及前5行 grep -A 5 foo file //显示foo及后5行
grep -rn foo--exclude-dir={proc,sys} //搜索foo,不包括proc,sys文件夹
cat /proc/interrupts | grep -v 'eth1' //匹配文件中不包含 eth1 的那一行
cat /proc/interrupts | grep -E 'LOC|ERR' //grep -E 同时匹配多个关键词,既搜索LOC又搜索ERR
grep xxx --binary-files=without-match //忽略二进制
9、dmidecode
dmidecode –t slot //查看pci 插槽对应设备
10、getconf
[root@localhost ~]# getconf PAGESIZE //查看页大小 4096 [root@localhost ~]# getconf -a //查看所有的系统配置
11、ifconfig
ifconfig vEth0 down ifconfig vEth0 hw ether 00:40:08:01:01:01 ifconfig vEth0 172.16.201.201 netmask 255.255.255.0 up
12、dd 命令
time dd if=/dev/zero of=test.txt oflag=direct bs=4k count=100000 // 测试读写速度
13、major、minor
cat /proc/devices //查看 major cat /sys/bus/usb/..../uevent/ //查看 minor //如果有设备节点: # ls /dev/watchdog -lah crw-rw---- 1 root root 10, 130 Jan 1 00:00 /dev/watchdog //c 表示字符设备, major 10,minor 130
14、rpm
rpm -ivh --nodeps --force sysstat-11.7.3-5.el8.aarch64.rpm //如果命令安装存在依赖,强行安装
15、设置core操作
ulimit -c unlimited
echo 1 > /proc/sys/kernel/core_uses_pid echo "/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
16、设置hugepage
/***** 设置hugepage ****/ dts 传参: hugepagesz=512M default_hugepagesz=512M hugepages=6 echo 6 > /proc/sys/vm/nr_hugepages 或 echo 6 > /sys/kernel/mm/hugepages/hugepages-524288kB/nr_hugepages
17、taskset 改绑核
taskset -c 5 echo 463 > /sys/class/gpio/export taskset -c 5 echo out > /sys/class/gpio/gpio463/direction taskset -c 5 cat /sys/class/gpio/gpio463/value taskset -c 5 echo 1 > /sys/class/gpio/gpio463/value
18、telnet 操作
/bin/telnet 172.20.1.172
19、tftp 操作
tftp 172.20.1.172 tftp>binary tftp>get xxxx文件
或者
tftp 172.20.1.172 -g -r 文件名
20、查看page/hugepage大小
//查看当前环境页大小:x86为4K页,ARM为64K页 [root@X86_64]# getconf PAGESIZE 4096 [root@ARM64]# getconf PAGE_SIZE 65536 //查看大页大小 cat /proc/meminfo | grep Hugepagesize
21、scp 跨设备拷贝
scp local_file remote_username@remote_ip:remote_folder //本端拷贝到远端 scp remote_username@remote_ip:remote_folder local_file //远端拷贝到本端 //scp -r 则是拷贝文件夹 //local_file本地文件,remote_username 远端用户名,remote_ip 远端设备ip, remote_folder 远端设备文件路径
22、export
./test_csdnping: error while loading shared libraries: librte_ethdev.so.21: cannot open shared object file: No such file export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH //或者把/usr/lib改为需要添加lib 的路径
23、读取设备节点内部数据(flash等)
hexdump -Cv /dev/mtdblock1 -s 16776704 -n 512 // 偏移16776704 字节读取512字节大小数据
24、ps
1、查看进程内的线程信息
ps -TF c PID
sh-4.4$ ps -TF c 616 UID PID SPID PPID C SZ RSS PSR STIME TTY STAT TIME CMD root 616 616 1 0 1082457 528576 4 Aug21 ? SLsl 5:55 xx1 root 616 622 1 0 1082457 528576 0 Aug21 ? SLsl 0:00 xx2 root 616 623 1 0 1082457 528576 0 Aug21 ? SLsl 0:00 xx3 root 616 624 1 1 1082457 528576 4 Aug21 ? SLsl 16:29 xx4 root 616 625 1 0 1082457 528576 0 Aug21 ? SLsl 0:00 xx5
2、查看进程 并排序
ps aux --sort=-pcpu //按照cpu 占用率 排序进程 ps aux --sort=-rss //按照物理内存占用率 排序进程
示例:
sh-4.4$ ps -aux --sort=-pcpu USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 616 107 7.3 69277248 528576 ? SLsl Aug21 1226:36 xx1 root 633 12.7 1.1 1059904 82048 ? Ssl Aug21 145:50 xx2 root 1178 2.8 0.8 762496 60800 ? Ssl Aug21 32:47 xx3 root 835 0.7 0.2 148160 15104 ? Ssl Aug21 8:53 xx4 root 1539 0.7 0.5 715648 41728 ? Sl Aug21 8:57 xx5 root 807 0.5 0.4 356224 31552 ? Ssl Aug21 6:28 xx6
25、taskset
1、查看 线程/进程 绑核情况
taskset -c -p PID/TID (最好查看 TID 因为进程一般有多个线程)
sh-4.4$ taskset -c -p 616 pid 616's current affinity list: 0,2,4-7
26、kill
根据进程名直接kill 进程
ps -aux | grep -E "test_a|test_b" | grep -v grep | awk '{print $2}' | xargs kill