嵌入式八股文——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. 程序崩了是什么情况?怎么处理?

答:

  1. 访问不存在的内存地址
  2. 访问系统保护的内存地址
  3. 数组访问越界等。

首先可以用ulimit -c unlimited来开启.core文件。

然后用gdb 程序名 core进行调试

8. 解压和压缩

1. 解压tar.gz 文件: tar -zxf 
2. 解压zip 文件: unzip

9. 创建文件

touch filename.xxx

10. 排查死锁?

答:

  1. 首先可以通过 ps-aux | grep 程序名称 来查看进程的状态。如果程序的stat为Sl+的话,那么这个多线程进程处于睡眠状态;
  2. 然后需要查看每个线程占用CPU的情况,因为主线程处理睡眠有可能是死锁,也有可能是死循环。死循环的话,线程占用的CPU资源会比较多。查看的指令是top -Hp 进程号查看进程内部每个线程的运行情况;
  3. 如果线程占用CPU资源为0,那么就是阻塞了而且死锁了

那么,我们可以先把debug版本的程序运行起来:

  1. 先查一下进程号,ps- aux | grep 程序名
  2. 这时候可以通过gdb attach pid 调试正在运行的程序,当然这个程序是在debug版本下运行的;
  3. 然后使用thread apply all bt 打印所有线性的调用栈信息;
  4. 然后用 info threads 看一下所有的线程情况
  5. 切换到某一个thread [1|2|3]
  6. 再用where打印该线程的堆栈情况
  7. 从上到下检查有没有cpp文件对应的行数;
  8. 再去看对应的行就行了

11. 从一台Linux拷贝文件到另外一台主机?

答:

? scp 本地Linux系统文件路径 远程用户名@IP地址:远程系统文件绝对路径名

12. Linux查看一个文件大小的方式?

答:

  1. ls - l filepath :显示字节数
  2. 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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。