个人工作中常用Linux命令总结

 

linux命令大全网站:
http://man.linuxde.net/tune2fs

gdbserver调试:
实机端:
gdbserver 136.18.227.78:1234 test_main -c 1 -l 4 -p 0
服务器端:
/home/cfan5/DNTC_SDK/bin/arm-linux-gnueabihf-gdb test_main -c 1 -l 4 -p 0
target remote 136.18.227.146:1234

修改系统权限为rw:
mount -o remount,rw /

cpu高占用率gdb定位:
ps -efL | grep test.out | grep -v grep
gdb attach 1162

apt-get install xx 软件源配置文件:  /etc/apt/sources.list

杀死weston线程:
kill -9 `ps -e | grep weston | awk '{if(NR == 1){print $1}}'`

ps aux
指定ps查看的内容:
ps -eo pid,stat,comm,args,vsz
ps -eo pid,comm,vsz,rss

查看某个进程运行的详细参数:
cat /proc/进程号/cmdline

跟踪系统调用:
strace -ec trace=open,close test或者 -p 线程号

清理Zombie僵尸进程:
kill -18 PPID 杀父进程
或者
kill -15 PID1, PID2.. 先杀僵尸进程的兄弟进程
kill -15 PPID  再杀父进程

打印文件内容:
cat  test.txt

列出各进程打开的文件信息:
lsof -a

如果rm 后面跟的文件太多可以用find和xargs命令:
find dir -name "*.log" | xargs rm -rf

在目录下查找是否有文件包含某个字符串:
find dir | xargs grep -ri "字符串正则表达式"

统计代码量
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.c" -or -name "*.h" -or -name "*.xib" -or -name "*.pch" ")" -print | xargs wc -l

使用WinSCP传输文件:
udhcpc eth0

查看开机信息:
dmesg

列出所有远程分支和本地分支:
git branch -av
用远程分支创建本地分支:
git checkout origin/远程分支名 -b  本地分支名
git配置别名:
git config --global alias.st status  (git stauts命令--》 git st)
git配置git log为git lg并改变显示效果:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
git修改权限导致文件全部变红的解决方法:
git config core.filemode false
查看代码克隆的远程地址:
git remote -v

和远程库的代码有冲突解决:
git stash 先暂存本地修改
git pull
git stash pop 恢复修改
然后手动解决冲突再提交

撤销push到远程的提交:
git revert commitID
git push

撤销多次提交:
比如提交顺序 A->B->C->D->E 需要撤销 B C D 三个提交
git revert -n B_commitID^..D_commitID
git commit -m "revert B C D commit"
git push

将某些其他分支的提交应该到目前所在的分支上
git cherry-pick C1 C2 C3

本地git仓库上传到服务器空仓库:
git remote rm origin
git remote add origin xxxxx
git push -u origin master

本地分支上传到远程分支
git push origin local_branch:remote_branch

产生补丁
git format-patch commit-ID  -n (n是往回比较的版本次数,如果是1则为当前版本和前一个版本的差异产生patch)
打补丁:
git apply xxxxx.patch

.gitignore不起作用:
git rm -r --cached 要忽略的目录
git add 要忽略的目录
git commit -m 'update .gitignore'

挂载USB:
fdisk -l 列出usb的设备名称如: /dev/sda4
mkdir -p ./usb  建立挂载目录
mount /dev/sda4 ./usb 将/dev/sda4/挂载到./usb目录
cd ./usb  就可以访问U盘内容
umount ./usb  卸载u盘

查看系统版本: cat /proc/version 或者 uname -r
查看内核Log级别: cat /proc/sys/kernel/printk

检测内存问题:
valgrind --tool=memcheck --leak-check=full --trace-children=yes ./test

压缩和解压:
tar cvf xxx.tar  dir
tar cvzf xxx.tar.gz  dir
tar cvjf xxx.tar.bz2 dir

tar xvf xxx.tar -C dir
tar xvzf xxx.tar.gz -C dir
tar xvjf xxx.tar.bz2 -C dir

GDB调试命令:
info thread 查看线程信息
thread + threadID  切换到指定的线程
set scheduler-locking on/off  锁定只运行当前线程或解锁
thread apply all bt 列出所有线程信息

反汇编命令:
objdump -dS xxx.so/应用程序

列出文件的符号信息
nm -Al xxx | less

查找文件所在的位置:
apt-file search 文件名
根据缺少的头文件查找需要的安装包:
sudo apt-file update
apt-file search xxx.h

查看linux系统是多少位的:
getconf LONG_BIT
或者
echo $HOSTTYPE  如何返回x86_64则为64位的系统

查找IO占用高的进程:
1、停止系统日志
/etc/init.d/syslog stop
2、停止审计日志
/etc/init.d/auditd stop
3、启用block_dump
echo 1> /proc/sys/vm/block_dump
4、通过下面命令查找出IO高的进程
dmesg | egrep "READ|WRITE|dirtied" | egrep -o '([a-zA-Z]*)' | sort  | uniq -c | sort -rn | head
5、关闭block_dump
echo 0 >/proc/sys/vm/block_dump
6、启动系统日志和审计
/etc/init.d/syslog start
/etc/init.d/auditd start

