linux
linux核心概念知识
开源软件:没有商业化软件版权约束,源代码开发,可无约束自由传播,并不意味着免费
FSF
自由软件基金会,1984年创办,主要项目包含了GNU项目
为什么选择linux
- 开源
- 免费
- 稳定
linux操作系统的组成
- Linux内核
- GNU项目软件,如bash、gcc等
- 各种外围程序
linux内核版本
GNU项目
GNU(gnu is not unix)
GPL
- GNU 自由软件的通用许可协议
- 允许用户任意复制、传递、修改及再发布
- 基于自由软件修改再次发布的软件,仍需遵守GPL
LGPL
- LGPL相对于GPL较为宽松,允许不公开全部源代码
- 为基于linux平台开发商业软件提供了更多空间
开源软件
- Firefox 网页浏览器
- openoffice 办公套件
- Apache 网站服务器软件
主流的linux分支
linux发行版本构成
- 基于linux内核的类unix操作系统
- linux内核和各种自由软件
发行版的名称、版本有发行厂商决定
- Redhat
- Debian
- Ubuntu
- …
centos 7 :2024年6月30 停止更新
centos 8 :2022年1月13 停止更新
centos 的替代品:Ubuntu 、rocky linux等
引导过程
文件系统类型
linux发行版本
- XFS,日志文件构成
- swap,交换文件系统/虚拟内存
linux其他文件类型
- EXT3、EXT4
- FAT16、FAT32、NTFS
- XFS、JFS
linux系统
运行级别对应的
运行级别 | Systemd的target | 说明 |
---|---|---|
0 | target | 关机状态,使用该级别时将会关闭主机 |
1 | rescue.target | 单用户模式,不需要密码验证即可登录系统,多用于系统维护 |
2 | **multi-**user.target | 用户定义**/域特定运行级别。默认等同于3** |
3 | **multi-**user.target | 字符界面的完整多用户模式,大多数服务器主机运行在此级别 |
4 | **multi-**user.target | 用户定义**/域特定运行级别。默认等同于****3** |
5 | graphical.target | 图形界面的多用户模式,提供了图形桌面操作环境 |
6 | reboot.target | 重新启动,使用该级别时将会重启主机 |
systemd单元类型
单元类型 | 扩展名 | 说明 |
---|---|---|
Service | .service | 描述一个系统服务 |
Socket | .socket | 描述一个进程间通信的套接字 |
Device | .device | 描述一个内核识别的设备文件 |
Mount | .mount | 描述一个文件系统的挂载点 |
Automount | .automount | 描述一个文件系统的自动挂载点 |
Swap | .swap | 描述一个内存交换设备或交换文件 |
Path | .path | 描述一个文件系统中文件或目录 |
Timer | .timer | 描述一个定时器(用于实现类似cron的调度任务) |
Snapshot | .snapshot | 用于保存一个systemd的状态 |
Scope | .scope | 使用systemd的总线接口以编程的方式创建外部进程 |
Slice | .slice | 描述居于Cgroup的一组通过层次组织的管理系统进程 |
Target | .target | 描述一组systemd的单元 |
目录结构说明
- / :linux文件系统的入口,最高级目录
- /bin:存放二进制可执行文件,普通用户可执行的命令
- /boot:内核和加载内核所需的文件
- /dev:设备文件存储目录,如硬盘、U盘等
- /etc:所有的系统配置文件,包括新安装的程序文件
- /home:普通用户目录,在此创建相应用户文件目录
- /home/zhangsan :普通用户张三的家目录
- /var:经常变动的数据,如日志、邮件等
- /usr:软件安装目录,程序执行目录
- /sbin:存放二进制可执行文件,基本的系统维护命令,只能由超级用户使用
- /root:超级管理员”root”的家目录,类似于home下的目录
系统服务控制
系统服务控制
systemctl 控制类型服务名称
控制类型
- start 启动
- stop 停止
- restart 重启
- reload 重新加载
- status 查看服务状态
linux系统运行级别
查看运行级别
- runlevel
- systemctl
临时切换运行级别
- init 命令
- systemctl工具
优化启动过程
系统服务管理工具
ntsysv工具
-
提供一个交互式、可视化窗口
-
可以在字符终端运行
-
便于集中管理多个服务
systemctl工具
- 不提供交互式、可视化窗口
- 管理单个服务效率更高
ntsysv系统服务管理工具
ntsysv
系统服务的启动和控制
查看 系统服务的启动状态
systemctl is-enabled 服务名称
systemctl list-unit-files 查看服务列表
yum -y install bash-completion :下载tab补全命令包
linux常用命令
linux命令概述
linux命令行分类
shell
- linux系统运行的一种特殊程序
- 在用户和内核之间充当“翻译官”
- 用户登录linux系统时,自动加载一个shell程序
- bash是centos系统中默认使用的shell程序
- 文件位于/bin/bash
linux命令的格式
通用的命令行使用格式
命令字 【选项】 【参数】
命令字
- 是整条命令中最关键的一部分
- 唯一确定一条命令
选项
短格式选项:使用“_”符号引导
多个单字符可以组合在一起使用
长格式选项:使用“_ _”符号引导
参数 rm
- 命令字的处理对象
- 可以是文件名、目录(路径)名或用户名等内容
- 个数可以是零到多个
编辑linux命令行的辅助操作
-
Tab键补全
-
\ 一行换成多行
-
Ctrl+u 快捷键 剪切或者删除光标处到行首的字符
-
Ctrl+k 快捷键 剪切或者删除光标处到行尾的字符
-
Ctrl+y 粘贴Ctrl+u、Ctrl+k、Ctrl+w删除的文本
-
Ctrl+l 快捷键 :清屏
-
Ctrl+c 快捷键: 退出执行
-
Ctrl+ a :到达行首
-
Ctrl+e:到达行尾
-
Ctrl+d 重复执行命令快捷键
-
Ctrl+r 进入搜索命令行使用过得历史命令记录模式
-
Ctrl+s (镇屏)锁定终端,使之无法输入任何命令
-
Ctrl+q 解锁,解除Ctrl+s的锁定状态
-
Ctrl+z 暂停执行在终端运行的任务 \
-
!! 执行上一条命令
-
!+字母 !c 执行最近以c开头的命令
-
!+字母:p 仅打印最近以字母开头的命令,但不执行
-
! num 执行历史命令列表的第num (数字)条命令
-
history 查看历史执行 命令记录
-
!$ 获取上一条命令的最后一个参数 (空格分割)
-
Xshell快捷键
Shift+insert 粘贴
Ctrl+insert 复制
获得命令帮助的方法
方法
- 使用help命令/查看内部命令
- 使用 --help 选项/查看外部命令
- 使用man手册
type 命令(查看命令属于内部还是外部命令)
目录和文件的基本操作
查看切换目录
绝对路径:更加准确
相对路径:更加方便、高效
pwd: 查看当前目录
cd : 切换工作路径
切换工作目录
相对路径的表现形式
列表显示目录内容–ls
ls 选项 文件或者目录
常用选项
显示目录中内容,包括子目录和文件相关属性信息
-l:显示详细信息
-a:显示子目录和文件,包括".“开头的隐藏目录和隐藏文件
-A:不显示包括”."开头的隐藏目录和隐藏文件
-d:显示该文件或目录本身属性。
-h:以单位显示文件或目录大小
-R:以递归的方式显示目录la以及子目录的所有内容
–color:为查询结果添加颜色进行显示)
alias
通过别名机制简化常用的、比较长的命令
如:
alias gohome=“cd /home/zhangsan”
当在命令行中执行:"gohome"命令时进入用户zhangsan的家目录。
取消别名定义:
unalias gohome
统计目录及文件空间占用情况–du
统计指定目录(或文件)所占用磁盘空间的大小
-a:统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h:显示出目录或文件的大小(K、M),默认的大小单位为字节(KB)
-s:只统计每个参数所占用空间总的大小,而不是统计每个子目录、文件的大小
创建目录和文件
创建目录
mkdir :创建目录 -p 递归创建
mkdir /root/a/{123,124}: 在a下创建123,124两个文件夹
创建文件
更新文件时间
touch 文件名
查询: ls -l 会发现文件创建时间已经更新为当前时间
touch: 创建文件
创建链接文件 ln
为文件或者目录建立链接文件
文件类型
ln -s 软链接
ln 硬链接
复制、删除、移动目录和文件
复制文件或者目录cp
格式:
cp 选项 源文件或目录 目标文件或者目录
常用选项
-i:覆盖目标同名文件或目录时提醒用户确认
-f:若文件存在 强制覆盖不提醒
-p:复制时保持源文件的权限、属主及时间标记等属性不变
-r:表示递归复制所有文件及子目录
删除文件或者目录rm
格式
rm [选项] 要删除的文件或目录…
常用选项
-f、-i、-r
rm -rf 命令强制删除包括目录 不提醒
移动目录或者文件mv
将指定的文件或目录转移位置
mv [选项] … 源文件或目录… 目标文件或目录
如果目标位置与源位置相同,则相当于执行重命名操作
mv /root/abc /home
mv abc 123
查找目录和文件-which
格式
which 命令/文件
查找目录和文件-find
采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找
find [查找范围] [查找条件表达式]
find / -name ifcfg-ens33 //在/下查找名为"ifcfg-ens33"的文件
find / -size “+50M” //在/下查找单个大于50M的文件
find / -type d -a -name aa* //查找/下为名字为aa开头的目录
各表达式之间使用逻辑运算符
“-a”表示 而且(and)
“-o”表示 或者(or)
find /boot -size +1024k -a -name “vmlinuz*”
find /boot -size +1024k -o -name “vmlinuz*”
目录和文件管理
查看和检索文件
查看文件内容
cat
cat 命令:显示文件内容
cat 选项 文件名
more
more :显示文件内容 (行数太多会分页)
more 选项 文件名
enter向下逐行滚动
空格翻页滚动
q退出
less
less :分页查看文件内容 比more扩展性更强
less 选项 文件名
- Page Up 向上翻页,Page Down 向下翻页
- 按“/”键查找内容,“n”下一个内容,“N”上一个内容 例如/root
- 其他功能与 more 命令基本类似
head 、tail
head:查看文件内容默认前十行内容
head -n 文件名
-n 行数 指定行数
tail: 查看文件内容结尾默认后十行
tail -n 文件名
tail -f 文件名 (监听)
统计文件内容
wc:用于统计文件中的单词数量等信息
wc 选项 目标文件
常用选项
-l 统计行数
-w 统计单词数
-c 统计字节数
yum provides /* netstat :查看netstat属于那个命令程序
检索和过滤文件内容 grep 命令
grep: 在文件中查找并显示包含指定字符串的行
grep 选项 查找条件 目标文件
常用选项
-i 查找时忽略大小写
-v 反选 输出与查找条件不符合的行
-A 1 表示查看包含指定字符串及后一行
-B 1 表示查看包含指定字符串及前一行
-C 1 表示查看包含指定字符串及前后一行
-c 统计指定字符串在文件中出现的行数
查找条件设置
要查找的字符串以双引号括起来
“^bash” 表示查找以bash开头的
“bash$” 表示查找以bash结尾的
“^$” 表示空行
压缩/解压缩
压缩命令
gzip、bzip2:制作压缩文件、解开压缩文件
gzip -9 文件名
bzip2 -9 文件名
gzip -d 文件名
bzip2 -d 文件名
归档命令
tar : 制作归档命令,释放归档文件
tar 选项 归档文件名 源文件或者目录
tar 选项 归档文件名 【-c 目标目录】
常用选项
-c:创建 .tar 格式的包文件
-x:解开.tar格式的包文件
-v:输出详细信息
-f:表示使用归档文件
-p:打包时保留原始文件及目录的权限
-t:在不解压包的情况下看包内内容
-C:解包时指定释放的目标文件夹
-z:调用gzip程序进行压缩或解压
-j:调用bzip2程序进行压缩或解压
tar zxvf : 解压
tar zcvf: 压缩
文本编辑器 vi
文本编辑器
作用
创建或修改文本文件
维护linux系统中的各种配置文件
linux常用的文本编辑器
vi: 类unix操作系统的默认文本编辑器
vim: vim是vi的增强版
vi编辑器的工作模式
三种工作模式
命令模式、输入模式、末行模式
不同模式之间的切换
命令行模式的基本操作
末行模式
安装与管理应用程序
linux应用程序
linux应用程序基础
应用程序与系统命令的关系
文件位置
系统命令:一般在/bin或/sbin 或为shell内部指令
应用程序:通常在/usr/bin和/usr/sbin中
用途
系统命令:完成对系统的基本管理工作,例如ip配置工具
应用程序:完成相对独立的其他辅助任务,例如网页浏览器
使用环境
系统命令:一般只在字符操作界面
应用程序:根据实际需要,有些程序可在图形界面中运行
运行格式
系统命令:一般包括命令字、命令选项和命令参数
应用程序:通常没有固定的执行格式
典型的应用程序的目录结构
使用RPM包管理工具
软件包封装类型
常见的软件包封装类型:rpm和源代码软件包
RPM包管理工具
RPM
由Redhat公司提出,被众多linux发行版采用
建立统一的数据库文件
详细记录软件包安装,卸载等变化信息
自动分析软件包依赖关系
RPM软件包
软件素材: http://www.rpm.org
命令格式:
RPM命令
查询
查询已安装的rpm软件信息
rpm -q【选项】 软件名
-qa 查找所有安装的rpm包
例如 查找httpd rpm -qa | grep httpd
-qi:查询详细信息 例如 rpm -qi httpd
-ql列出当前软件安装的文件:
-qf 查询文件或目录属于哪个RPM软件
-qc仅显示指定软件包安装的配置文件
-qd仅显示指定软件包安装的文档文件
查询未安装的RPM软件包
rpm - qp[子选项] RPM包文件
常用选项:
-qpi 通过.rpm包文件查看该软件的详细信息
-qpl 查看.rpm安装包内所包含的目录、文件列表
-qpc 查看.rpm安装包内包含的配置文件列表
-qpd 查看.rpm安装包内包含的文档文件列表
安装
rpm 选项 rpm软件包名
常用组合 rpm -ivh rpm软件包名
常用选项 -i -v -h -u -f
-i:安装一个新的 rpm 软件包
-h:以“#”号显示安装的进度
-v:显示安装过程中的详细信息
-U:升级某个 rpm 软件,若原本未装,则进行安装
-F:升级某个 rpm 软件,若原本未装,则放弃安装
–force:强制安装所指定的rpm软件包
–nodeps:安装、升级或卸载软件时,忽略依赖关系
卸载
rpm -e 软件名
辅助选项 -force -nodeps
yum remove -y 软件包名 :使用yum卸载
解决软件包依赖关系方法
重建RPM数据库
rpm --rebuilddb 或者
rpm --initdb
导入验证公钥
rpm --import /media/cdrom/RPM-GPG-KEY-redhat-release
从源代码编译安装程序
源代码编译概述
使用软代码安装软件的优点:
获得最新的软件版本,及时修复bug
根据用户需要,灵活定制软件功能
应用场合举例:
安装比较新的应用程序
当前安装的程序无法满足需要时
需要为应用程序添加新的功能时
编译安装源代码包
Tarball 封包
tar.gz 和tar.bz2格式居多
素材参考:http://sourceforge.net
完整性校验
md5sum校验工具
[root@localhost ~]# md5sum axel-1.0a.tar.gz
确认源代码编译环境
需安装支持 C/C++程序语言的编译器,如:
gcc-4.4.7-4.el6、gcc-c+±4.4.7-4.el6
make-3.81-20.el6.……
yum install -y lrzsz (安装下载和上传工具)
rz:上传
sz:下载
/usr/src :一般常用放解压文件地方
编译安装过程
账号和权限管理
管理用户和组账号
用户和组账号的概述
linux基于用户省份对资源访问进行控制
用户账户:
超级用户 root
普通用户 自己创建的用户都属于普通用户
程序用户 权限最低,一般只能操作程序相关联的文件
ps -aux 查看进程
组账号
基本组(私有组)
附加组(公共组)
UID和GID
UID 用户标识好
GID 组标识号
用户账户管理
用户账户文件
保存用户名称、宿主目录、登录shell等基本信息
文件保存位置:/etc/passwd
每一行对应一个用户的账户记录
密码文件
保存用户的密码、账号有效期等信息
文件位置: /ec/shadow
每一行对应一个用户的密码记录
字段1:用户帐号的名称
字段2:加密的密码字串信息
字段3:上次修改密码的时间
字段4:密码的最短有效天数,默认值为0
字段5:密码的最长有效天数,默认值为99999
字段6:提前多少天警告用户口令将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户
字段8:帐号失效时间,默认值为空
字段9:保留字段(未使用)
默认只有root用户能够读取文件中的内容,并且不允许root直接编辑该文件中的内容
上次修改密码的时间,表示从1970年01月01日(可理解为Unix系统的诞生日)算起到最近一次修改密码时间隔的天数
添加用户账户
创建:useradd 用户名
useradd 选项 用户名
常用选项
- u:指定 UID 标记号
- -d:指定宿主目录,缺省为 /home/用户名
- -e:指定帐号失效时间
- -g:指定用户的基本组名(或GID号)
- -G:指定用户的附加组名(或GID号)
- -M:不为用户建立并初始化宿主目录
- -s:指定用户的登录Shell
更改设置密码
passwd 用户名
passwd 选项 用户名
常用选项
-d 清空用户密码 使不需要密码就可登录
-l 锁定用户账户
-S 查看账户锁定状态ip
-u 解锁用户账户
修改账户属性
usermod 选项 用户
- -l 更改用户账户的登录名称
- -L 锁定用户账户
- -U 解锁用户账户
以下选项与useradd命令中的含义相同
-u、-d、-e、-g、-G、-s
删除用户账户
userdel -r 用户名
添加 -r 选项时,表示连用户的宿主目录一并删除
用户账户的初始配置文件
文件来源:
新建用户账户,从/etc/skel 目录中复制而来
主要的用户初始配置文件
- ~/.bash_profile
- ~/.bashrc
- ~/.bash_logout
- /etc/profile
- /etc/bashrc
组账号文件
与用户账户类似
/etc/group; 保存组账号基本信息
/etc/gshadow 保存组账户的密码信息
添加组账号
groupadd 组名
添加删除组成员
添加用户到组里:gpasswd -a 用户 组名
删除组里用户 : gpasswd -d 用户 组名
删除组
groupdel 组名
查询账户信息
查询 用户身份; id 用户名
查询用户所属组: groups 用户名
查询用户详细信息 : finger 用户名
查询已登录到主机的用户信息: users、w、who
管理目录和文件的属性
文件/目录的权限和归属
访问权限:
读取 r:运行查看文件内容、显示目录列表
写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行x:允许运行程序、切换目录
-rw-------. 2 root root 1481 Feb 28 2020 anaconda-ks.cfg
第一个字段:表示文件类型
第2-10字段:表示文件权限,前3字段为所有者权限,中间3字段为属组权限,最后3字段为其他用户权限
第11字段:表示selinux安全机制特性,对于关闭了selinux的操作系统在新建文件或目录时没有这个"."
第12字段: 对于文件来说:文件硬链接数量;对于目录来说:该目录下子目录数量,子子目录数量不计算在内。
第4、5列:表示当前用户的所有者和所属组
第6列:当前文件的大小,单位默认为字节
第7、8、9列:修改文件的时间,可通过touch命令刷新该时间
第10列:当前文件或目录的名称
归属(所有权)
属主:用于该文件或目录的用户账户
属组: 拥有改文件或者目录的组账号
查看文件/目录的权限和归属
文件类型
p 表示命名管道文件
d 表示目录文件
l 表示符号连接文件
-表示普通文件
s 表示socket套接口文件,比如我们启用mysql时会产生一个mysql.sock文件
c 表示字符设备文件,例:虚拟控制台 或 tty0
b 表示块设备文件 例: sda,cdrom
设置文件和目录的权限 chmod
chmod 设置权限命令
chmod 【ugoa】 【±=】 【rwx】 文件或者目录
chmod nnn(权限数字) 文件或者目录
u、g、o、a 分别表示
属主、属组、其他用户、所有用户
常用命令选项
-R 递归修改指定目录所有子项的权限
设置文件和目录的归属 chown
chown 属主 文件或目录
chown :属组 文件或目录
chown 属主; 属组 文件或者目录
常用命令选项
-R 递归修改指定目录下所有文件、子目录的归属
修改文件的所属者和所有组:chown root:root 文件名
修改文件的所属者 chown 修改的所属者 文件名
修改文件的所属者 chown 修改的所属组 文件名
设置文件和目录默认权限 umask
umask 000
umask 777
命令作用
定义新建文件及目录的默认权限,通过该命令实现定义权限补码
注意: 文件权限最大666 目录权限最大 777
特殊权限suid
suid作用:程序运行时的权限从执行者变更成程序所有者的权限
使用方法: