1. 系统相关
- 查看手册命令
man
- 只查看当前下一级目录占用大小
du --max-depth=1 -h
- 查看某个进程是否在运行
ps -ef | grep prog | grep -v grep
pgrep prog
- 查看内存统计
free -m
- 查看系统任务运行情况(类似window的任务管理器)
top
ps:根据内存或者CPU占用对进程排序
- 内存排序:执行top,然后按“shift + m”,这时进程就会按照内存占用从大到小排序。
- CPU排序:执行top即可,top默认是按照CPU占用排序,也可以执行“shift + p”从内存大小排序转换为CPU排序。
- 查看系统CPU占用情况
mpstat -P ALL 2
- 查看系统io,内存,swap分区,cpu等汇总统计信息
vmstat 2
- 查看系统tcp连接情况
netstat -anpt
2. 进程相关
- 杀掉某个程序的所有进程
killall program
- 强杀一个指定pid的进程,江湖俗称“酒杀”,一杀必中
kill -9 pid
- 查看某个程序的所有进程
pidof program
- 查看指定pid的进程的运行时加载的环境变量
cat /proc/pid/environ | tr -s '\0' '\n'
- 通过pid查看对应的执行文件(这对查看来历不明的进程有帮助)
lsof -p pid | grep txt
- 查看指定pid的进程内存地址空间映射(查看进程运行时实际加载的是那个库)
pmap -x pid
- 查看程序的符号表(排查编译连接失败,调用异常等问题很好用)
nm file
readelf -s file
- 查看指定pid的进程线程关系树(查看某个开源程序是否是多线程模型)
pstree -p pid
- 查看指定pid的进程打开的文件
lsof -p pid
- 查看指定pid的进程当前运行时的堆栈
pstack pid
- 查看指定pid的进程当前在执行的系统调用
strace -p pid
- 查看指定pid的进程当前在执行的库调用
ltrace -p pid
- 在查看指定程序依赖的动态链接库
ldd program
3. 运营调试
- 从一堆文件中查找包含某个字符串的文件(编译一堆文件时有变量冲突时特别好用,可以快速定位在那些文件中声明了相同的变量)
find ./ -type f -name ".c" -o -name ".h" | xargs grep "strings"
- 查看文件被那些进程打开(对查看库被那些进程使用,在你要修改一个基础库在评估影响范围的时候就很好用)
fuser -v filename
lsof filename
- 对字符串求MD5值或者SHA1值(验证程序MD5和SHA1算法时特别有用)
echo -n "abcde123" | md5sum
echo -n "abcde123" | sha1sum
- linux shell中如何快速查询历史命令
ctrl + r
- 查看执行历史带详细时间
export HISTTIMEFORMAT="%F %T whoami "
history
- c++函数符号转换成c模式工具
c++filt
- gdb设置打印完整字符串
set print element 0
- scp跨主机远程拷贝
scp src user@host:dest
- ssh登录远程主机
ssh user@host
- 返回当前用户的home目录
cd
cd ~
- 返回上一个目录
cd -
- 删除当前输入的命令
ctrl + u
- 中断当前命令的输入或者中断当前在执行的前台程序
ctrl + c
- 强制退出当前命令的执行,有时执行ctrl + c无用时采用
ctrl + \
- 实时查看日志文件的输出(只要日志有更新就能看到且是实时的)
tail -20f /home/xxx/log/yy.log
- 测试web服务工具
curl
wget
- 打包压缩命令
tar -zcvf test.tar ./*
- 解包解压命令
tar -zxvf test.tar
4.其它
- history
查看所有历史记录
- ctrl + r
查询历史记录