深入理解linux操作系统---第3讲 基本操作与基本管理
3.1 shell基本功能与基本概念
3.1.1 shell基本功能
Shell是Linux系统的核心交互工具,主要功能包括:
- 程序启动与进程管理:通过命令行将程序名传递给内核执行,支持进程的后台运行与监控(如
ps
、kill
命令) - 文件系统操作:提供
cp
、mv
、rm
等内置命令实现文件复制、移动、删除等操作 - 输入输出控制:支持标准流重定向(
>
、>>
、<
)与管道(|
)实现数据流转
3.1.2 字符与保留字
Shell保留字是具备特殊语义的关键字符:
- 流程控制类:
if/then/fi
、for/while/case
等用于脚本逻辑控制 - 命令分隔符:
;
(顺序执行)、&&
(逻辑与)、||
(逻辑或) - 查看方式:
type
命令可验证保留字身份,例如type if
显示"if is a shell keyword"
3.1.3 文件命名及文件类型
Linux文件系统核心特征:
- 命名规则:最大长度255字符,避免使用
/
、*
等特殊符号,.
开头的文件为隐藏文件 - 文件类型:
- 普通文件:文本文件(ASCII)、二进制文件(ELF格式)、数据文件(如CSV)
- 目录文件:存储子目录和文件的元数据
- 设备文件:字符设备(如终端
/dev/tty
)、块设备(如磁盘/dev/sda
)
3.1.4 目录结构与路径
Linux文件系统层级标准(FHS)核心目录:
- /bin:基础命令二进制文件(
ls
、cat
等) - /etc:系统配置文件(如网络配置
/etc/sysconfig/network-scripts
) - /var:动态数据(日志文件
/var/log
、数据库文件等) - 特殊目录:
/proc
(进程信息虚拟文件系统)、/sys
(内核参数接口)
3.1.5 shell命令格式与命令行
命令语法规范:
- 标准格式:
command [options] [arguments]
- 选项类型:
- 短格式:
-l
(等价于--list
) - 长格式:
--all
(支持更直观的语义)
- 短格式:
- 参数传递:
read -n 1
中-n
选项后接读取字符数参数
3.1.6 标准流与I/O重定向
输入输出控制技术:
- 标准流:stdin(0)、stdout(1)、stderr(2)
- 重定向操作:
- 输出覆盖:
ls > filelist.txt
- 错误追加:
gcc test.c 2>> error.log
- 输入重定向:
sort < data.txt
- 输出覆盖:
3.1.7 管道与三通
数据流处理机制:
- 管道符
|
:ps -ef | grep java | wc -l
统计Java进程数 - 三通tee:
ls -l | tee dirlist.txt | grep .log
同时输出到文件和筛选 - xargs优化:
find . -name "*.txt" | xargs rm
处理大量文件参数
3.1.8 变量与环境变量
变量管理要点:
- 作用域:
- 局部变量:
var=value
(仅当前shell有效) - 全局变量:
export VAR=value
(子进程继承)
- 局部变量:
- 查看工具:
env
:显示所有环境变量printenv PATH
:查看特定变量
3.1.9 引号机制与替换
语义解析规则:
- 单引号:完全抑制变量扩展,
echo '$PATH'
输出字面量 - 双引号:允许变量扩展,
echo "Current path: $PATH"
- 反引号:命令替换,
current_dir=\
pwd`等价于
$(pwd)`
3.1.10 shell命令执行
执行流程详解:
- 词法解析:拆分命令为token序列
- 命令查找:优先检查内置命令,其次搜索
PATH
路径 - 进程创建:
fork()
创建子进程,exec()
加载程序
3.1.11 shell种类
主流Shell对比:
- Bash:默认Shell,兼容sh并支持命令行编辑
- Zsh:增强交互功能(自动补全、主题系统)
- Fish:语法高亮、智能提示等现代化特性
3.2 Linux系统基本命令
3.2.1 目录操作
核心命令集:
- 层次导航:
pushd/popd
维护目录栈实现快速跳转 - 路径处理:
realpath file.txt
显示绝对路径 - 目录分析:
tree -L 2
显示二级目录树结构
3.2.2 文件操作
关键操作命令:
- 批量处理:
find . -name "*.log" -exec rm {} \;
- 链接管理:
ln -s target linkname
创建符号链接 - 安全删除:
rm -i
交互式确认防止误删
3.2.3 文件属性
权限与属性管理:
- 权限修改:
chmod 755 script.sh
设置可执行权限 - 属主变更:
chown user:group file
修改所有者 - 时间戳更新:
touch -t 202504131200 file
指定修改时间
3.2.4 文本处理
编辑器与处理工具:
- 流式编辑:
sed 's/foo/bar/g' input.txt
全局替换 - 列处理:
awk '{print $1,$3}' data.csv
提取指定列 - 差异比较:
diff -u old.c new.c
生成补丁文件
3.3 Linux系统基本管理
3.3.1 环境变量管理
配置策略:
- 临时设置:
export TZ='Asia/Shanghai'
- 永久生效:写入
\~/.bashrc
或/etc/profile
- 安全实践:敏感信息通过环境变量传递而非硬编码
3.3.2 别名管理
高效命令配置:
- 快捷指令:
alias ll='ls -alh'
- 持久化存储:将别名定义写入
\~/.bash_aliases
3.3.3 主机名管理
修改步骤:
- 临时修改:
hostnamectl set-hostname newhost
- 永久生效:修改
/etc/hostname
和/etc/hosts
3.3.4 网络管理
基础配置工具:
- 地址配置:
nmcli con mod eth0 ipv4.addresses 192.168.1.10/24
- 连通性测试:
mtr -rw google.com
显示实时路由质量
3.3.5 时间管理
时区与时钟设置:
- 时区切换:
timedatectl set-timezone America/New_York
- 时钟同步:
chronyc sources -v
检查NTP源状态
3.3.6 软件包管理
包管理器对比:
- APT:
apt-get install -y nginx
(Debian系) - DNF:
dnf groupinstall 'Development Tools'
(RHEL系)
3.3.7 进程管理
监控与信号处理:
- 实时监控:
htop -d 10
每10秒刷新进程列表 - 信号发送:
kill -SIGHUP $(pidof nginx)
重载配置
3.3.8 服务管理
Systemd核心操作:
- 服务启停:
systemctl restart sshd
- 开机控制:
systemctl enable docker
3.3.9 防火墙管理
工具选择:
- iptables:传统包过滤规则
- firewalld:动态管理区域与服务
3.3.10 SELinux管理
模式切换命令:
- 查看状态:
sestatus
- 临时禁用:
setenforce 0
3.4 练习题
3.4.1 思考题
(1)shell的基本功能有哪些?
(2)Linux系统中的主要目录有哪些?各有什么作用?
(3)工作目录及其父目录可分别用什么表示?
(4)在如图3-1所示的目录结构中,若处在usr1目录中的用户要访问include目录中的stdio.h,可以采用什么样的路径,对应的带有路径的文件名是什么?
(5)Linux系统中用于文件中的通配符有哪些?试举例说明它们的作用。
(6)常用的shell环境变量有哪些?怎么查询和设置环境变量?
(7)什么是输入/输出重定向?管道的功能是什么?试举例说明如何使用它们。
(8)shell中的引号有哪几种?各有什么作用?试举例说明之。
(9)什么是参数替换?什么是命令替换?试举例说明如何使用它们。
(10)shell的种类有哪些?
(11)什么是别名?如何定义和取消别名?
(12)什么是主机名?如何进行主机名规划,如何设置主机?
3.4.2 选择题
(1)下列设备属于块设备的是( )。
A.键盘 B.终端 C.鼠标 D.硬盘
(2)cd命令可以改变用户的当前目录,当用户输入命令“cd”并按Enter键后,( )。
A.当前目录改为根目录 B.当前目录不变,屏幕显示当前目录
C.当前目录改为用户主目录 D.当前目录改为上一级目录
(3)命令echo -en '\a'的输出为( )。
A.响铃 B.\a C.'\a' D.a
(4)超级用户的用户主目录是( )。
A./ B./root C./home D./home/root
(5)一般情况下,普通用户zh3的家目录是( )。
A./zh3 B./root/zh3 C./home/zh3 D./usr/zh3
(6)要删除目录/home/user1/subdir连同其下级目录和文件,不需要交互确认,正确的命令是( )。
A.rm -rf /home/user1/subdir B.rm -df /home/user1/subdir
C.rmdir -pf /home/user1/subdir D.rmdir -P /home/user1/subdir
(7)在红帽系统中,查询已安装软件包tcsh内所含文件列表信息的命令是( )。
A.rpm -qa tcsh B.rpm -ql tcsh
C.rpm -qp tcsh D.rpm -qf tcsh
(8)在Ubuntu系统中,查询已安装软件包tcsh内所含文件列表信息的命令是( )。
A.dpkg -l tcsh B.dpkg -L tcsh C.dpkg -S tcsh D.dpkg -s tcsh
(9)在红帽系统中,查询/usr/bin/shred文件归属某个已安装软件包的命令是( )。
A.rpm -qa /usr/bin/shred B.rpm -ql /usr/bin/shred
C.rpm -qp /usr/bin/shred D.rpm -qf /usr/bin/shred
(10)在Ubuntu系统中,查询/usr/bin/shred文件归属某个已安装软件包的命令是( )。
A.dpkg -l /usr/bin/shred B.dpkg -L /usr/bin/shred
C.dpkg -S /usr/bin/shred D.dpkg -s /usr/bin/shred
3.4.3 综合题
(1)什么是时区?中国的标准时区是什么?如何正确设置系统时区?
(2)试述在Linux系统中如何进行日期和时间管理。在图形界面下可以实现时间和日期管理吗?若能,如何做?
(3)在UNIX/Linux系统中有些操作是有副作用的,如cp、mv和rm等,应该如何避免?
(4)文件的属性和类型有哪些?如何确定某文件的类型?如何获得文件的属性?
(5)试简述Linux系统的信号通信机制。如何查询可用信号?如何实现信号通信?如何捕获信号?
3.4.4 答案
1.思考题
(1)shell的基本功能有哪些?
解:
shell功能有六:命令解释执行、文件名及各种替换、I/O重定向、通信管道建立、系统环境设置和shell编程。
(2)Linux系统中的主要目录有哪些?各有什么作用?
解:
/:系统的根目录。/dev:系统的设备目录。/etc:存放Linux系统和大部分应用软件的配置文件。/home:用户家目录所在的目录。/root:root用户的家目录。/lost+found:丢失文件的存放目录。/mnt:外部设备的挂装点,用于挂载设备文件。/boot:Linux的启动目录。系统内核文件,引导器Grub等存放在这里。/proc,/sys:伪文件系统目录。/usr:用户级目录。/tmp,/usr/tmp:临时目录。/sbin,/usr/sbin:系统级的命令与工具目录。/bin,/usr/bin:用户级的命令与工具目录。/usr/include:C语言,内核编译所需要的头文件存放目录。/lib,/usr/lib:库文件存放目录,其中有表态库和动态库。/lib64,/usr/lib64:64位库文件存放目录。/usr/src:Linux源代码目录,编译内核时使用。/var:通常用来存放一些经常变化的内容,比如各种网络服务的工作目录都在这里。/var/log:系统日志目录。/var/spool:存放邮件、新闻、打印队列任务等。/usr/share:存放共享使用的,比如各种共享或在线帮助等。
(3)工作目录及其父目录可分别用什么表示?
解:
一个目录文件内至少要有两个文件项:“.”-当前目录;“..”-上级目录。当前目录也叫工作目录。
(4)在如图3-1所示的目录结构中,若处在usr1目录中的用户要访问include目录中的stdio.h,可以采用什么样的路径,对应的带有路径的文件名是什么?
解:
相对路径:../../usr/include/stdio.h
绝对路径:/usr/include/stdio.h
从这个例子中,好像看到:相对路径与绝对路径复杂,其实并非如此。如果,要访问usr2目录中的file1,相对路径可表示为../usr2/file1,绝对路径表示为/home/usr2/file1。
(5)Linux系统中用于文件中的通配符有哪些?试举例说明它们的作用。
解:
这里所说的通配符主要是指shell用于文件名、路径匹配与搜索的通配符,与正则表达式中通配符不同。常用的通配符有“*”、“?”和括在方括号“[]”中的字符序列。
- *:代表从它所在位置开始的任何字符串。默认情况下,“.”和路经名中的斜线“/”必须显式匹配。
- ?:代表它所在位置上的任何单个字符。
- [ ]:每次只匹配“[]”中字符的一个,若[]中的首字符是“!”或“^”,则表示非运算。[]中还可使用-表示范围。
(6)常用的shell环境变量有哪些?怎么查询和设置环境变量?
解:
常用的shell环境变量可参见3.1.8之“2.环境变量”。环境变量可用命令env、export或set来查询或设置环境变量的值。比如,可用不带有任何参数和选项执行env、export和set,来显示所有的环境变量。还可以使用管道命令查询指定环境变量(比如PATH)的及其值,方法是
$ env | grep PATH
$ set | grep PATH
$ export | grep PATH
$ echo grep $PATH
(7)什么是 I/O 重定向?管道的功能是什么?试举例说明如何使用它们。
解:
当执行一个命令时,shell通常会自动为其打开三个标准流(文件):标准输入流、标准输出流和标准错误流。
I/O重定向(也称作改道)是指通过文件的形式实现标准I/O流。通过I/O重定向可以实现:输入重定向;标准输出重定向;标准错误的重定向和标准输出和标准错误同时重定向。示例如下:
$ wc /etc/passwd # 统计文件/etc/passwd的行、词和字符信息。或
$ wc < /etc/passwd # 标准输入重定向
$ ls > /tmp/dir.out # 覆盖方式。将当前目录信息重定向到文件/tmp/dir.out
$ ls /usr >> /tmp/dir.out # 追加方式,将/usr信息重定向追加到/tmp/dir.out
$ ls -l /home/w-w-w 2> /tmp/err.out # 将标准错误重定向到文件/tmp/err.out
$ cat /home/w-w-w 2>> /tmp/err.out # 将标准错误追加到文件/tmp/err.out
$ cat /tmp/err.out # 查看文件/tmp/err.out内容
$ ls -l -d / /home/w-w-w &> /tmp/err.out # 将标准输出和标准错误同时重定向到/tmp/err.out
$ ls -l -d /boot /home/w-w-w &>> /tmp/err.out # 将标准输出和标准错误同时追加到/tmp/err.out
$ cat /tmp/err.out # 查看文件/tmp/err.out内容
管道机制是在两个或多个进程之间建立一种连接,使得前一个命令的输出作为后一个命令的输入。管道机制常用于进程间的通信。示例如下:
$ ls -l /dev | wc -l # 统计设备目录/dev内有多少文件或子目录
$ cat /etc/passwd | grep "^root:" # 显示/etc/passwd行首root:的行
$ cat /etc/passwd | grep "root:" # 显示/etc/passwd内有包含root:的行
$ cat /etc/passwd | grep "root:"|wc -l # 统计/etc/passwd内有多少行包含root:
(8)shell中的引号有哪几种?各有什么作用?试举例说明之。
解:
在shell中有三种引号:单引号('),双引号(")和反单引号(`),前两者用于变量定义,后者用于命令替换。
①单引号
由单引号括起来的字符都作为普通字符。特殊字符用单引号括起来以后,也会失去原有意义。例如:
# string='$PATH' # 定义string变量,其值为'$PATH'
# echo $string # 显示变量的值:$PATH
②反单引号
反单引号的作用是命令替换。例如:
# x=`pwd` # 通过命令pwd替换定义变量x。pwd的功能是显示用户工作目录
# y=`whoami` # 通过命令whoami替换定义变量y。whoami的功能是显示用户名
# echo $x $y # 显示变量x和y的内容
③双引号
双引号的作用与单引号的功能基本一样,可用来定义变量,所不同的是在双引号内可进行变量替换和命令替换。示例如下:
$ myname=`whoami` # 通过命令替换定义变量myname
# #定义变量myself。注意使用了变量替换和命令替换
$ myself="I am a student, my uname is $myname and my work dir is `pwd`."
# #定义变量myself1。注意使用了继续行和转义字符
$ myself1="I am a student my uname is \"$myname\" and my work dir is \"`pwd`\""
$ echo $myself # 显示变量myself的值
$ echo $myself1 # 显示变量myself1的值
(9)什么是参数替换?什么是命令替换?试举例说明如何使用它们。
解:
参数替换主要是指命令行参数中的变量和命令等各种替换。设当前目录下有命令DispAllVar用于显示它自己的所有的命令行参数,变量x的值为“test parm”,则命令
# ./DispAllVar I am `whoami` the value of x is $x
的输出为:
I am root the value of x is test parm
甚至,还可以定义一个变量
D=DispAllVar
之后,程序的执行可简写为
# ./$D I am `whoami` the value of x is $x
在这里,程序名也可以是变量。
说明:程序DispAllVar可以由如下命令产生:
# echo 'echo $*' > DispAllVar; chmod +x DispAllVar
所谓命令替换,是指反单引号或$()内的内容将作为命令首先被执行,然后将命令的标准输出替换反单引号及其括号位置的信息。
$ x=`pwd` #通过命令pwd替换定义变量x。pwd的功能是显示用户的工作目录
$ y=`whoami` #通过命令whoami替换定义变量y。whoami的功能是显示用户名
$ MyVar=$(whoami) #通过命令whoami替换定义变量MyVar
# ./$D I am `whoami` the value of x is $x
(10)shell的种类有哪些?
解:
UNIX/Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh或bsh)、Bourne again shell(bash),C shell(csh)、tc shell(tcsh)、Korn shell(ksh)和Z shell(zsh)等
(11)什么是别名?如何定义和取消别名?
解:
别名可描述为是定义的用来替换命令名的字符串(的值)。可分别用alias和unalias定义和取消别名。示例如下:
$ alias li='ls -l -i ' #定义别名li,其功能为ls -l -i
$ alias l='ls -l ' #定义别名l,其功能为ls -l
$ unalias li #取消别名li
$ unalias -a #取消所有别名
(12)什么是主机名?如何进行主机名规划,如何设置主机?
解:
主机名就是计算机的名字(计算机名),网络上就是根据主机名来识别主机。主机名有本地主机名和网络主机名之分。主机名本地主机名与网络主机名可以一致,也可以不一致。本地主机名可以自己设定,网络主机名必须统筹规划,一经定下,网络主机就不能随意改变,否则其它主机可能就找不到你了。比如河南需要学院的网络主机名具有如下形式:
门户网站:www.hncj.edu.cn 图书馆:lib.hncj.edu.cn 移动门户:app.hncj.edu.cn
修改或设置主机名可以使用命令hostname和hostnamectl。也可以直接修改/etc/hostname,然后重启系统。
比如,若将主机名设置为app.hncj.edu.cn,可分别使用命令:
# hostname app.hncj.edu.cn #临时设置:重启后丢失
# hostnamectl set-hostname app.hncj.edu.cn #永久设置:重启后仍有效
2.选择题
(1)D;(2)C;(3)A;(4)B;(5)C;(6)A;(7)B;(8)B;(9)D;(10)C
3.综合题
(1)什么是时区?中国的标准时区是什么?如何正确设置系统时区?
解:
时区(Time zone)实际上是一个地理的概念,与一个国家或地区所处的经度有关。全球的时区划分包括24个时区,规定英国(格林尼治天文台旧址)为中时区(零时区GMT 00:00)。中国位于东8区,中国标准时区为CST,在设置时区使用的是Asia/Shanghai。可以使用命令
# timedatectl list-timezones
查询所有的时区。
时区是日期和时间的基础,必须设置正确,否则系统时间与手表的时间就可能不一致。系统的时区控制文件为/etc/localtime,它是/usr/share/zoninfo/内某个文件的复制品或链接,在中国,这个文件是/usr/share/zoninfo/Asia/Shanghai。
因此,设置中国时区的正确方法之一是执行命令
# timedatectl set-timezone Asia/Shanghai # 将时区设为Asia/Shanghai
当然,也可使用以下命令设置时区
# ln -f -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
日期和时间的设置与显示受时区环境变量TZ的影响,在Linux下,格林威治标准时区是TZ=UTC(Universal time),中国的标准时区是TZ=CST(Chinese Standard Time)。
(2)试述在Linux系统中如何进行日期和时间管理。在图形界面下可以实现时间和日期管理吗?若能,如何做?
解:
Unix/Linux提供有date、hwclock、timedatectl等命令用于日期和时间的管理,除此之外,桌面或工作站系统还可在图形界面下对日期和时间进行管理。在第13章还要介绍通过NTP实现系统时间的自动校正。
关于时区的设置可参见(1)。
在Linux所在的硬件系统中,同时使用着系统时间和硬件两个时间,且两者可以不一致。
date主要用来管理系统时间;timedatectl也是用来控制系统时间的,且可以设置时区;hwclock可访问硬件时间,且可将系统时间同步到硬件时间或将硬件时间设为系统时间。时间和时区管理,还可在图形界面下进行。
系统的时区、日期和时间,必须设置正确,对于与时间相关的业务系统更是如此,系统时间不能随意改变。为了保持系统时间“经常”正确,可能使用NTP协议校正时间(参见第13章)。
在图形界面下可以实现时间和日期管理,方法是:
“Settings(设置中心)”→“Details(细节)”→“Date & Time(日期和时间)”
(3)在UNIX/Linux系统中有些操作是有副作用的,比方cp,mv和rm等,应该如何避免?
解:
可以采用删除或覆盖前提醒(-i或--interactive选项),或在删除或覆盖前备份(cp和mv的-b或--backup选项)的办法。为避免命令与选项输入错误或麻烦,可以使用别名。比如
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
(4)文件的属性和类型有哪些?如何确定某文件的类型?如何获得文件的属性?
解:
可以通过命令stat获得文件的大部分属性(包括文件的类型),可以通过命令file确定文件的类型。当然,命令ls -li也可以得到文件的属性。
可以参考命令stat /usr/bin/wc的输出
File: '/usr/bin/wc'
Size: 48832 Blocks: 96 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 1522 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:bin_t:s0
Access: 2017-03-07 22:32:33.811018027 +0800
Modify: 2016-11-01 01:21:49.000000000 +0800
Change: 2017-03-04 11:57:02.192098765 +0800
它几乎包括了Linux文件的属性全部。其中的“File”:项为文件名;“Size”:为文件大小;“Blocks”:为文件所占512字节的块数;“IO Block:”为文件系统IO块大小;“regular file”表明这是一个普通文件(“block special file”:块设备文件;“character special file”:字符设备文件;“fifo”:命令管道设备文件;“directory”:目录文件);“Device”文件所在设备ID;“Inode”:I节点号;“Links”为硬链接数;“Access”为文件访问权限;“Uid”为用户标识;“Gid”为组标识;“Context”:为SELinux上下文;“Access”访问时间;“Modify”:修改时间;“Change”:属性修改时间。当然,也可参考ls -li的输出。
虽然stat和ls -li的输出中都包含了文件的类型,但file为确定文件的类型的专用工具。
(5)试简述Linux系统的信号通讯机制。如何查询可用信号?如何实现信号通讯?如何捕获信号?
解:
进程之间可以通过信号进行通信,以实现进程间的一定程序的控制,用于进程间信号通信的命令是kill和trap。
查询系统可用信号,可以使用命令kill -l,trap -l或fuser -l。
在Unix/Linux的众多信号中,有的是硬件产生的,有的是软件产生的,还有一些是人工可以制造的。这些人工可以制造的信号简称为人工信号,它们是SIGHUP、SIGINT、SIGQUIT、SIGKILL、SIGTERM、SIGUSR1和SIGUSR2等,或简写为HUP、INT、QUIT、KILL、TERM、USR1和USR2等。
若要实现进行间的信号通讯,可以先为使用trap为信号定义一个处理方法。对一个信号的处理方法有三:1是系统默认(一般是终止当前进程的执行);2是忽略;3是定义一个新动作。
定义对信号的处理办法,也叫捕获信号,捕获命令为trap。trap捕获信号的示例如下:
# trap 'echo -e "You pressed ^C!\n"' 2 # 捕获2,并指定处理方法
# trap -p 2 # 显示INT信号动作
## 按一下组合键^C(相当于收到2号信号INT),观察一下效果
# trap # 列当前信号动作
# trap '' 2 3 15 USR1 # 捕获并忽略它们。''为两个单引号,中间无内容
## 再按组合键^C,观察一下效果
命令
# ps | awk '/bash/{ print $1 }'
的输出为当前bash的PID,比如23456。可在本终端或其它终端(建议其它终端)上,使用
# kill -2 23456 # 向23456发信号2
# kill -USR1 23456 # 向23456发信号USR1
观察情况,此时,可能是没有反应(因为信号被忽略)。
在执行以下命令,恢复系统默认后
# trap 2 3 15 USR1 # 恢复信号2,3,15的之前动作
再向23456发送信号2或USR1,以观察具体反应。
总结
本文全面梳理了Linux系统操作与管理的核心知识体系,涵盖从基础Shell概念到系统服务管理的全流程。建议读者通过虚拟机或容器环境实践各章节命令,逐步构建完整的Linux系统管理能力。
相关文章:
深入理解linux操作系统---第3讲 基本操作与基本管理
3.1 shell基本功能与基本概念 3.1.1 shell基本功能 Shell是Linux系统的核心交互工具,主要功能包括: 程序启动与进程管理:通过命令行将程序名传递给内核执行,支持进程的后台运行与监控(如ps、kill命令)文…...
Go:函数
函数 函数声明 func name(parameter-list) (result-list) { body }函数声明包含函数名、形参列表、可选的返回列表以及函数体 。形参列表指定由调用者传递的变量参数名和类型;返回列表指定函数返回值类型 ,无返回值或返回未命名值时,返回列…...
swagger 注释说明
一、接口注释核心字段 在 Go 的路由处理函数(Handler)上方添加注释,支持以下常用注解: 注解名称用途说明示例格式Summary接口简要描述Summary 创建用户Description接口详细说明Description 通过用户名和邮箱创建新用户Tags接口分…...
【C++】C与C++、C++内存空间、堆与栈
C嘎嘎嘎嘎嘎~ C与C的区别与联系 C内存空间 int global_var; // 未初始化全局变量,BSS段 const char* str "Hello"; // 字符串常量text段 in数据段void func() {static int static_var; // 未初始化的静态变量,数据段int local_var; …...
从零训练LLM-1.训练BPE
文章目录 BPE 简介BPE (Byte-Pair Encoding) 算法训练流程BPE 编码流程BPE 评估代码 参考 本文基于 HF -tokenizer 训练,更便捷 BPE 简介 分词器将单词从自然语言通过“词典”映射到0, 1, 36这样的数字,可以理解为数字就代表了单词在“词典”中的页码。…...
shield.io网站|markdown中适用的“徽标”
动态的我还没看是怎么弄,但是应该和静态的差不多,因此本文仅讨论静态徽标 静态徽标效果 创建方法 网址:Shields.io | Shields.io 进入之后点击“Badges”标签进入网页创建徽标的页面,根据文档中对每个属性的介绍在右侧将自己预…...
Vue 3 自定义指令
Vue 3 是一个非常强大的前端框架,它不仅提供了简单易用的 API,还支持多种高级功能,以便开发者根据需要扩展和优化应用。在 Vue 中,自定义指令是一种非常灵活的功能,它允许我们为 DOM 元素添加特定的行为,扩…...
25某团校招后端开发一面
一、进程通信和线程通信方式 进程通信方式 管道(Pipe) 半双工通信,数据单向流动,仅用于有亲缘关系的进程(如父子进程)。通过内核缓冲区实现数据传输,如父进程写、子进程读。命名管道ÿ…...
音视频学习(三十四):H264中的宏块
什么是宏块? 在 H.264 中,宏块是编码图像时最小的处理单位。它的核心作用包括: 帧内预测(Intra Prediction)帧间预测(Inter Prediction)变换、量化、熵编码等 标准定义: 一个宏块…...
Pandas 中透视表(`pivot_table`)和交叉表(`crosstab`)的区别
Pandas 中透视表(pivot_table)和交叉表(crosstab)的区别 核心区别 透视表 (pivot_table) 用于对数据进行 聚合计算(如求和、均值、计数等)。支持多维度分组(行、列、甚至多层索引)。…...
Restful风格接口开发
目录 Restful Apifox 介绍 端口号8080怎么来的? 为什么要使用Apifox? Restful 如果请求方式是Post,那我就知道了要执行新增操作,要新增一个用户 如果请求方式是Put,那就代表我要修改用户 具体要对这些资源进行什么样的操…...
20250414| AI:RAG多路召回和融合重排序技术
好的!以下是对RAG(检索增强生成)中多路召回和融合重排序技术的详细解释,结合解释学习的视角,帮助你更好地理解和学习。这些技术是RAG系统的核心组成部分,决定了检索阶段的效果和最终生成答案的质量。我会尽…...
基于时间序列分解与XGBoost的交通通行时间预测方法解析
一、问题背景与数据概览 在城市交通管理系统中,准确预测道路通行时间对于智能交通调度和路径规划具有重要意义。本文基于真实道路传感器数据,构建了一个结合时间序列分解与机器学习模型的预测框架。数据源包含三个核心部分: 道路通行数据(new_gy_contest_traveltime_train…...
论文精度:HeightFormer:基于Transformer的体素高度预测在路边3D目标检测中的应用
论文地址:https://arxiv.org/pdf/2503.10777 1. 背景与问题定义 1.1 路边视觉3D检测的重要性 在自动驾驶领域,车辆端的视觉感知系统面临视角局限性(如遮挡、短距离感知)和安全挑战。相比之下,路边摄像头通过高位安装,可覆盖更广的感知范围(如交叉路口、高速公路)…...
华为手机清理大数据的方法
清理手机最大的问题是,手动和自动清理了多次,花费了很长时间,但是只腾挪出来了一点点空间,还是有很大空间无法使用,这篇文章就告诉你怎样做,以花瓣剪辑为例,如下: 删除数据ÿ…...
tcp特点+TCP的状态转换图+time_wait详解
tcp特点TCP的状态转换图time wait详解 目录 一、tcp特点解释 1.1 面向连接 1.1.1 连接建立——三次握手 1.1.2 连接释放——四次挥手 1.2 可靠的 1.2.1 应答确认 1.2.2 超时重传 1.2.3 乱序重排 1.2.4 去重 1.2.5 滑动窗口进行流量控制 1.3 流失服务(字节…...
flutter 桌面应用之窗口自定义
在开发桌面软件的时候我们经常需要配置软件的窗口的大小以及位置 我们有两个框架选择:window_manager和bitsdojo_window 对比bitsdojo_window 特性bitsdojo_windowwindow_manager自定义标题栏✅ 支持❌ 不支持控制窗口行为(大小/位置)✅(基本…...
【C++】NAN相关研究
先说结论:NAN对比一切都是false INF 对INF 是true 正无穷与正无穷比较相等,正无穷与负无穷比较不相等 window linux环境下基本相同, debug release基本相同 NAN -NAN INF -INF 不做论述 // TestNan.cpp : 此文件包含 "main" 函数。…...
windows下Git安装及其IDEA配置
1.下载Git安装包 阿里镜像链接(建议从这里下载,速度很快) git-scm.com(官方网站,提供了各个平台(Windows、Mac、Linux)的安装程序) 选择版本号后,在选择此版本的不同包…...
迷你世界脚本脚本常见问题
脚本常见问题 彼得兔 更新时间: 2024-05-22 17:54:44 在查阅开发者学院中的脚本API时,若有任何问题或建议,欢迎通过问卷进行反馈!【点我填写问卷】 1.Block中的data在什么地方使用 data使用有具体需求,此处不建议开发者使用。开发者尽可能使…...
2025蓝桥杯C++ A组省赛 题解
昨天打完蓝桥杯本来想写个 p y t h o n python python A A A 组的题解,结果被队友截胡了。今天上课把 C A CA CA 组的题看了,感觉挺简单的,所以来水一篇题解。 这场 B B B 是一个爆搜, C C C 利用取余的性质比较好写&#…...
链接世界:计算机网络的核心与前沿
计算机网络引言 在数字化时代,计算机网络已经成为我们日常生活和工作中不可或缺的基础设施。从简单的局域网(LAN)到全球互联网,计算机网络将数以亿计的设备连接在一起,推动了信息交换、资源共享以及全球化的进程。 什…...
MySQL 常见存储引擎全解析:InnoDB、MyISAM、Memory 等对比与实战
一、什么是存储引擎? 存储引擎(Storage Engine)是 MySQL 中负责数据存储与管理的底层模块。不同的存储引擎负责处理表的读写、索引维护、事务支持、崩溃恢复等机制。 在创建表时可以指定使用的存储引擎: CREATE TABLE user (id…...
21天Python计划:零障碍学语法(更新完毕)
目录 序号标题链接day1Python下载和开发工具介绍https://blog.csdn.net/XiaoRungen/article/details/146583769?spm1001.2014.3001.5501day2数据类型、字符编码、文件处理https://blog.csdn.net/XiaoRungen/article/details/146603325?spm1011.2415.3001.5331day3基础语法与…...
Python中NumPy的统计运算
在数据分析和科学计算领域,Python凭借其丰富的库生态系统成为首选工具之一,而NumPy作为Python数值计算的核心库,凭借其高效的数组操作和强大的统计运算功能,广泛应用于机器学习、信号处理、统计分析等场景。本文将系统介绍NumPy在…...
SQL 解析 with as
sql的运行顺序 <select id"getTrendList" parameterType"java.util.HashMap" resultType"java.util.Map"><![CDATA[WITH-- 生成连续年份列表(当前年前8年到前1年)year_range AS (SELECT EXTRACT(YEAR FROM SYSD…...
07-算法打卡-链表-移除链表-leetcode(203)-第七天
1 题目地址 203. 移除链表元素 - 力扣(LeetCode)203. 移除链表元素 - 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1:[https://assets.leetc…...
抓包神器,自研EtherCAT抓包工具
大家好,博主自研了一款以太网抓包神器,可以用于EtherCAT抓包。 把抓包工具接入以太网总线中,就能正常使用了。 上位机软件采用wireshark。 开启以下协议 抓包截图如下 时间戳的精度为5ns。...
五、adb常用命令
SDK路径下的 \Android\Sdk\platform-tools\adb.exe adb devices 查看连接的设备 adb shell getprop ro.build.version.release 查看系统版本 adb shell dumpsys window windows | findstr mFocusedApp 获取正在运行的app启动包名 结果为空,我不知道是不是Android…...
Java第四节:idea在debug模式夏改变变量的值
作者往期文章 Java第一节:debug如何调试程序(附带源代码)-CSDN博客 Java第二节:debug如何调试栈帧链(附带源代码)-CSDN博客 Java第三节:新手如何用idea创建java项目-CSDN博客 步骤一 在需要修改…...
Java学习手册:Java反射与注解
Java反射(Reflection)和注解(Annotation)是Java语言中两个强大的特性,它们在框架开发和复杂应用中扮演着重要角色。反射允许程序在运行时检查和操作类、对象、接口、字段和方法,而注解则提供了一种元数据形…...
21 天 Python 计划:MySQL事务四大隔离级别深度剖析
文章目录 一、事务1.1 什么是事务?1.2 事务的四大特性 二、事务并发存在的问题2.1 脏读(dirty read)2.2 不可重复读(unrepeatable read)2.3 幻读 三、事务的四大隔离级别实践3.1 读未提交(Read Uncommitted…...
IO多路复用沉浸式体验
这篇文章主要讲解一下IO多路复用常见问题,包含常见面试题,对你有帮助的话可以留个赞和关注嘛?谢谢大家支持! 1.epoll 相比于 select/poll 的优点有哪些? 高效的数据结构:epoll使用红黑树管理fd࿰…...
音视频学习(三十三):GOP详解
GOP 概念 GOP(图像组)是视频编码中一组帧的集合(按相关性分组),它从一个关键帧(I帧)开始,后面跟随若干个参考帧(P帧)和预测帧(B帧)。其结构决定了视频帧的压…...
部署YUM仓库
目录 一.YUM 1.1yum概述 1.2yum的实现 1.3yum服务的组成 1.4yum服务实现过程 1.5yum配置文件位置 二.yum相关命令 三.搭建yum仓库的方式 3.1使用HTTP方式搭建yum仓库 准备工作(服务端和客户端都需要做) 服务端 客户端 3.2使用ftp方式搭建yu…...
中位数学习(低估它了)
-----------------------------------------------------------------中位数------------------------------------------------------- 中位数有一个很好的性质:假设有一批数据,你想找一个数,使得这批数据与它差的绝对值的和最小࿰…...
音视频转换器 AV 接口静电保护方案
方案简介 音视频转换器是将音视频(AV)信号转换成其他格式或信号类型的设备或软件。 它能够实现大多数视频、音频以及图像格式之间的转换,包括但不限于 RMVB、AVI、 MP4、MOV 等常见格式,同时也支持将不同采样率、位深度、声道数…...
蓝桥杯嵌入式第十二届省赛程序设计1(超简单版)
此程序只需要会C语言数组,结构体(struct),for , if , switch(也可以用if)就能够实现。 引脚设置: 引脚配置(参照笔记): 代码部分: /* USER CODE END Header */ /* Includes ------------------…...
CSS 链接样式学习笔记
在网页设计中,链接(<a> 标签)是不可或缺的元素,通过 CSS 可以对链接进行丰富的样式设置,从而提升用户体验和页面美观度。以下是关于 CSS 链接样式的详细学习笔记。 一、链接的四种状态 链接有四种不同的状态&a…...
有ts文件却无法ts出来解决办法
一开始报错是报这个,但是我其实完全看不懂为什么 原因是这个 打开某个test就行了...
javaSE.Lambda表达式
如果一个接口中有且只有一个待实现的抽象方法,那么我们可以将匿名内部类简写为Lambda表达式。 简写规则 标准格式: (【参数类型 参数名称,】...) -> {代码语句, 包括返回值} 只有一行花括号{}可以省略。…...
Web渗透之文件包含漏洞
文件包含漏洞原理 1、源代码 <?php$filename $_GET[filename]; include $filename; //或include_once,require,require_onceecho "欢迎来到PHP的世界.";?> 2、利用条件 php.ini中alllow_url_fopenOn(默认开启)和allow_url_includeOff(默认关闭)要开启…...
费马引理和罗尔定理
cheer 向……欢呼,使高兴,欢呼,欢呼,愉快 前言区间平均值费马引理罗尔三步万能构造原函数的方法什么时候用罗尔定理计划拉格朗日需要记忆的不等式柯西中值定理泰勒高阶导数判断极值最后 前言 继续学习。今天争取把讲义和作业题都…...
【合新通信】浸没式液冷中低成本冷媒开发的最新进展
浸没式液冷光模块是一种结合高效散热技术与光通信的新型解决方案,主要用于数据中心、超算中心等高密度计算场景。其核心特点是通过将光模块直接浸入绝缘冷却液中(如矿物油、氟化液等),实现高效散热和节能降耗。低成本冷却液的研发…...
【开发记录】服务外包大赛记录
参加服务外包大赛的A07赛道中,最近因为频繁的DEBUG,心态爆炸 记录错误 以防止再次出现错误浪费时间。。。 2025.4.13 项目在上传图片之后 会自动刷新 没有等待后端返回 Network中的fetch /upload显示canceled. 然而这是使用了VS的live Server插件才这样&…...
智能指针之设计模式1
本文探讨一下智能指针和GOF设计模式的关系,如果按照设计模式的背后思想来分析,可以发现围绕智能指针的设计和实现有设计模式的一些思想体现。当然,它们也不是严格意义上面向对象的设计模式,毕竟它们没有那么分明的类层次体系&…...
Spring Boot 中应用的设计模式
Spring Boot 中应用的设计模式详解 Spring Boot 作为 Spring 框架的扩展,广泛使用了多种经典设计模式。以下是主要设计模式及其在 Spring Boot 中的具体应用: 一、创建型模式 1. 工厂模式 (Factory Pattern) 应用场景: BeanFactory 和 Ap…...
23种GoF设计模式
GoF(Gang of Four)设计模式是由四位计算机科学家 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著的书籍《Design Patterns: Elements of Reusable Object-Oriented Software》中提出的设计模式 目录 一、创建型模式(Cre…...
Python实例题:Python实现中文错别字高亮系统
目录 Python实例题 题目 安装依赖库 代码实现 代码解释 运行思路 注意事项 Python实例题 题目 Python实现中文错别字高亮系统 安装依赖库 在开始之前,你需要安装 pycorrector 和 rich 库。可以使用以下命令进行安装: pip install pycorrecto…...
【第三十一周】ViT 论文阅读笔记
ViT 摘要Abstract文章信息引言方法Patch EmbeddingPatch Position EmbeddingTransformer EncoderMLP Head整体架构CNN的归纳偏置 代码实现实验结果总结 摘要 本篇博客介绍了Vision Transformer(ViT),这是一种突破性的图像分类模型ÿ…...