Linux 复习篇(二)---命令篇

操作文件相关的:

cd 更改路径                     touch 创建普通文件                               rm 删除普通文件                                mv 移动文件(重命名)

cp 拷贝文件                     mkdir 创建目录文件                               rmdir 删除目录文件                           chmod 改变文件权限

more 查看文件(分屏幕显示,仅能向前)           less 查看文件(可以随意浏览文件)           head 查看文件(查看前几行文件)

tail(查看后几行文件,多用于查看经常更改的文件 例如日志文件 ,指定行号即可

cat 查看文(连接文件并打印到标准输出设备上) cat  > file 增加文件内容                           cat file1 file2 > file 合并文件

grep 匹配查找文件                  find 用来在指定目录下查找文件             wc 用来计算数字(例如统计文件行数,位数,单词数等)

awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响

tar 打包,解包,解压缩,压缩

 

操作进程相关的

ps 查看进程(ps -ef  查看所有进程)           kill  结束进程 (kill -9 强制结束)           pkill 结束一类进程(如一个进程组)

jobs 查看任务状态和列表,包括后台运行                     & 将程序放在后台运行          taskset  查询和设置cpu的亲和性

top 动态地查看系统的整体运行情况,例如可以查看cpu的使用率,亲和性等等

Ctrl+z  停止(挂起)进程,可恢复    Ctrl+c 终止进程,不可恢复    Ctrl +d  结束输入 (如结束cat的输入)

 

与网络相关的  

netstat  显示网路状态信息  netstat -ntap 查看tcp连接状态,查看某个端口被哪个进程保留,发送和接收缓冲区还有多少数据等)

ping  测试主机的连通性          lsof 列初当前系统打开的文件描述符 (可指定进程  ,例如lsof -p pid)

ip 显示或操纵Linux主机的路由、网络设备、策略路由和隧道(例如 ip -4 ,设置协议为ipv4)

tcpdump  强大的抓包工具                         ifstat  网络流量监测工具                          ifconfig 查看ip地址

 

系统监测相关的

top  动态地查看系统的整体运行情况,负载情况,cup使用率等;

vmstat 实时输出各个资源的使用情况 ,如进程信息,内存使用,cpu使用率,IO使用情况等;(常用的系统瓶颈诊断依据)

iostat 多用于列出磁盘IO的使用情况,cpu等;

df -h 查看磁盘使用情况  

sar 是操作系统运行状态的统计工具,比如可以显示cpu使用率,内存状态等;

 

与内存相关的 

free  查看已使用的内存和未使用的内存情况

valgrind 内存泄漏监测工具

 

开发调试相关的

gcc / g++ 编译

在程序编译时 加 -g 载入调试信息

gdb  +程序  调试 (r  启动调试 ;b 加断点;l 显示代码 ;n 执行下一行 ;c 继续执行 ;p 显示变量的值  s 进入函数;finish 退出函数; bt 显示函数调用栈的关系 ; display 持续打印)

 

core 文件调试(利用core文件直接定位程序崩溃点,core文件:核心转储文件,会在程序崩溃的时候导入该程序此时的ELF) 

第一步:执行之前运行崩溃的程序(编译 + -g)

第二步:ulimit -c 生成core文件,文件的后缀为当前进程的pid;

第三步:gdb ./test core.pid  执行gdb;

第四步: bt 显示崩溃点行号;

 

调试多线程

info threads 显示可调试的线程                thread +id 切换到指定线程

set follew -mode child  跟踪子进程        attach +pid 指定调试一个线程

set schedeler -locking (off/on/step) off 不锁定所有线程都执行;on 锁定当前线程,只有当前线程执行;step 单步执行时,只有当前线程执行 

strace -p pid   跟踪系统调用          ltrace -p pid 跟踪程序执行库函数

重点问题:
线程出现死锁了该怎么调试?

同样利用 Core dump来调,

第一步:要设置资源限制,设置为无限大,在任何情况下都会生成core文件,ulimit -c unlimited;

第二步:使用 kill 命令产生 core dump文件:kill -11 pid,这不还是杀掉进程嘛?没错,但是你用信号11杀掉它,会让进程产生一个 Segmentation Fault,从而(如果你没禁用 core dump 的话),导致一个 core dump。随后你得到一个 core 文件,里面包含了死锁的时候,进程的内存镜像,也就包括了正在纠结缠绵,生离死别从而产生死锁的那两个,没准是几个,线程们的,栈。

第三步:用 gdb 打开这个 core 文件,然后thread apply all bt,gdb 会打出所有线程的栈,如果你发现有那么几个栈停在 pthread_wait 或者类似调用上,大致就可以得出结论:就是它们线程出现死锁,耽误了整个进程。

系统管理有关的 

useradd  增加用户                                          shutdowm 关机                                          ulimit 查看资源限制

reboot 重启                                                     init 更改系统启动级别                              ldd  显示链接了那些库

 ipcs 报告Linux中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息

w 用于单独显示用户运行的进程      objdump 查看目标文件(elf、pe)               readelf 显示elf文件的信息

man 查看方法

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值