Shell之常见命令使用汇总

时间:2022-06-01 17:05:29

调试命令

gcc  -g

编译源码确保含有-g的参数

gdb  ./app                

启动gdb并开始调试程序app

(gdb)set args  x1  y1

设置app运行的参数(./app  x1  y1)

(gdb) r

开始运行程序(run的简写)

(gdb) l

列举调试的源码(list的简写)

(gdb) b 16

在代码16行设置断点

(gdb)b main.cpp:12

在main.cpp文件的12行设置断点

(gdb)b onRecv

在onRecv函数设置断点

(gdb)info break

查看所有的断点

(gdb)info break 3

查看第3个断点

(gdb)n

单行执行,有函数不会进入函数(next简写)

(gdb)s

单步执行,有函数会跳入函数(step简写)

(gdb)finish

退出函数

(gdb)c

继续运行(continue简写)

(gdb)q

退出调试(quit简写)

(gdb)p a

int a = add(1,2);

如果在上述代码附近设置断点后,查看a的值(print的简写)



常见编译命令

编译静态库

gcc –c test.c            #生成test.o
ar rcs libtest.a test.o   #生成test静态库

连接共享库

./app –L/XX/XX/ libtest.a     #-L指定libtest.a静态库的路径(可相对路径)

编译共享库

gcc –c test.c     

gcc -shared -fPIC -o libtest.so test.o

连接共享库

./app –ltest

export  LD_LIBRARY_PATH= 共享库路径:$ LD_LIBRARY_PATH

#共享库路径为 存放libtest.so的路径

#或直接拷贝共享库到/lib/、/usr/lib目录下)

查看共享库

ldd test 或者 ldd libtest.so    #查看程序/共享库依赖的其他共享库

nm libtest.so  #查看共享库中的符号表信息

条件编译

make -DCNSU

针对代码如下:

#ifdef CNSU          

     …

#endif

Make前配置

./configure --prefix=/opt     #指定源码编译后make install的安装位置


跟踪命令的系统调用

strace –o log.txt app

执行app程序,并将其涉及的所有系统调用输出到log.txt中

strace –o log.txt –p pid

查看指定进程号的程序对应的系统调用的过程

 

 

 

 


内存泄露检测

安装valgrind

Yum install valgrind

生成内存泄露信息

valgrind --tool=memcheck --leak-check=yes --log-file=mem.txt  ./app
#生成app程序的内存泄露的信息,结果存到mem.txt中
definitely lost
肯定泄露部分
possibly lost
可能泄露部分
indirectly lost
间接泄露

Vi命令使用

vi  main.cpp

编辑main.cpp文件

I

进入编辑模式

ESC

退回命名模式

Shift + :

输入命令界面

Shift + : + wq

保存退出

Shift + : + q!

强制退出,不保存

/key

从光标处向前查找

?key

从光标处向后查找

YY

拷贝光标所在的行

p

粘贴拷贝的行

DD

删除光标所在的行

:set ff

查看文件的编码格式

:set ff=unix

修改编码格式为unix ,等效于 dos2unix fname


进程管理的命令

ps -ef

列出所有的进程列表

top

动态实时显示进程使用的内存、CPU等信息

Killall app

杀死所有以app为命名的程序

Kill -9 pid

杀死进程号为pid的进程

 

 


常见网络相关命令

lsof –i:80

列出监听端口80的程序列表

Ifconfig

查看网络配置

Ifconfig eth0 192.168.2.99

设置网卡eth0的IP为192.168.2.99

常见权限修改

Chmod 777 –R ./

将文件修改为rwx最高权限

Chmod –cR 775 file

将777的文件权限修改降低


创/删/拷基础命令

Mkdir –p /a/b/c

创建多级目录

\cp a.txt /home

追加\前缀,拷贝文件时,如果存在覆盖的情况不会提示(强制覆盖)

账户管理

添加账户

Useradd  xiaoming

删除账户

Userdel  xiaoming

为smb添加密码

Smbpass –a xiaoming

挂载

df -h

查看新插入U盘后对应的路径(如:/dev/sdb1)

 

挂载U盘到/mnt/usb下

Mkdir –p /mnt/usb

Mount /dev/sdb1 /mnt/usb

 

 

链接命令

软连接

ln –s log.txt log_link.txt   #后者log_link.txt为软链接文件

#即 log_link.txt  à  log.txt

硬链接

ln log.txt log_hard.txt   #后者log_hard.txt为硬链接

 

 

MySql常见命令

连接数据库

>mysql –h 192.168.2.99 –uroot –pdonica_wifi

#连接主机192.168.2.99,数据库账户(root,donica_wifi)

修改数据库密码

> mysqladmin –uroot -p旧密码 password 新密码

#修改root用户的密码

增加新用户

 

登陆/查看默认用户

mysql -udebian-sys-maint –p

select user();                

sed

 

 

 

 

 

 

awk

 

 

 

 

 

 

grep

 

 

 

 

 

 

其它查找命令

快速查找文件

locate smb.conf    #基于db数据库索引查找文件(速度远胜find)

更新文件索引

updated          #配合locate进行更新文件索引

 

 

 

 

 

 

Makefile常用语法

 

 

 

 

 

 

Shell常用语法

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Linux常用服务 & 配置文件