查看软件包的类型
shell
file sougou.deb
软件源配置文件
- 方式一:/etc/apt/sources.list
- 方式二:软件更新器
- 修改完后 sudo apt udpate
shell
sudo apt install package-name 安装软件包
sudo apt remove package-name 移除软件包
sudo apt --purge remove package-name 移除软件包并删除配置
sudo apt show package_name 显示软件包的信息
sudo apt-cache depends <packages> 了解软件依赖关系
sudo apt-get check 检查软件依赖关系
dpkg 是安装离线安装软件包
链接
1、软链接
sbin -> usr/bin 有个文件是sbin,真正的文件在usr/bin下
shell
ln -s /tmp/ceshisss abc 创建一个软链接名为abc,真正的地址在/tmp/ceshisss
cat abc 会出错的,因为不是真实存在的
rm old_link 删除一个软链接
ln -s /new/path/to new_link 创建新链接
# 强制创建,如果链接已存在则覆盖
ln -sf /new/path/to/source existing_link
2、硬链接(一个文件的两个名字,修改一个文件会影响另一个文件)
shell
查找文件
shell
find . -name "file" -type f 2>/dev/null 在当前目录下查找file,-type f 是普通文件
-iname 是忽略大小写的方法
2>/dev/null 报错的不要显示
查找文件内容
shell
grep -irn "hello" . 在当前路径下查找
-i 忽略大小写的方式
-n 显示行数
-r 当前路径递归
进程的命令
shell
ps -elf PID 进程的ID号, PPID 父进程ID
ps -aux PID 进程的ID号
top 实时动态显示进程信息,q 退出
pstree 树状的方式显示进程关系
kill -9 PID 杀死进程
GDB调试工具(编译的时候是调试模式)
shell
gdb a.out 开始gdb
b 10 在第10行打断点
r 开始运行,如果不下断点,直接运行到结束
start 也是开始运行,停在程序第一行
p a 打印a的值
l 查看代码的内容
c 从断点处运行到结束或者下一个断点
n 从断点运行下一步
s 进入函数体(step into)
q 退出gdb
调试core文件
shell
gdb a.out core 直接显示错误
调试正在运行的进程
shell
gdb a.out -p PID ##PID由ps aux 查到 (ps aux | grep a.out)
调试多进程程序
shell
gdb fork_t 开启gdb
set follow-fork-mode child/father 切换父进程或者子进程
set detach-on-forn off
info inferiors 查看跟踪的进程
inferior 1 切换父进程
inferior 2 切换子进程
调试多线程程序
shell
gdb test 开始gdb
info thread 查询显示线程
thread xxx 切换线程
break location thread id GDB为特定线程设置断点
set scheduler-locking on/off GDB设置线程锁z
n 当前线程进行下一步,其他线程正常运行,不会卡在断点
如果设置set scheduler-locking on 一个断点就会永久卡住,能单步调试另一个线程b
b 10 两个线程同时断在第10行
如果b 6 thread 3 给第3线程在第6行打断点
添加环境变量(终端输入一些可执行文件的查找路径)
shell
echo $PATH 打印PATH环境变量
printenv 打印所有的环境变量
PATH环境变量,在这些目录下查找文件而无需加路径
vim
PATH=$PATH:~/local/bin/ 只能在当前终端中可用
export PATH=$PATH:~/local/bin/ 将PATH设置为全局的环境变量,其他终端也可以用,export是将变量提升为环境变量