本节主要讲 gdb、shutdown 、rpm/yum/apt-get 和 mount
目录
gdb 用法
rpm
mount
umount
USB
gdb 用法
前一节讲了 gcc 是编译用的,gdb 则是调试用的,类似于 VS 中的 debug,可以断点、单步调试
选项
list | l | 显示多行源代码 |
break | b | 设置断点,程序运行到断点的位置会停下来 |
info | i | 描述程序的状态 |
run | r | 开始运行程序 |
display | disp | 跟踪查看某个变量,每次停下来都显示它的值 |
step | s | 执行下一条语句,如果该语句为函数调用,则进入函数执行其中的第一条语句 |
next | n | 执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句) |
p | 打印内部变量值 | |
continue | c | 继续程序的运行,直到遇到下一个断点 |
set var name=v |
| 设置变量的值 |
start | st | 开始执行程序,在main函数的第一条语句前面停下来 |
file |
| 装入需要调试的程序 |
kill | k | 终止正在调试的程序 |
watch |
| 监视变量值的变化 |
backtrace | bt | 产看函数调用信息(堆栈) |
frame | f | 查看栈帧 |
quit | q | 退出GDB环境 |
shutdown 和 reboot
只有 root 权限才能关机和重启
init0 是关机,init6 是重启
rpm
一般来说著名的 linux 系统基本上分两大类:
1、RedHat 系列:Redhat、Centos、Fedora 等
2、Debian 系列:Debian、Ubuntu 等
在这两大类系统上想安装东西时要使用的命令如下
RedHat 系列
1、rpm
rpm 的包名比较长,因为不同的机器、不同的 linux 版本要使用 rpm 包也不一样,所以要自己找对应的包
2、yum 黄狗
最简单,yum 帮你去找对应的包,你只要说你要什么包就行了
3、tar
有 gcc 的机器才用
Debian 系列
apt和apt-get
Ubuntu上常用的包安装命令为apt和apt-get
区别:
两个命令差的不多;
apt是apt-get、apt-cache 和 apt-config 中最常用命令选项的集合;
linux发行商鼓励使用apt,apt提供了 Linux 包管理的必要选项
apt-get
mount
linux 是用于服务器的操作系统,服务器最重要意识 cpu,二是硬盘
早起 linux 还有什么显卡声卡,现在说到设备基本就是硬盘,所以 mount 的操作对象是硬盘
硬盘满了,买个硬盘然后打开机箱插机器上 mount 就行了
插上硬盘后:
$ fdisk -l # 查看分区状态,看有没有没分区的空盘,插了一块就有 /dev/sda 两块就有 /dev/sdb
sdb 是一个物理硬盘,现在要把这个硬盘放到软件可以访问的地方上
$ fdisk
一般来说用 n(加一个新分区),这就获得一个新的逻辑分区
接下来用 mkfs 格式化
一般用 mkfs.xfs
$ mkfs.ext4 /dev/sdb1 or # 或 mkfs.xfs /sdb1
# 除了 xfs 还有 NFS,NFS就是把 A 机器上的硬盘 mnt 到 B 机器上,B的也可以 mnt 到 A 的上,这样共享数据而且安全,但要搭建网络
# NIS 还可以做到多台机器/用户共享一个内容,登录一台机器就是登录十台机器,公司小局域网里可能用到
$ mkdir -p /mnt/backup2
$ mount /dev/sdb1 /mnt/backup2
这就把硬盘挂载上了,之后对于 /mnt/backup2 的访问就是对硬盘 /dev/sdb1 的访问
一般也不加 -type 说明是那种类型
因为 mount 之后会在 /proc/filesystems 里挨个试,哪个试成功了就是那个类型所以无需指定
要注意的就是硬盘要 mnt 到并列的目录下,不要一个在 mnt 一个在 mnt/hd1 下
使用 $ mount 查看当前的 mnt 的状态,但是看不到哪个硬盘挂在哪里,也看不到空间
实际上用的是 $ df -h
umount
umount 就是 unmount ,取消挂载,当初写的时候写错了少写了个 n
umount 显示 device is busy 说明硬盘的内容还有在读写,这时候不能硬把硬盘拔下来不然东西就没了,可能会把机器搞坏
解决方法
1、关机
可能造成工作丢失
2、umount -l
lazy umount 会断开设备并关闭打开该设备的全部句柄
USB
插入 U 盘
这里是 root 的权限所以不是 $ 是 #
# mkdir /mnt/usb1
# ls /dev/sd* # u 盘的设备文件也是 sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdb1 # 出现的文件为挂载的 sata 硬盘
现在,插上 U 盘,再观察/dev/ 目录
# ls /dev/sd*
/dev/sda /dev/sda2 /dev/sdb /dev/sdc
/dev/sda1 /dev/sda3 /dev/sdb1 /dev/sdc1
# 多出来的 sdc 为 U 盘的设备文件,现在把新增的设备 mount 上
[root@forward /]# mount /dev/sdc1 /mnt/usb1
$ cp /home/yd211/1.txt /mnt/usb1
$ sync # 把 linux cash 中还没做的命令强行做,也就是同步
$ umount /mnt/usb1 # umount /dev/sdc1 也行
如果 umount 不了显示 busy,就用 umount -l 强行卸载
可以拔出 U 盘了