嵌入式八股文——Linux常用命令介绍及用法
2023-12-17 20:50:28
1. 查看端口号
netstat -napt
ss -napt
2. 查看栈空间的大小
ulimit -s //默认8192
-a 也可以查看全部
3.动态库和静态库的制作
g++ -fPIC -shared libxxx.so
ar rsc
4. 查看一个文件中次数出现最多的IP
cat //输出文件
uniq -c // 在每一列旁边显示该列的重复次数(-c) -u 显示仅出现一次的行
sort -n // 按数值(-n)排序 -r 从大到小排序
head -n 200 // 表示显示1-200行
5. 强制刷盘
sync
fsync
6. GBD命令
-b [行数][函数名] 断点
-c 运行到断点
-s 进入函数
-n 下一行
-finish 结束函数
-bt 查看函数堆栈
-frame [spec] 0的话表示当前栈帧 最大的是main函数
-info frame 打印当前栈帧的信息(编号、地址、局部变量等)
-until 跳出循环体
-b filename:line number 设置程序的断点在某个文件中
-d N 删除断点
-display/print/p: 查看局部变量
-x 查看内存:
命令:x/3uh 0x7ff320
表示,从内存地址0x7ff320读取内容,h表示以双字节为一个单位,3表示三个单位,u表示按十进制显示无符号整型。
7. 程序崩了是什么情况?怎么处理?
答:
- 访问不存在的内存地址
- 访问系统保护的内存地址
- 数组访问越界等。
首先可以用ulimit -c unlimited
来开启.core
文件。
然后用gdb 程序名 core
进行调试
8. 解压和压缩
1. 解压tar.gz 文件: tar -zxf
2. 解压zip 文件: unzip
9. 创建文件
touch filename.xxx
10. 排查死锁?
答:
- 首先可以通过 ps-aux | grep 程序名称 来查看进程的状态。如果程序的stat为Sl+的话,那么这个多线程进程处于睡眠状态;
- 然后需要查看每个线程占用CPU的情况,因为主线程处理睡眠有可能是死锁,也有可能是死循环。死循环的话,线程占用的CPU资源会比较多。查看的指令是top -Hp 进程号查看进程内部每个线程的运行情况;
- 如果线程占用CPU资源为0,那么就是阻塞了而且死锁了
那么,我们可以先把debug
版本的程序运行起来:
- 先查一下进程号,
ps- aux | grep 程序名
; - 这时候可以通过
gdb attach pid
调试正在运行的程序,当然这个程序是在debug
版本下运行的; - 然后使用
thread apply all bt
打印所有线性的调用栈信息; - 然后用
info threads
看一下所有的线程情况 - 切换到某一个
thread [1|2|3]
- 再用
where
打印该线程的堆栈情况 - 从上到下检查有没有cpp文件对应的行数;
- 再去看对应的行就行了
11. 从一台Linux拷贝文件到另外一台主机?
答:
? scp 本地Linux系统文件路径 远程用户名@IP地址:远程系统文件绝对路径名
12. Linux查看一个文件大小的方式?
答:
- ls - l filepath :显示字节数
- stat filepath : 显示字节数
13. Linux查看一个进程打开的文件?
lsof -p + 进程号
14. Linux文件权限?
答:
? 从左到右是三组 rwx,描述了文件所属者、文件所属组、其他用户的可读可写可执行
状态。
15. Linux查看进程的系统调用?
答:
strace
16. Linux后台进程?
答:
nohup xxx &
17. Top命令的参数分别是什么意思?
答:
?
VIRT:分配的虚拟内存的大小。
RES:实际使用内存的大小。
SHR:共享内存的大小。
18. Linux查看磁盘的大小?
答:
df -h + 目录
文章来源:https://blog.csdn.net/qq_44814825/article/details/135044341
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!