GDB 全称 GNU Project debugger,是一个通用的 C / C++ 程序调试器,可以用来深入分析程序的运行过程,或者排查程序崩溃的原因。本文面向的读者是 C / C++ 程序员,主要内容包括 GDB 的基本命令、进阶用法和实践案例。目标是使读者掌握 GDB 的常见使用方法,满足日常开发所需。
【Linux命令】Linux-09-crond
crontab [选项]
进行定时任务的设置
-e
编辑crontab定时任务
-l
查询crontab定时任务
-r
删除当前用户的所有crontab任务
【d2l】ML-01-简介
《dive to leaning》学习笔记
【Linux命令】Linux-08-权限管理
组
文件的所有者,所在组,其他组概念
所有者
ls -ahl 可查看文件或目录的所有者
chown 指令改变文件或目录的所有者(change owner)
案例:chown tom apple.txt
所在组
文件默认属于用户所在的组
chgrp 指令改变文件或目录的所在组(change group)
案例:chgrp fruit orange.txt
其他组
除了文件所有者和文件所在组外,其余用户对文件而言均在其他组
groupadd monster
创建组
useradd -g monster fox
创建用户并将其加入monster组
usermod -g 组名 用户名
修改用户所在组
案例:cat /etc/group | grep “wudang” 查看组是否存在
id zwj 查看用户是否存在
usermod -g wudang zwj 修改用户所在组
usermod -d 目录名 用户名
修改用户登录的默认初始目录(用户要有进入新目录的权限)
文件操作权限
例如:-rwxrw—-
0位—文件类型
-代表普通文件
l 代表链接(link)
d 代表目录(directory)
c 代表字符设备文件(鼠标、键盘)(char)
b 代表块设备(硬盘)(block)
rwx权限
- 1-3位—文件所有者用户的权限
- 4-6位—文件所在组用户的权限
- 7-9位—文件其他组用户的权限
作用于文件
r:可以读取文件(read)
w:可以写入文件(write)(但不可创建、删除文件,要有目录的w权限)
x:可以执行文件(execute)(要求是可执行文件)
作用于目录
r:可以读取目录下的内容(ls指令)
w:可以修改目录里的内容(在目录内创建、删除文件,重命名目录)
x:可以进入改目录(cd指令)
chmod 指令
修改文件或者目录的权限
方式1
u:所有者; g:所在组; o:其他组;a:所有人
1.chmod u=rwx,g=rx,o=x 文件/目录名
2.chmod o+w 文件/目录名
3.chmod a-x 文件/目录名
方式2
r=4,w=2,x=1
1=–x
2=-w-
3=-wx
…
7=rwx
案例:chmod 751 hello.txt 将文件权限修改为 rwxr-x–x
chown
chown newowner 文件/目录 —- 改变所有者
chown newowner:newgroup 文件目录 —- 改变所有者和所在组
- -R 当作用于目录上时,递归生效
案例1:chown tom abc.txt
chgrp
chgrp newgroup 文件/目录名 —- 改变所在组
- -R 当作用于目录上时,递归生效
权限管理实践
警察与土匪游戏
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22root@
groupadd police
groupadd bandit
useradd jack -g police
useradd jerry -g police
useradd xh -g bandit
useradd xq -g bandit
passwd jack
passwd jerry
passwd xh
passwd xq
jack@
touch jackfile
chomd 640 jackfile
chmod g=rw,o=r jackfile
root@
usermod -g police xh
xh@
cd /home/jack/小结论:要对相应目录内的文件进行操作,首先要获取目录的权限
1
2
3#需要以下指令可以达到读写目的
jack@
chmod 770 /home/jack/实践2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28root@
groupadd sx
groupadd yg
useradd tangs -g sx
useradd shas -g sx
useradd monkey -g yg
useradd pig -g yg
passwd tangs
passwd shas
passwd monkey
passwd pig
monkey@
vim Monkey.java
chmod g=rw Monkey.java
#注意
chmod g+r+w+x /home/monkey/
pig@
cd /home/monkey/
vim Monkey.java
root@
usermod -g yg shas
shas@
cd /home/monkey/
vim Monkey.java小结论:对于目录的 rwx 权限的理解
- r:读的权限,查看目录里的内容(ls 指令)
- w:写的权限,删除、创建目录里的文件
- x:执行权限,可以进入目录,可以根据权限操作目录里的文件(不必获取目录读写权限)
实践3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18root@
useradd mycentos
passwd mycentos
mycentos@
mkdir -p test/t11/t1/
cd test/t11/t1/
touch aa
vim aa
chmod u+x aa
./aa
rm -rf test/t11/t1/
root@
userdel -r mycentos
systemctl set-default graphical.target
reboot
shutdowm
【Linux命令】Linux-07-常用指令(续)
时间日期指令
date
显示当前时间
- date +%Y 年
- date +%m 月
- date +%d 日
- date “+%Y-%m-%d %H:%M:%S” 格式化字符串
date -s 字符串时间
设置系统时间
- date -s “2022-09-22 12:23:30”
cal
查看当月日历
cal 2022
查看全年日历
搜索查找类指令
find [搜索范围] [选项]
查找指定文件或目录
-name
根据文件名查找目录或文件
案例1:find /home -name hello.txt
-user
根据用户名查找文件或目录
案例2:find /opt -user root
-size
根据大小查找文件或目录
案例3:find / -size +200M/-200K/200G(大于200M/小于200K/等于200G)
locate
快速定位文件路径
【定位前先使用 updatedb 指令更新数据库】
locate hello.txt
定位hello.txt的路径
which
定位指令路径
which ls
定位ls指令所在路径
grep配合“|”管道符号
使用grep过滤查找后使用管道符将查找内容传递给后面的命令处理
grep [选项] 查找内容 源文件
- -n 显示匹配行和行号
- -i 忽略字母大小写
案例1:在“/home/hello.txt”文件中,查找“yes”所在行,显示行号
cat /home/hello.txt | grep -n “yes” 或
grep -n “yes” /home/hello.txt
压缩与解压
gzip/gunzip 文件名/文件名.gz
gzip用于压缩文件,gunzip用于解压文件
案例1:gzip /home/hello.txt
zip [选项] XXX.zip 要压缩的内容
压缩文件以及文件夹
- -r 递归压缩
案例1:zip -r myhome.zip /home/ 将home目录及其子文件夹压缩
unzip [选项] XXX.zip
解压文件
- -d 目录名 指定解压后的目录
案例1:unzip /home/myhome.zip -d /opt/tmp
tar [选项] XXX.tar.gz 打包内容
打包、解压或压缩文件及文件夹
- -c 产生.tar打包文件
- -v 显示详细信息
- -f 指定压缩后的文件名
- -z 打包同时压缩
- -x 解包.tar文件
- -C 指定解压位置
案例1:tar -zcvf pc.tar.gz cat.txt pig.txt
案例2:tar -zcvf myhome.tar.gz /home/
案例3:tar -zxvf pc.tar.gz
案例4:tar -zxvf myhome.tar.gz -C /opt/tmp
【Linux命令】Linux-06-常用指令
指定运行级别
运行级别介绍
- 0:关机
- 1:单用户【找回密码】
- 2:多用户状态无网络服务
- 3:多用户状态有网络服务
- 4:系统未使用保留给用户
- 5:图形界面
- 6:系统重启
init 0/1/2/3/4/5/6
切换运行级别
systemctl get-default
查看系统默认运行级别
systemctl set-default multi-user.target(3)/graphical.target(5)
设置系统的默认运行级别(CentOS7将运行级别简化为3和5)
找回root密码(CentOS7)
在系统启动时按“e”,编辑所选项
将光标移动至红色方框处,并追加“init=/bin/sh”,追加后按 Ctrl + x 进入单用户模式
接着在光标闪烁出输入”mount -o remount,rw /“,按回车,输入”passwd”,按回车,连续输入新密码两次后光标继续闪烁
接着输入“touch /.autorelabel”后按回车,再输入“exec /sbin/init“后回车,等待系统重启即成功重置密码
帮助指令
man 命令或者配置文件
获取相关命令的帮助信息
help 命令
获得shell内置命令的帮助信息
文件目录相关指令
pwd
显示当前工作目录的绝对路径
ls [选项] [文件或目录]
- -a 显示所有,包括隐藏的(.开头)
- -l 以列表方式显示信息
- -al / -la 组合使用
cd [目录]
切换至指定目录
cd ~ 切换至当前用户的家目录
cd ../ 切换至上一级目录pwd
mkdir [选项] 要创建的目录
-p 创建多级目录
案例1:mkdir /home/dog 创建一个目录
案例2:mkdir -p /home/animal/dog 创建多级目录
rmdir [选项] 要删除的空目录
rm -rf 强制删除目录(无论是否为空)
案例一:rmdir /home/dog
案例二:rm -rf /home/animal/dog
touch 文件名
创建新的空文件
cp [选项] 源文件/目录 目标目录
- -r 递归复制整个目录
- \cp 强制覆盖原有的旧文件
rm [选项] 要删除的文件或目录
- -r 递归删除目录
- -f 强制删除,不提示
mv 旧名 新名
重命名文件或目录
mv 文件或目录 新目录
移动文件或目录
cat [选项] 要查看的文件
查看文件
- -n 显示行号
more 要查看的文件
按页显示文件
- 空格键 向下翻一页
- Enter 向下翻一行
- q 离开more不在显示文件
- Ctrl + f 向下滚动一屏
- Ctrl + b 向上滚动一屏
- = 输出当前行的行号
- :f 输出文件名和当前行的行号
less 要查看的文件(适合查看较大的文件)
分屏查看文件内容,支持各种显示终端,并非一次全部加载整个文件,而是根据显示的需要加载
- 空格键 向下翻一页
- pagedown 向下翻一页
- pageup 向上翻一页
- /字串 向下搜寻字串;”n“向下查找;”N”向上查找
- ?字串 向上搜寻字串;”n”向上查找;”N”向下查找
- q 离开less
echo [选项] 输出内容
输出内容至控制台
案例1:echo $PATH ;输出环境变量
案例2:echo $HOSTNAME;输出主机名
案例3:echo “hello,world”;输出指定内容
“>” 目标文件(覆盖写)
输出重定向指令,将输出内容重新覆盖到目标文件
案例1:ls -l > 文件
案例2:cat 文件1 > 文件2
“>>” 目标文件(追加写)
输出重定向指令,将输出内容重新追加到目标文件
案例1:echo “追加内容” >> 目标文件
案例2:cal >> /home/mycal (cal命令输出当前日期)
head [选项] 文件
查看文件前10行内容
- -n 指定显示行数
tail [选项] 文件
查看文件后10行内容
- -n 指定显示行数
- -f 实时监控文件的追加内容(Ctrl + c 退出)
ln -s [源文件或目录] [软链接名]
为原文件创建一个软链接
history
查看操作历史
案例1:history 10 ;显示最新十条
案例2:!5;重新执行编号为5的指令
【Linux命令】Linux-05-关机重启命令及用户管理
关机&重启命令
关闭系统
shutdown -h now
立刻进行关机
shutdown -h 1 “hello everyone ,一分钟后关机”
1分钟后关机并通知所有登陆到该系统的用户
shutdown -r now
立刻重启计算机
halt
关机,作用与”shutdown”相同
reboot
立刻重启计算机
sync
把内存数据写入到磁盘,一般在关机或重启前要执行
用户注销与登录
su - 用户名
用户切换
logout(在图形化界面无效,在运行级别3有效)
注销当前用户
用户管理
uesradd 用户名
添加用户
useradd -d 指定目录 用户名
添加用户并指定用户目录
passwd 用户名
为指定用户修改密码
pwd
显示当前所在目录
userdel 用户名
删除用户账号,但是保留用户的目录
userdel -r 用户名(谨慎使用)
删除用户账号以及用户的目录
id 用户名
查询用户信息(用户id,组id,用户组id)
whoami/who am i
查询当前用户
用户组
类似于角色,系统对有共性(权限)的多个用户进行统一管理
groupadd 组名
添加用户组
groupdel 组名
删除用户组
useradd -g 用户组名 用户名
添加用户至指定组
usermod -g 用户组名 用户名
修改用户所在的用户组
用户和组的相关文件
/etc/passwd 文件(用户信息配置文件)
格式 用户名:口令:uid:gid:注释性描述:主目录:登陆shell
/etc/shadow文件(口令配置文件)
格式 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group文件 (组配置文件)
格式 组名:口令:组标识号:组内用户列表
【Linux命令】Linux-04-vim
vim的模式及切换
快捷键的使用
拷贝/粘贴(一般模式)
拷贝当前行:yy
拷贝当前行至下5行:5yy
粘贴:p
删除(一般模式)
删除当前行:dd
删除当前行至下5行:5dd
查找(/命令行模式)
输入 ”/“ 进入命令行模式,输入要查找的内容,按”n”切换匹配结果
设置/取消文件行号(:命令行模式)
设置行号:set nu
取消行号:set nonu
到达文件末行和首行(一般模式)
到达文件末行:G
到达文件首行:gg
撤销(一般模式)
撤销最新的动作:u
移动光标至指定行(一般模式)
光标移动到第23行:23G
【Linux命令】Linux-03-远程
【Linux命令】Linux-02-目录结构
在Linux系统中,一切皆是文件
文件目录结构
/
根目录
/boot
存放系统启动时的核心文件
/bin
Binary的缩写,存放经常使用的命令
/etc
存放系统和应用程序的配置文件
/sbin
System Binary 的缩写,存放可对系统进行配置的命令
/home
存放普通用户的主目录,每个用户有一个目录,一般以用户名命名
/lib
存放最基础的动态链接共享库
/usr
用户安装程序的默认目录,类似win下的“Program Files”
/usr/local
应用程序的安装目录
/root
系统管理员的用户主目录
/proc 、 /srv 、/sys
系统相关的文件[勿动]
/tmp
存放临时文件
/dev
将所有的硬件用文件的形式存储起来,类似win下的设备管理器
/mnt
为了让用户挂载外部存储空间,如虚拟机与母机直接的共享存储空间
/opt
应用程序安装包存放的目录
/var
存放着在不断扩充的东西,如日志文件