查看磁盘空间及文件系统挂载点
df -h
查看硬盘使用情况
fdisk -l

统计文件的行数:
awk 'END{print NR}' 文件名
打印应用或so依赖的共享库:
/lib/ld-linux.so.2 --list program 或者ldd program

显示当前目录下各个文件及子目录占用空间
du
显示当前目录总占用空间
du -s ./ 或者 du -s

打印cpu信息:
cat /proc/cpuinfo

统计打开的文件句柄数:
lsof | wc -l
每隔一秒统计一次
while true; do sleep 1; lsof | wc -l; done

echo 1 > /proc/sys/vm/block_dump
watch -n 1 "dmesg | egrep \"READ|WRITE|dirtied\" | egrep -o '([a-zA-Z]*)' | sort  | uniq -c | sort -rn | head"
echo 0 > /proc/sys/vm/block_dump

dmesg -c | sed '/(\S+)\((\d+)\): (READ|WRITE) block (\d+) on (\S+)/p'

 人为制造kernel panic:
 echo 1 > /proc/sys/kernel/sysrq
 echo c > /proc/sysrq-trigger

 核心转存:
 ulimit -c 如果输出为0 说明默认是关闭core dump的
 ulimit -c unlimited //开启core dump功能,
 ulimit -c 2048  //也可以自己设置core文件大小(KB)
 echo 1 > /proc/sys/kernel/core_uses_pid  //生成的core文件自动加上pid号,生成core.pid的文件名
 echo "/tmp/tombstone-%e-%p-%t" > /proc/sys/kernel/core_pattern //设置保存在/tmp目录下且文件名格式为“tombstone-命令名-PID-时间戳”
 运行程序比如:
 ./test
 程序crash掉后在 /tmp目录产生 tombstone-xxx的文件
 gdb ./test /tmp/tombstone //就可以看到在哪里挂掉了


 利用以上命令,处理单个文件补丁的方法:

# 产生补丁
diff -uN from-file to-file >to-file.patch
 
# 打补丁
patch -p0 < to-file.patch
 
# 取消补丁
patch -RE -p0 < to-file.patch

对整个文件夹打补丁的情况:

# 产生补丁
diff -uNr  from-docu  to-docu  >to-docu.patch
 
# 打补丁
cd to-docu
patch -p1 < to-docu.patch
 
# 取消补丁
patch -R -p1

# 学习andriod好文章
https://www.kancloud.cn/alex_wsc/androids/473752


 1、adb shell setprop debug.sf.dump.enable true
     adb shell setprop debug.sf.dump.primary true
    如果是externel display : adb shell setprop debug.sf.dump.externel
true
2、adb shell stop
3、adb shell start
4、adb shell setprop debug.sf.dump.png x(x代表是一个数字,如果要dump一帧
就写1,如果要dump 10帧就写10,png代表是将layer保存为png文件)
     或者adb shell setprop debug.sf.dump x(dump出来的是原始数据)
5、dump的layer文件保存在/data/目录下,如:/data
/sfdump.png.1970.01.08.06.08.37
     adb pull /data/sfdump.png.1970.01.08.06.08.37 ~/  


adb shell screencap /data/screen.png

while true; do sleep 1; dumpsys cpuinfo; done

repo sync -f -j10

zcat /proc/config.gz  #查看 linux内核的配置

cat /proc/interrupts | grep vip

vpe_test -i /vendor/usr/capture_full.uyvy -j 720x480 -k uyvy -o /vendor/usr/360_240p.rgb24 -p 360x240 -q rgb24 -l 0 -t 3
vpe_test -i /vendor/usr/capture_full.uyvy -j 720x480 -k uyvy -o /vendor/usr/360_240p.argb32 -p 360x240 -q argb32 -l 0 -t 3

omapconf set bit 0x4a008e20 0x1
omapconf set bit 0x4a008e28 0x1

beyondCompare4被吊销:
C:\Users\CFAN5\AppData\Roaming\Scooter Software\Beyond Compare 4

通过文件系统设置GPIO的状态
echo 32 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio32/direction
cat /sys/class/gpio/gpio32/direction
echo 1 > /sys/class/gpio/gpio32/value
cat /sys/class/gpio/gpio32/value

echo 30 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio30/direction
cat /sys/class/gpio/gpio30/direction
echo 1 > /sys/class/gpio/gpio30/value
cat /sys/class/gpio/gpio30/value

adb推送整个文件夹下的文件到实机目录
adb push D:\aaa\.  /vendor/usr/aaa/

将test shell脚本的'\r'替换为空
sed -i 's/\r$//' test.sh

修复SD卡ext4分区
sudo fdisk -l
sudo umount /dev/sdb2
sudo fsck.ext4 /dev/sdb2

查看负载
[root@x home]# mpstat -P ALL 5

stress-ng用法

CPU压力密集型
./stress-ng --cpu 0 --cpu-method pi -t 5m --times &

IO压力密集型
./stress-ng --io 4 --hdd 1 -t 5m --times &

虚拟机添加共享文件夹:
sudo adduser fcx vboxsf

你可能感兴趣的:(编程语言)