oepnEuler
查看系统版本
[root@haojuetrace opt]# cat /etc/os-release
NAME="openEuler"
VERSION="22.03 LTS"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 LTS"
ANSI_COLOR="0;31"
linux命令分类
登录
last
主要参数:
-n:指定输出记录的条数。
-t tty:只显示指定的虚拟控制台上登录情况
-y:显示记录的年、月、日
-ID:知道查询的用户名
-x:显示系统关闭、用户登录和退出的历史。
[root@localhost etc]# last
用户 终端(tty本地终端 pts远程终端)
root pts/0 10.0.54.249 Wed Nov 2 08:37 still logged in
root tty1 Wed Nov 2 08:31 still logged in
reboot system boot 5.10.0-60.18.0.5 Wed Nov 2 08:31 still running
root pts/1 10.0.54.1 Wed Nov 2 08:25 - 08:27 (00:02)
root pts/0 10.0.54.1 Wed Nov 2 08:20 - 08:27 (00:07)
root tty1 Wed Nov 2 08:15 - crash (00:15)
reboot system boot 5.10.0-60.18.0.5 Wed Nov 2 08:15 still running
root tty1 Tue Nov 1 23:02 - down (00:04)
reboot system boot 5.10.0-60.18.0.5 Tue Nov 1 23:01 - 23:07 (00:05)
wtmp begins Tue Nov 1 23:01:36 2022
exit/quit/logout
exit退出bash
logout 退出登陆
电源命令
shutdown
shutdown命令的作用是关闭计算机,使用权限是超级用户。
可以安全地将系统关机
主要参数:
-h:关机后关闭电源
-r:关机后打开电源(相当于重启)
-t:在改变到其它运行级别之前,告诉init程序多久以后关机。
-k:并不真正关机,只是送警告信号给每位登录者。
-F:在重启计算机时强迫fsck。
-time:设定关机前的时间。
halt
halt命令的作用是关闭系统,使用权限是超级用户
不建议,可能会造成数据丢失和数据损坏
主要参数:
-n:防止sync系统调用,它用在用fsck修补根分区之后,以阻止内核用老版本的超级块覆盖修补过的超级块。
-w:并不是真正的重启或关机,只是写wtmp (/var/log/wtmp)纪录
-f: 没有调用shutdown,而强制关机或重启-i:关机(或重启)前,关掉所有的网络接口。
-f: 强迫关机,不呼叫shutdown这个指令。
-d:关闭系统,但不留下纪录。
reboot
reboot命令的作用是重新启动计算机,使用权限是系统管理者
主要参数:
-n:保存数据后再重新启动系统-w: 并不会真的重开机,只是把记录写到/var/log/wtmp文件里。
-d: 不把记录写到/var/log/wtmp文件里( -n这个参数包含了-d)
-i:关闭网络设置之后再重新启动系统
文本管理命令
在Linux操作中,一切皆是文件
pwd
pwd命令用于打印出当前的工作目录
pwd命令有两个选项,-L和-P,其作用类似于cd 命令的同名选项。-L 目录连接链接时,输出连接路径
-P输出物理路径
[root@haojuetrace ~]# pwd
/root
cd
cd命令用于改变当前工作目录
语法: cd [dir]cd /usr 进入目录/usr 中。
cd .. 进入(退到)上一层目录,两个点代表父目录
cd . 进入当前目录
cd 不带参数,则默认回到家目录
cd - 进入前一个目录,适用于在两个目录之间快速切换
cd ~ 进入家目录
ls
ls命令是Linux 命令中使用频率最高者之一,用于列出目录的内容,或者文件的信息该命令的输出结果默认按照文件名排序,如果不指定目标,则列出当前目录的内容
语法: [s [OPTION]... [FILE]..
-a 显示所有文件及目录(s内定将文件名或目录名称开头为“”的视为隐藏档,不会列出)。-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-t 将文件依建立时间之先后次序列出。
-R 若目录下有文件,则以下之文件亦皆依序列出。-h 易读模式
mkdir
mkdir命令用于创建目录
-p 创建递归目录(创建连续几个目录)
touch
touch用于创建文件
也可以用于修改文件的时间戳
cp
cp命令用于复制文件或者目录,可以一次复制单个文件,也可以一次复制多个文件(cp 命令属于高危命令,使用不慎就会有丢失数据的危险)
语法: cp [OPTION]...SOURCE... DIRECTORY
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
-l:不复制文件,只是生成链接文件
mv
mv命令用于移动件或者目录(高危命令,使用不慎就会有丢失数据的危险)如果原文件和目标文件在同一个父目录里面,则mv命令的效果就相当于给文件改名语法: mv[选项] 源文件或目录 目标文件或目录。
-b: 若需覆盖文件,则覆盖前先行备份。
-f: force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖-i: 若目标文件(destination)已经存在时,就会询问是否覆盖
-u: 若目标文件已经存在,且 source 比较新,才会更新(update)。
rm
rm命令属于高危命令,没有一个工具能够100% 恢复rm命令删除的文件,rm命令删除文件时并不是把文件放到类似图形界面的“回收站”里,所以没有“撤销删除操作可用。
语法: rm [OPTION] file_or_dir-f,--force 忽略不存在的文件,从不给出提示。
-i,--interactive 进行交互式删除
-r,-R,--recursive 指示rm将参数中列出的全部目录和子目录均递归地删除
-V,--verbose 详细显示进行的步骤。
cat
cat命令用于读取文件的全部内容,或者将几个文件合并为一个文件
语法: cat [OPTION] [FILE]
-A,--show-all 等价于 -VET。
-b,--number-nonblank 对非空输出行编号
-E,--show-ends在每行结束处显示$。
-n,--number 对输出的所有行编号由1开始对所有输出的行数编号
head
head用来显示文件的开头内容,默认head命令打印其相应文件的开头10行。
语法: head [OPTION] [FILE]
命令参数:
-q 隐藏文件名
-v 显示文件名
-c<字节>显示字节数-n<行数> 指定显示的行数
tail
tail命令用于读取文件的尾部。语法: tail [OPTION]... [FILE]..主要参数
-f 循环读取
-q 不显示处理信息。
-V 显示详细的处理信息。
-c<数目>显示的字节数。
-n<行数>指定显示行数。
more
使用more命令在读取文件信息时,可以进行交互操作。
Enter 向下n行,需要定义。默认为1行。
Ctrl+F 向下滚动一屏。
空格键 向下滚动一屏。0
Ctrl+B 返回上一屏
= 输出当前行的行号
V 调用vi编辑器。
!命令 调用shell,并执行命令
q 退出more。
less
less命令读取内容,分屏显示,less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
语法: less [OPTION]... [FILE]...
常用操作:
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能。
q 退出less 命令
空格键 滚动一页。
回车键 滚动一行。
find
find命令用来在指定目录下查找文件。
可以指定一些匹配条件,如按文件名、文件类型、用户甚至是时间戳查找文件。
常用语法: find [path...] [expression]
-name 按照文件名查找文件
-perm 按照文件权限来查找文件
-user 按照文件属主来查找文件
-mtime -n +n 按照文件的更改时间来查找文件-type 按照类型查找(f 文件 d目录)
locate
locate可以快速的查找文件系统内是否有指定的文件。
查找原理:先建立一个文件名及路径的数据库,查找时去这个数据库内查询。
语法: locate[OPTION] PATTERN-e 将排除在寻找的范围之外。
-f 将特定的文件排除在外。
-r 使用正规运算式做查找条件。-o 指定文件的名称。
-d 指定文件的路径。第一次使用locate 需要先执行updatadb
which
which命令在PATH所指定的目录中查找可执行文件使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
语法: which [options] programname [...]
[root@haojuetrace ~]# which ls
/usr/bin/ls
whereis
whereis用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
语法:whereis(选项)(参数)
-b:只查找二进制文件;
-B<目录>:只在设置的目录下查找二进制文件;
-f:不显示文件名前的路径名称;
-m:只查找说明文件;
-M<目录>:只在设置的目录下查找说明文件;
-s:只查找原始代码文件;
-S<目录>只在设置的目录下查找原始代码文件;
-u:查找不包含指定类型的文件。
gzip
gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间。
语法:gzip[参数] [文件或者目录]
-d或--decompress或----uncompress解开压缩文件。
-f或--force 强行压缩文件,不理会文件名是否存在以及该文件是否为符号连接-[或--list 列出压缩文件的相关信息。
-r或--recursive递归处理,将指定目录下的所有文件及子目录一并处理-v或--verbose 显示指令执行过程。
tar
tar命令可用于打包文件,把多个文件打到一个包中,方便数据的移动。
语法: tar [OPTION...] [FILE]
-c 建立新的压缩文件。
-x 从压缩的文件中提取文件。
-t 显示压缩文件的内容。
-z 支持gzip解压文件
j支持bzip2解压文件
-V 显示操作过程。-C 指定解压到哪个目录
-f 指定文件
#//压缩gzip文件
[root@haojuetrace ~]# tar -czf tem.tar.gz anaconda-ks.cfg
[root@haojuetrace ~]# ls
anaconda-ks.cfg tem.tar.gz
ln
ln命令用于创建链接文牛。
· Linux中有软链接和硬链接两种。
注意:创建软链接的时候要使用绝对路径
·ln命令在不带参数的情况下,默认创建的是硬链接。语法:In [-f -n] [(SourceFile[ TargetFile ]
-b 删除,覆盖以前建立的链接
-d许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录。
-s 软链接(符号链接)。
| 软链接(symbolic link ) | 硬链接(hard link) |
| --------------------------------------- | ------------------------------------ |
| 以路径形式存在,类似于Windows的快捷方式 | 以文件副本形式存在,但不占用实际空间 |
| 删除源文件后链接失效 | 删除源文件后影响 |
| 可以对目录进行链接 | 不可以对目录进行链接 |
| 可以跨文件系统 | 不可以跨文件系统 |
vim
快速移动光标:
上下左右键或k、j、h、[键上下左右移动光标
0 移动到行首
g0移到光标所在屏幕行行首[n]G 移动到第n行
:n 移动到第n行。
gg: 到文件头部。
G: 到文件尾部
数据操作:
yy or Y: 复制整行文本p 行后粘贴文本 P行前粘贴文本
y[n]w: 复制一(n)个词
d[n]w: 删除(剪切)1(n)个单词
[n] dd: 删除(剪切)1(n)行u 撤销上一步操作
:s/旧/新/ 新替换旧 (替换单个)
:s/旧/新/g 新替换旧 (整行替换)
:%s/旧/新/g 新替换旧 (全文替换)
cut
cut用于显示文件或者标准输入的特定列,如:
[root@haojuetrace opt]# cut -d : -f 1 passw
#显示/etc/passwd文件以:间隔的第一列
命令格式:cut [option]... [文件]
cut常用的选项有:
-b[范围:仅显示行中指定直接范围的内容
-c[范围:仅显示行中指定范围的字符
-d:指定字段的分隔符,默认的字段分隔符为“TAB”
-f[范围:显示指定第num 个字段的内容,可以用逗号隔开显示多个字段
awk
awk是一个强大的文本分析工具,简单来说awk就是把文件或者标准输入逐行读入
以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理#显示最近登录系统的5个账号 [root@haojuetrace opt]# last -n 5 |awk {'print $1'}
awk基本命令格式:
awk 动作 文件名,如:awk{'print $oy' }test.txt
默认是以空格为分隔符
grep
grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容
命令格式: grep [option] [file]...
grep常用的选项有-c: 统计符合样式的行数口
-i:忽略大小写
-w:只显示全子符合的行
-x:只显示全行符合的行 和^$一样-v:与匹配相反的结果
wc文本统计
wc命令用于计算字数。利用wc指令我们可以计算文件的字节数、字数、或是列数,若不指定文件名称、或是所给予的文件名为”-”,则wc指令会从标准输入设备读取数据。
命令格式:wc [option]... [file]...
wc常用选项有:
-c或--bytes或--chars:只显示字节数
-l或--lines:只显示行数
-w或--words:只显示字数
sort
sort命令可以将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。
命令格式: sort [option]... [file]...
sort常用的选项有:
-b:忽略每行前面开始的空格字符
-c:检查文件是否已经按照顺序排序
-d:排序时,处理英文字母、数字及空格字符外,忽略其他字符
-f:排序时,将小写字母视为大写字母
-n:依照数值的大小排序
-r:以相反的顺序排序
-o<文件>:将排序后的结果存入指定的文件
-u:忽略相同行
diff
diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
命令格式: diff [option]... file
diff常用的选项有:
-B:不检查空白行
-c: 显示全部内文,并标出不同之处口
-i:忽略大小写的不同
-r:比较子目录中的文件
-W:忽略全部的空格字符
tr
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备常用于转换或删除文件中的字符。
简单来说就是用来删除或者替换
命令格式: tr [option]... set1 [set2]
[root@openEuler ~]# cat text.txt|tr a-z A-Z
#将小写转换为大写输出
tr常用的选项有:
-c:反选设定字符,也就是符合set1的部分不做处理,不符合的剩余部分才进行转换
-d:删除字符
-s缩减连续重复的字符成指定的单个字符
-t:削减set1指定范围,使之与set2设定长度相等
sed
相比较tr,sed可以修改字符串。sed是一种在线编辑器,可以对来自文件、以及标准输入的文本进行编辑。执行时,sed会从文件或者标准输入中读取一行,将其复制到缓冲区,对文本编辑完成之后,读取下一行直到所有的文本行都编辑完毕。所以sed命令处理时只会改变缓冲区中文本的副本,如果想要直接编辑原文件,可以使用-i选项或者将结果重定向到新的文件中。
命令格式: sed [option]... [option] [script-only-if-no-other-script} [input-file]...sed常用的选项:
-n:取消默认输出
-e: 多点编辑,可以执行多个子命令
-f:从脚本文件中读取命令
-i: 直接编辑原文件
-l:指定行的长度
-r:在脚本中使用扩展表达式//sed 's/admin/root/g' passwd 把passwd文件中admin替换成root //sed '/admin/d' passwd 把passwd中的admin删除 //sed -e '4a\root' passwd 在passwd文件中第四行后面插入root //sed '2d' passwd 删除passwd文件的第二行 //sed -n '2p' passwd 获取第二行的内容
帮助命令
help
在linux系统中,命令太多,记全几乎不太可能,但是,我们可以通过help命令获取帮助。
命令语法
help[选项] [命令]
其中,选项内容包括如下
-d显示命令简短主题描述
-s显示命令简短语法描述
man
man是按照手册的章节号的顺序进行搜索的,
比: man sleep,
如左图
默认只显示命令的手册,如果想查看库函数就要输入:man 3 sleep,如右图
管理用户和组
用户
用户uid
UID指的是用户的ID(User ID),一个用户UID标示一个给定用户,UID是用户的唯一标示符,通过UID可以区分不同用户的类别(用户在登录系统时是通过UID来区分用户,而不是通过用户名来区分):
超级用户:也称为root用户,它的UID为0,超级用户拥有系统的完全控制权,可以进行修改、删除文件等操作也可以运行各种命令,所以在使用root用户时要十分谨慎;普通用户:也称为一般用户,它的UID为1000-60000之间,普通用户可以对自己目录下的文件进行访问和修改也可以对经过授权的文件进行访问;
虚拟用户:也称为系统用户,它的UID为1-999之间,虚拟用户最大的特点是不提供密码登录系统,它们的存在主要是为了方便系统的管理。
管理用户
- 在Linux系统中,每个普通用户都有一个账号,包括用户名、密码和主目录等信息。除此之外,还有一些系统本身创建的特殊用户,具有特殊的存在意义,其中最重要的用户就是管理员账户,默认的用户名为root(也就是超级用户)。
- 通过操作命令行能够对用户文件进行创建、修改、删除更改密码等操作
创建用户-useradd
useradd命令可用来创建用户账号,并保存在
/etc/passwd
文件中。
语法: useradd [options] user_name。
其中的命令选项说明如下:
-u 指定用户UID
-o 配合“-u”属性,允许UID重复
-g 指明用户所属基本组,既可为用户组名,也可为GID(该组必须已存在)-d 指定用户的home目录,并自动创建用户home目录
-s 指明用户的默认shell程序 (/usr/sbin/nologin 虚拟机用户的shell)
-D 显示或更改默认配置
修改用户-usermod
usermod可用来修改用户账号的各类信息。语法: usermod [options] user_name。其中的命令选项说明如下
-u修改用户UID
-g修改用户所属用户组
-I修改用户账号名称
-d 修改用户home目录
-s修改用户默认shell程序
删除用户-userdel
userdel删除用户
-r 删除用户同时将home目录也删除
-f 强制删除
修改用户密码-passwd
passwd用来修改用户的密码。
语法: passwd [OPTION...] user_name。
其中的命令选项说明如下:
-n设置修改密码最短天数
-x设置修改密码最长天数
-w 设置用户在密码过期前多少天收到警告信息
-i设置密码过期多少天后禁用账户
-d 删除用户密码
-S显示用户密码信息
(root用户可以修改任何用户的密码,普通用户只能修改自身的密码
用户名 用户创建时间 -n -x -w
admin LK 2022-11-02 0 99999 7 -1 (Password locked.)
修改用户有效期-chage
修改账号密码的有效期
查
id username或者 cat /etc/passwd
用户组
具有相同特性用户的逻辑集合,通过组的形式使得具有相同特性的多个用户能够拥有相同的权限,便于管理:
每一个用户都拥有自己的私有组;
同一组内的所有用户可以共享该组下的文件;
每一个用户组都会被分配一个特有的id号-gid。
用户组ID
用户组ID(Group ID,简称为GID 和用户UID类似,作为唯一标识符来标示系统中的一个用户组:
在添加账户时,默认情况下会同时建立一个与用户同名且UID和GID相同的组;
GID与UID都会将0赋予给超级用户或者具有超级用户的用户组(也就是root用户组);
系统会预留一些较前的GID给虚拟用户(也称为系统用户)。
可以通过输入命令行id [option] [user_name],查看用户组gid以及每个用户组下拥有的用户数量。
GID范围 500-60000
用户组分类
- 普通用户组:可以加入多个用户;
- 系统组:一般加入的用户为系统用户
- 私有组:也称为基本组,在创建用户时,如果没有为其指明所属用户组,则会为该用户定义一个私有的用户组,且该用户组名称与用户名同名。
用户和用户组的关系
- 一对一:一个用户可以存在一个用户组中,作为组中的唯一成员;
- 一对多:一个用户可以存在多个用户组中,该用户具有多个组的共同权限
- 多对一:多个用户可以存在一个用户组中,这些用户具有和组相同的权限
- 多对多:多个用户可以存在多个用户组中,其实就是以上三种关系的扩展
管理用户组
查
/etc/group
创建用户组groupadd
groupadd可用来创建一个新的用户组,并将新用户组信息添加到系统文件中
语法: groupadd[options] group_name
其中的命令选项说明如下:
-f 如果组已存在,则成功退出
-g 为新用户组所使用的GID
-h 显示此帮助信息并退出
-o允许创建有重复GID的组
-p为新用户组使用此加密过的密码
-r 创建一个系统账户
修改组-groupmod
groupadd可用来创建一个新的用户组,并将新用户组信息添加到系统文件中
语法: groupadd[options] group_name
其中的命令选项说明如下:
-f 如果组已存在,则成功退出
-g 为新用户组所使用的GID
-h 显示此帮助信息并退出
-0允许创建有重复GID的组
-p为新用户组使用此加密过的密码
-r 创建一个系统账户
删除组 - groupdel
Groupdel可用来删除用户组,但若是用户组中包含一些用户,需先删除掉用户后再删除用户组:
语法: groupdel [options] group_name
其中的命令选项说明如下
-f 即便是用户的主组也继续删除
-h 显示此帮助信息并退出
(groupdel命令用于从系统中删除组,需要注意的是,若是在组中仍然包括某些用户,此时需要先删除这些用户后,才能删除组)
关联用户和组-gpasswd
gpasswd可以用来添加或删除用户到组中。语法: gpasswd [option] group_name。其中的命令选项说明如下
-a向组GROUP 中添加用户 USER
-d 从组 GROUP 中添加或删除用户
-M 设置组GROUP的成员列表
-A设置组的管理员列表
-r 移除组 GROUP的密码
-R向其成员限制访问组GROUP
-Q 要chroot 进的目录
OpenEuler中用户关联的文件
openEuler下涉及到管理用户信息的文件一般有以下两种
- /etc/passwd:用户账号信息文件
在这个文件中,保存着系统中所有用户的主要信息,每一行代表着一个记录;每一行用户记录中定义了用户各个方面的相关属性。
root:x:0:0:root:/root:/bin/bash
Linux中的shell,是指一个面向用户的命令接口,表现形式为一个可以又用户登录的界面,Linux的shell有很多种sh,csh,ksh,tcsh, bash等
(shell是建立在内核的基础上,且面向于用户的一种表现形式)
- /etc/shadow:用户账号信息加密文件(又称为“影子文件”)。
用于存储系统中用户的密码信息;
由于/etc/passwd文件允许所有用户读取,容易导致密码泄露,因此将密码信息从该文件中分离出来,单独放置在/etc/shadow文件中。
root:$6$yaGSvKfHKiKZz7sp$MpwiJFHUqCFQ51oMJjk2uEStV8Zqsnao5iL12yIPujOx.zgJwE2n2eNpXPvXWVgYWwNVwiz2aszwPunyrYNd/0:19298:0:99999:7:::
/etc/group
/etc/gshadow
user2:x:1001:
su/su -
su可用来更改用户身份,但不会更改shell环境。
su - 会切换shell环境
语法: su [options] [-] [
[ ...]]
其中的命令选项说明如下
-m,-p:执行su时不会改变环境变量
-s:指定要执行的shell(bash csh tcsh等)
-c:变更账号为USER的使用者并在执行完command后变为原使用者-f:不需要读启动档,仅用于csh 或tcsh
etc...
sudo
sudo可允许普通用户执行root用户才能执行的任务语法: sudo-h|-K-k -V其中的命令选项说明如下
-h:显示版本号以及指令的使用说明
-k:使使用者在下次执行sudo时询问密码
-V:显示版本编号0
-l:显示使用者的权限D
-L:显示sudos设置-i :可以直接切换root用户 (前提是必须拥有sudo命令所有权限)
etC...
visudo
修改用户使用sudo权限或者使用
vi /etc/sudoers.tmp
- 用户 允许使用的主机=(以什么身份) 不需要输入密码:可以使用什么命令
- root ALL=(ALL) NOPASSED:ALL
文件权限管理
文件类型
常见权限设置命令
chmod命令:修改文件权限
- Linx的文件调用权限分为三级: 文件所有者、群组及其他,通过chmod命令可以控制文件被何人调用;
- 使用权限:文件所有者。
chown命令:修改文件属主属组(只允许管理员)
Linux做为多用户多任务系统,所有文件都有其所有者,通过chown可以将特定文件的所有者更改为指定用户或组;
使用权限:管理员(root用户)。
chgrp命令: 修改文件属组
通过chgrp命令可以对文件或目录的所属群组进行更改;
- 使用权限:管理员(root用户)。
umask命令:遮罩码。
通过umask命令可以指定在建立文件时进行权限掩码的预设0
在创建前使用
使用权限:管理员和普通用户。
控制列表ACL
- 在linux里我们可以通过ACL来管理某个文件及其特定的用户和用户组权限,简单来说ACL只需掌握三个命令即可:setfacl,getfacl,chacl。
- setfacl:设置文件的ACL。
- chmod根据文件所有者、所属群组及其他用户三级权限进行权限分配,而setfad则可以针对每一文件或目录进行更加精准的权限分配。
- getfacl: 获取文件的ACL。
- chacl:更改文件或目录的ACL。
- 与chmod相似,但是更为强大精细,通过chmod可以控制文件被何人调用,但若是某一用户的文件只想给特定的用户看时,则需要chacl出场完成用户的需求。
getfacl
getfacl可获取文件或目录的访问控制列表ACL语法: getfacl [-aceEsRLPtpndvh] file ...其中的命令选项说明如下
-a:仅显示文件访问控制列表
-d:仅显示默认的访问控制列表
-c:不显示注释表头
显示所有的有效权限
-E:显示无效权限
跳过只有基条目(baseentries)的文件
[root@haojuetrace opt]# getfacl test
# file: test
# owner: root
# group: root
user::rw-
user:user1:rw-
group::r--
mask::rw-
other::r--
setfacl
setfacl可用来设置文件的ACL。
语法: setfacl [-bkndRL] [ -m-M-x-X ...} file ..
其中的命令选项说明如下
-m修改指定文件的acl,不能和-x混合使用
-x删除后续参数
-b删除所有acl设定参数
-k 移除预设的acl参数
-R递归设置acl参数
-d 预设目录的acl参数
[root@haojuetrace opt]# setfacl -m u:user1:rw test
chacl
chacl可用来设置文件或目录的控制权限
语法: chacl [acl/R/D/B/r] pathname... / chac -b acl dacl pathname... / chacl -d daclpathname...
其中的命令选项说明如下:
-b
同时修改文件权限和默认目录权限
-d
设置目录的默认权限
-R
只删除文件的权限口
-D
只删除目录的权限
-B
删除所有权限口
-l
列出所有文件和目录权限
-r
设置所有目录和子目录下的权限0
[root@haojuetrace opt]# chacl u::rw,g::r,o::r file1
[root@haojuetrace opt]# chacl -l file1
file1 [u::rw-,g::r--,o::r--]
软件安装与管理
RPM软件包管理
RPM优缺点
- RPM软件包管理优点
- 简单便捷,兼容版本;
参数信息记录在数据库中,便于查询、升级或卸载软件时使用口- RPM软件包管理缺点
- 安装环境需与打包环境一致;口
具有很强的依赖关系,卸载软件时需要对依赖性软件优先处理,否则会导致其他软件无法正常使用。
RPM
RPM常用于安装、删除、升级、刷新和查询的场景。
语法: rpm[OPTION...]。
其中的命令选项说明如下
-:指定安装的软件包
-h:使用“#(hash)符显示rpm详细的安装过程及进度
-v:显示安装的详细过程
-U:升级指定的软件包
-q:查询系统是否已安装指定的软件包或查询指定rpm包内容信息
-a:查看系统已安装的所有软件包
-V:查询已安装的软件包的版本信息
-c:显示所有配置文件
-p:查询/校验一个软件包的文件常用组合:
- -ivh 安装软件
- -Uvh 升级
- -e 删除
- -q 查询软件包是否安装
- -qa 查询所有安装的软件包
- -qpi 查询软件描述
- -qpl 列出软件文件信息
- -qf 文件(命令)属于哪个rpm包
- -qc 查询已安装的软件包中的配置文件
- -qd 查询已安装的软件包中的帮助文档
DNF工具
DNF介绍
- DNF(Dandified YUM)作为Linux软件包管理工具,可以用来管理RPM软件包。
- DNF可以查询软件包的信息,从指定软件库去获取所需软件包,并通过自动处理依赖关系来实现安装、卸载以及更新。
- DNF与YUM完全兼容,提供了YUM兼容的命令行以及为扩展和插件提供的API。
- DNF的使用需要管理员(root)权限。
- dnf系统的软件管理工具yum是基于rpm包管理,可以从指定的服务器自动下载RPM服务器并进行安装,yum可以作为软件仓库对软件包进行管理,相当于一个“管家”,同时能够解决软件包间的依赖关系,提升了效率,既然如此,为什么还会出现DNF工具呢?
- yum工具性能差、内存占用过多、依赖解析速度变慢等问题长期得不到解决,同时yum工具过度依赖yum源文件,若是源文件出现问题,yum相关操作可能会失败,针对这种情况,DNF工具应运而生,DNF工具克服了YUM软件管理工具的一些瓶颈,提升了用户体验、内存占用、依赖分析及运行速度等方面的内容。
DNF配置文件 - /etc/dnf/dnf.conf
DNF的主要配置文件是/etc/dnf/dnf.conf,该文件中“main”部分保存着DNF的全局配置。
通过cat命令,可以查看“main”的具体参数: cat /etc/dnf/dnf.conf。
其中的参数说明如下:gpgcheck: 是否检验
cachedir:缓存目录,该目录用于存储RPM包和数据库文件;
best:升级包时,总是尝试安装其最高版本,如果最高版本无法安装,则提示无法安装的原因并停止安装。默口认值为True;
installonly limit: 设置可以同时安装“installonlypkas”指令列出包的数量。默认值为3,不建议降低此值
clean_requirements on remove: 删除在dnf remove期间不再使用的依赖项,如果软件包是通过DNF安装的而不是通过显式用户请求安装的,则只能通过clean_requirements_on_remove删除软件包,即它是作为依赖项引入的。默认值为True。
[main]
gpgcheck=1 #是否检验
installonly_limit=3 #设置可以同时安装“installonlypkas”指令列出包的数量,默认值为3
clean_requirements_on_remove=True #卸载删除依赖
best=True
skip_if_unavailable=False
dnf启动和禁用源
添加好软件源之后,需要在root权限下启用软件源(其中的repository为新增repo文件的repo id),启用命令如下:
dnf repolist #查看新增repo文件的repo id dnf config-manager --set-enable repository
若是软件源不再被使用,可以通过命令行禁用该软件源,需要在root权限下禁用禁用命令如下:
#查看新增repo文件的repoid dnf repolist [root@haojuetrace ~]# dnf config-manager --set-disable repository
dnf搜索软件包
[root@haojuetrace ~]# dnf search 软件包
或者
[root@haojuetrace ~]# dnf list 软件
或者
[root@haojuetrace ~]# dnf list | grep 软件包
查看软件包信息
[root@haojuetrace ~]# dnf info 软件包
列出组包
[root@haojuetrace ~]# dnf grouplist
查看组包里包含什么软件包
[root@haojuetrace ~]# dnf groups info 组包
安装组包
[root@haojuetrace ~]# dnf groups install 组包名 -y
检查软件更新
[root@haojuetrace ~]#dnf check-update
更新软件包
#更新所有
[root@haojuetrace ~]#dnf update
#更新单个软件包
[root@haojuetrace ~]#dnf update 软件包
源代码软件安装
源代码软件优缺点
- 源码安装优点
- 编译过程可以根据自身需求设置参数进行软件安装,灵活性好经过本机编译,使得源码安装的软件与本机兼容性最好
- 源码安装缺点
- 配置及编译过程较为繁琐;
可能由于安装软件过新或其他问题,导致没有对应的依赖包,软件升级较为复杂,得不偿失
步骤
- 下载源码包并解压(校验包完整性)
- 查看README和INSTALL文件(记录了软件的安装方法及注意事项)
- 创建Makefile文件-通过执行./configure 脚本命令生成
- 编译-通过make命令将源码自动编译成二进制文件
- 安装软件-通过 make instal 安装命令来将上步编译出来的二进制文件安装到对应的目录中去,默认的安装路径为/usr/local/,相应的配置文件位置为/usr/local/etc或/usr/local/***/etc
systemd管理服务
- 在Linux中,systemd是与SysV和LSB初始化脚本兼容的系统和服务管理器,开启systemd服务可以提供基于守护进程的按需启动策略。
- systemd服务支持快照和系统状态恢复,维护挂载和自挂载点,使得个服务之间基于从属关系实现更为精细的逻辑控制,具有更高的并行性能。
unit概念
Systemdunit概念
systemd服务的开启和监督系统是基于unit的概念,unit由一个与配置文件对应的名称和类型组成,unit通常有以下几种类型:Service unit:系统服务口
Target unit:一组systemd units
Automount unit:文件系统挂载点
Device unit:内核识别的设备文件
Mount unit:文件系统挂载点
Pathunit:在一个文件系统中的文件或目录
Scope unit:外部创建的进程
Snapshotunit:systemd manager的保存状态
systemd具备以下特性
更快的启动速度
提供按需启动能力
采用cgroup特性跟踪和管理进程的生命周期
启动挂载点和自动挂载的管理
实现事务性依赖关系管理
与SysV初始化脚本兼容
能够对系统进行快照和恢复
显示正在运行的服务
#若是要查看所有服务,需要在命令行后添加 -all 参数
[root@haojuetrace ~]# systemctl list-units --type service
管理文件系统及存储
常见的文件类型
openEuler文件系统
openEuler内核源于Linux, Linux内核支持十多种不同类型的文件系统,比如Btrfs、JFS.
ReiserFS、ext、ext2、ext3、ext4、ISO9660、XFS、Minix、MSDOS、UMSDOS、VFAT.
NTFS、HPFS、NFS、SMB、SysV、PROC等,表格中列举常用几种并做说明。
openEluer默认文件系统为ext4。
swap分区配置
Linux有两种形式的交换空间: 交换分区和交换文件。交换分区就是一个独立的硬盘没有文件或内容,即swap分区;交换文件是文件系统中的一个特殊文件,独立于系统和数据文件之外。
- 创建swap分区: fdisk创建分区,mkswap创建swap分区,swapon启用swap分区
- 创建swap文件:创建文件,mkswap格式化文件,swapon启用swap文件。推荐的swap大小配置
磁盘存储挂载与使用
磁盘类型
- hd[a-d] IDE设备
- sd[a-z] SCSI/SATA/U盘
- vd[a-z] virtio设备
- fd[0-1] 软驱
- lp[0-13] 打印机
- cdrom 光驱
- st/ht 磁带机
查看磁盘信息
#查看基本信息
fdisk -l
#查看磁盘挂载
lsblk
#查看硬盘利用率
df -h
df -T #可以查看挂载的磁盘1类型
磁盘分区
磁盘分区可以将硬盘驱动器划分为多个逻辑存储单元,这些单元称为分区。通过将磁盘划分为多个分区,系统管理员可以使用不同的分区执行不同功能。
磁盘分区类型
通常所说的“硬盘分区”就是指修改磁盘分区表,注意以下情况
- 考虑到磁盘的连续性,一般建议将扩展分区放在最后面的柱面内一个硬盘只有一个扩展分区,除去主分区,其它空都分配给扩展分区
- 硬盘容量=主分区+扩展分区;
- 扩展分区容量=各个逻辑分区容量之和
磁盘分区方案 - MBR
只有4个主分区
MBR分区方案
- 主启动记录(Master Boot Record)分区方案指定了在运行BIOS固件的系统上应如何对磁盘进行分区,它是存在于驱动器开始部分的一个特殊的启动扇区。
- 如果是SCSI接口硬盘则最多只能有15(其中扩展分区不能直接使用所以不计算)个分区0其中主分区最多4个,逻辑分区最多12个。IDE接口硬盘最多只能有63(其中扩展分区不能直接使用所以不计算)个分区,其中主分区最多4个,逻辑分区最多60个
- 由于分区大小数据以32位值存储使用MBR方案分区时最大磁盘和分区大小限制为2TB。
磁盘分区-fdisk
fdisk是传统的Linux硬盘分区工具,也是Linux系统中最常用的一种硬盘分区工具之一,但不支持大于 2TB 的分区。(用于MBR分区)
命令格式如下
语法: fdisk(选项)(参数)
常用选项释义如下:
-b<分区大小>:指定每个分区的大小;
-l:列出指定的外围设备的分区表状况
-s<分区编号>:将指定的分区大小输出到标准输出上,单位为区块;
-u:搭配”-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址;
-v:显示版本信息。
[root@haojuetrace ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xdf1256dc.
Command (m for help): m #帮助
Help:
DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c toggle the dos compatibility flag
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
u change display/entry units
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
Command (m for help): n #添加分区
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p #主分区
Partition number (1-4, default 1):
First sector (2048-16777215, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-16777215, default 16777215): +2G #设置分区大小
Created a new partition 1 of type 'Linux' and of size 2 GiB.
Command (m for help): p #查看分区
Disk /dev/sdb: 8 GiB, 8589934592 bytes, 16777216 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xdf1256dc
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 4196351 4194304 2G 83 Linux
Command (m for help): w #保存
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
格式化分区-mkfs
[root@haojuetrace ~]# mkfs
mkfs mkfs.ext2 mkfs.fat mkfs.vfat
mkfs.btrfs mkfs.ext3 mkfs.minix mkfs.xfs
mkfs.cramfs mkfs.ext4 mkfs.msdos
[root@haojuetrace ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.46.4 (18-Aug-2021)
Creating filesystem with 524288 4k blocks and 131072 inodes
Filesystem UUID: d2ad146e-1c8f-4a06-8fe7-103af294d4b3
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
挂载磁盘-mount
[root@haojuetrace ~]# mkdir /data1
[root@haojuetrace ~]# mount /dev/sdb1 /data1
[root@haojuetrace ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 59G 0 part
├─openeuler-root
│ 253:0 0 38.3G 0 lvm /
├─openeuler-swap
│ 253:1 0 2G 0 lvm [SWAP]
└─openeuler-home
253:2 0 18.7G 0 lvm /home
sdb 8:16 0 8G 0 disk
└─sdb1 8:17 0 2G 0 part /data1
sdc 8:32 0 8G 0 disk
sr0 11:0 1 3.4G 0 rom /opt/openEuler
统计目录磁盘使用情况-du
[root@haojuetrace ~]# du -sh /*
4.0K /afs
0 /bin
87M /boot
20K /data1
0 /dev
52M /etc
72K /home
0 /lib
0 /lib64
16K /lost+found
4.0K /media
4.0K /mnt
3.8G /opt
0 /proc
240K /root
8.0M /run
0 /sbin
4.0K /srv
0 /sys
0 /tmp
2.2G /usr
224M /var
创建swap分区案例
[root@haojuetrace ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
This disk is currently in use - repartitioning is pro bably a bad idea.
It's recommended to umount all file systems, and swap off all swap
partitions on this disk.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (4196352-16777215, default 4196352):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (419635 2-16777215, default 16777215): +2G
Created a new partition 2 of type 'Linux' and of size 2 GiB.
Command (m for help): l
00 Empty 24 NEC DOS 81 Minix / ol d Lin bf Solaris
01 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
02 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
03 XENIX usr 3c PartitionMagic 84 OS/2 hidde n or c6 DRDOS/sec (FAT-
04 FAT16 <32M 40 Venix 80286 85 Linux exte nded c7 Syrinx
05 Extended 41 PPC PReP Boot 86 NTFS volum e set da Non-FS data
06 FAT16 42 SFS 87 NTFS volum e set db CP/M / CTOS / .
07 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plai ntext de Dell Utility
08 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
09 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
0a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
0b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
0c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkp ad hi ea Linux extended
0e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs
0f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT
10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f1 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boo t f4 SpeedStor
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ f2 DOS secondary
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fc VMware VMKCORE
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizar d hid fd Linux raid auto
1c Hidden W95 FAT3 75 PC/IX bc Acronis FA T32 L fe LANstep
1e Hidden W95 FAT1 80 Old Minix be Solaris bo ot ff BBT
Aliases:
linux - 83
swap - 82
extended - 05
uefi - EF
raid - FD
lvm - 8E
linuxex - 85
Command (m for help): t
Partition number (1,2, default 2): 2
Hex code or alias (type L to list all): 82
Changed type of partition 'Linux' to 'Linux swap / So laris'.
Command (m for help): p
Disk /dev/sdb: 8 GiB, 8589934592 bytes, 16777216 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xdf1256dc
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 4196351 4194304 2G 83 Linux
/dev/sdb2 4196352 8390655 4194304 2G 82 Linux swap / Solaris
Command (m for help): w
The partition table has been altered.
Syncing disks.
[root@haojuetrace ~]# mkswap /dev/sdb2
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=973f5cd0-e402-46f0-82e4-1c28e1d26397
[root@haojuetrace ~]# swapon /dev/sdb2
[root@haojuetrace ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 59G 0 part
├─openeuler-root 253:0 0 38.3G 0 lvm /
├─openeuler-swap 253:1 0 2G 0 lvm [SWAP]
└─openeuler-home 253:2 0 18.7G 0 lvm /home
sdb 8:16 0 8G 0 disk
├─sdb1 8:17 0 2G 0 part /data1
└─sdb2 8:18 0 2G 0 part [SWAP]
sdc 8:32 0 8G 0 disk
sr0 11:0 1 3.4G 0 rom /opt/openEuler
[root@haojuetrace ~]# free -h
total used free sha red buff/cache available
Mem: 1.4Gi 252Mi 526Mi 7. 0Mi 652Mi 748Mi
Swap: 4.0Gi 0B 4.0Gi
磁盘分区方案-GPT
GPT分区方案
随着硬盘驱动器容量的不断增长老旧的MBR分区方案的2TB磁盘和分区大小限制已不再是理论上的限制而是在生产环境中越来越经常遇到的实际问题,因此GPT正在取代传统的MBR方案进行磁盘分区。
GPT意为GUID分区表,驱动器上的每个分区都有一个全局唯一的标识符(globallyunique identifier,GUID),对于运行统一可扩展固件接口(UEFI)固件的系统GPT是在
物理硬盘上布置分区表的标准。没有主分区和逻辑分区之分,每个硬盘最多可以有128个分区,GPT 为逻辑块地址分配64位,因此最大支持18EB的分区大小。
parted分区工具使用
parted是另一款在linux下常用的分区软件,可支持创建2T以上磁盘分区,相对于fdisk,它的使用更加方便,同时提供了动态调整分区大小的功能,命令格式如下
语法: parted [options] [ device [command [options...]...] ]其中的命令选项说明如下
-h:显示帮助信息
-i:交互模式。
-s:脚本模式。
-v:显示parted的版本信息
device: 磁盘设备名称,如/dev/sda。
comm~nd:parted指令,如果没有设置指令,则parted将会进入交互模式
[root@haojuetrace ~]# parted /dev/sdb
GNU Parted 3.4
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of
commands.
(parted) help #查看帮助信息
align-check TYPE N check
partition N for TYPE(min|opt) alignment
help [COMMAND] print
general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a
new disklabel (partition table)
mkpart PART-TYPE [FS-TYPE] START END make a
partition
name NUMBER NAME name
partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display
the partition table, available devices, free
space, all found partitions, or a particular
partition
quit exit
program
rescue START END rescue a
lost partition near START and END
resizepart NUMBER END resize
partition NUMBER
rm NUMBER delete
partition NUMBER
select DEVICE choose the
device to edit
disk_set FLAG STATE change the
FLAG on selected device
disk_toggle [FLAG] toggle the
state of FLAG on selected device
set NUMBER FLAG STATE change the
FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the
state of FLAG on partition NUMBER
unit UNIT set the
default unit to UNIT
version display
the version number and copyright information
of GNU Parted
(parted) mklabel #设置类型
New disk label type? gpt #设置类型为gpt
Warning: The existing disk label on /dev/sdb will be
destroyed and all data on this disk will be lost. Do
you want to continue?
Yes/No? yes #填yes
(parted) mkpart #创建分区
Partition name? []? #回车默认名称
File system type? [ext2]? ext4 #文件系统
Start? 0G #容量开始
End? 8G #容量结束
(parted) print #查看分区
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 8000MB 7999MB ext4
(parted) quit #退出
Information: You may need to update /etc/fstab.
parted硬盘分区操作-交互式
parted硬盘分区操作-非交互式
[root@haojuetrace ~]# parted /dev/sdc mklabel gpt
[root@haojuetrace ~]# parted /dev/sdc mkpart primary 0G 8G
fstab
/etc/fstab文件的作用
- 用来存放文件系统的静态信息的文件,统启动的时候,会自动地从这个文件读取信息,并目会自动将此文件中指定的文件系统挂载到指定的目录,这样我们只需要将磁盘的挂载信息写入这个文件中就不需要每次开机启动之后手动进行挂载了。
fstab参数解析
逻辑卷
描述
LVM-逻辑卷管理是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。
- 物理单元(PE):Physical Extents--具有唯一编号的PE是能被LVM寻址的最小单元,PE的大小可以指定,默认0为4MB。PE的大小一旦确定将不能改变,同一个卷组中的所有的物理卷的PE的大小是一致的;
- 逻辑单元(LE): Logical Extents--是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小,在同一个卷组中,LE的大小和PE是相同的,通常一一对应;
- 物理卷(PV):PhysicalVolume--底层真正提供容量,存放数据的设备,它可以是整个硬盘、硬盘上的分区等
- 卷组(VG): Volume Group--建立在物理卷之上,它由一个或多个物理卷组成,即把物理卷整合起来提供容量分配,一个LVM系统中可以只有一个卷组,也可以包含多个卷组;
- 逻辑卷 (LV): Logical Volume--逻辑卷建立在卷组之上,它是从卷组中“切出”的一块空间,它是最终用户使用的逻辑设备,逻辑卷创建之后,其大小可以伸缩。
优点
逻辑卷创建流程
逻辑卷管理-pv的使用
pvcreate命令用于创建物理卷,可以使用物理磁盘或者磁盘分区创建语法:pvcreate[选项]设备文件名
其中的命令选项说明如下:
-f: 强制创建物理卷,不需要用户确认。
-u: 指定设备的UUID。
-y:所有的问题都回答yes。
其中的参数说明如下:
·指定要创建的物理卷对应的设备文件名注:使用分区创建时,磁盘分区后的id为83,需要将id改为8e,才能创建物理卷,可用fdisk修改id
[root@haojuetrace ~]# pvcreate /dev/sdb1
查看现有的pv物理卷
[root@haojuetrace ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 openeuler lvm2 a-- <59.00g 0
/dev/sdb1 lvm2 --- <7.45g <7.45g
/dev/sdc1 lvm2 --- <7.45g <7.45g
查看pv物理卷详细信息
[root@haojuetrace ~]# pvdisplay
--- Physical volume ---
"/dev/sdb1" is a new physical volume of "<7.45 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size <7.45 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID ev214c-t8wK-Gkkj-MHUv-lRI0-Djvq-eBbEuC
"/dev/sdc1" is a new physical volume of "<7.45 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size <7.45 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID VkWw9y-jorV-yaC6-TtvT-Gs1Q-sYOe-G5H2cM
逻辑卷管理-vg的使用
vgcreate命令用于创建LVM卷组。卷组将多个物理卷组织成一个整体,屏蔽了底层物理卷细节。在卷组上创建逻辑卷时不用考虑具体的物理卷信息。
语法:vgcreate[选项]卷组名物理卷列表其中的命令选项说明如下:
-l:卷组上允许创建的最大逻辑卷数
-p:卷组中允许添加的最大物理卷数。
-s:卷组上的物理卷的PE大小。
其中的参数说明如下:
卷组名:要创建的卷组名称。
物理卷列表:要加入到卷组中的物理卷列表
[root@haojuetrace ~]# vgcreate vg1 /dev/sdb1 /dev/sdc1
查看vg卷组
[root@haojuetrace ~]# vgs
VG #PV #LV #SN Attr VSize VFree
openeuler 1 3 0 wz--n- <59.00g 0
vg1 2 0 0 wz--n- 14.89g 14.89g
查看vg卷组详细信息
[root@haojuetrace ~]# vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 14.89 GiB
PE Size 4.00 MiB
Total PE 3812
Alloc PE / Size 0 / 0
Free PE / Size 3812 / 14.89 GiB
VG UUID 1h010W-ZJaF-GJh5-yu7l-xH9n-2TTM-w1K00b
查看硬盘状态
[root@haojuetrace ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 59G 0 part
├─openeuler-root
│ 253:0 0 38.3G 0 lvm /
├─openeuler-swap
│ 253:1 0 2G 0 lvm [SWAP]
└─openeuler-home
253:2 0 18.7G 0 lvm
sdb 8:16 0 8G 0 disk
└─sdb1 8:17 0 7.4G 0 part
└─vg1-data1 253:3 0 9.8G 0 lvm
sdc 8:32 0 8G 0 disk
└─sdc1 8:33 0 7.4G 0 part
└─vg1-data1 253:3 0 9.8G 0 lvm
sr0 11:0 1 3.4G 0 rom /opt/openEuler
逻辑卷管理-lv的使用
lvcreate命令用于创建LVM的逻辑卷,逻辑卷是创建在卷组之上的。.
语法:[vcreate[选项] 逻辑卷名称
其中的命令选项说明如下:
-L:指定逻辑卷的大小,单位为“kKmMgGtT”字节。
-l:指定逻辑卷的大小(LE数)。-n:指定lv逻辑卷的名称
其中的参数说明如下:
·逻辑卷:指定要创建的逻辑卷名称
注:逻辑卷创建完成后,同样需要格式化,挂载后才能使用,方式同2.4章节介绍的方法一致,即用mkfs格式化创建文件系统,mount挂载至目录。
[root@haojuetrace ~]# lvcreate -n data1 -l 2500 vg1 #vg1是vg卷组名称
Logical volume "data1" created.
查看lv逻辑卷
[root@haojuetrace ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home openeuler -wi-a----- <18.69g
root openeuler -wi-ao---- 38.28g
swap openeuler -wi-ao---- <2.03g
data1 vg1 -wi-a----- <9.77g
查看lv逻辑卷的详细信息
[root@haojuetrace ~]# lvdisplay
逻辑卷挂载与格式化
格式化
[root@haojuetrace ~]# mkfs -t ext4 /dev/vg1/data1 #/dev/vg1/data1为lv逻辑卷路径
挂载
[root@haojuetrace ~]# mount /dev/vg1/data1 /data1/
查看挂载情况
[root@haojuetrace ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 700M 12K 700M 1% /dev
tmpfs tmpfs 287M 8.0M 279M 3% /run
tmpfs tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/mapper/openeuler-root ext4 38G 2.8G 33G 8% /
/dev/sr0 iso9660 3.4G 3.4G 0 100% /opt/openEuler
/dev/mapper/vg1-data1 ext4 9.6G 24K 9.1G 1% /data1
查看磁盘状态
[root@haojuetrace ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 59G 0 part
├─openeuler-root
│ 253:0 0 38.3G 0 lvm /
├─openeuler-swap
│ 253:1 0 2G 0 lvm [SWAP]
└─openeuler-home
253:2 0 18.7G 0 lvm
sdb 8:16 0 8G 0 disk
└─sdb1 8:17 0 7.4G 0 part
└─vg1-data1 253:3 0 9.8G 0 lvm /data1
sdc 8:32 0 8G 0 disk
└─sdc1 8:33 0 7.4G 0 part
└─vg1-data1 253:3 0 9.8G 0 lvm /data1
sr0 11:0 1 3.4G 0 rom /opt/openEu
逻辑卷缩扩-lvextend
扩容的逻辑卷不能被挂载,如已经挂载需先卸载
扩容和缩小一般不会影响到原来的数据
扩容
lvextend
#3000是扩容后的pe数量 /dev/vg1/data1是要扩容的lv逻辑卷
[root@haojuetrace ~]# lvextend -l 3000 /dev/vg1/data1
Size of logical volume vg1/data1 changed from <9.77 GiB (2500 extents) to <11.72 GiB (3000 extents).
Logical volume vg1/data1 successfully resized.
e2fsck检查卷是否有问题
[root@haojuetrace ~]# e2fsck -f /dev/vg1/data1
resize2fs 更新容量
[root@haojuetrace ~]# resize2fs /dev/vg1/data1
缩容
e2fsck检查卷是否有问题
[root@haojuetrace ~]# e2fsck /dev/vg1/data1
resize2fs 通知文件系统要缩容
[root@haojuetrace ~]# resize2fs /dev/vg1/data1 8G
lvreduce
[root@haojuetrace ~]# lvreduce -L 8G /dev/vg1/data1
WARNING: Reducing active logical volume to 8.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/data1? [y/n]: y #统一缩容
Size of logical volume vg1/data1 changed from <11.72 GiB (3000 extents) to 8.00 GiB (2048 extents).
Logical volume vg1/data1 successfully resized.
vg卷组缩扩-lvextend
扩大vg卷组
lvextend vg1 /dev/sde1
缩小vg卷组
lvreduce /dev/sdb1 vg1 #/dev/sdb1 要卸载的pv #要缩容的vg卷组
逻辑卷快照
打快照
#10G容量必须和打快照的lv容量一样
#-s 给lv打快照
#/dev/vg1/data1 需要打快照的lv逻辑卷
lvcreate -L 10G -s -n snap /dev/vg1/data1
还原
#/dev/vg1/snap 之前打的快照逻辑卷
lvconvert --merge /dev/vg1/snap
任务管理
任务管理类型
- 计划执行,在特定时间运行一次:at
- 定期执行,按周期执行多次:cron
计划执行 at
at命令可以指定Linux在特定时刻运行脚本
atd是at的守护进程,在系统启动时就会以后台模式运行atd 进程会定期检查系统上的/var/spool/at 目录,获取通过at 命令写入的任务
**at 命令语法
- at[-V] [-q 队列] [-f 文件名] [-mldbv] 时间
- at -c 作业[作业...]
- atlq 查看现有的任务
at -f test.sh now+1 min #一分钟后执行test.sh这个脚本
at -f test.sh 2022-11-07 #在2022-11-07执行test.sh这个脚本
- at允许使用一套相当复杂的时间指定方法:
- 接受在当天的 hh:mm(小时:分钟)式的时间指定;如果该时间已经过去,那么就放存5第二天执行
- 使用 midnight(深夜)、noon(中午)、teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间
- 采用12小时计时制,即在时间后面加上AM或者PM来说明是上午还是下午指定命令执行的具体日期,
- 指定格式为month day(月日)或者mm/dd/yy (月/日/年)或者dd.mm.yy(日月年);指定的日期必须跟在指定时间的后面
- 使用相对计时法,对于安排不久后就要执行的命令较为方便:
- 指定格式为 now+count time-units,now就是当前时间,time-units 是时间单位,这里可以是minutes(分钟)、hours(小时)、days(天)、weeks(星期)
- count 是时间的数量,究竟是几天,还是几小时等;还有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间
周期性计划执行 cron
corntab 命令
crontab 命令用于安装、删除或者显示用于驱动cron 后台进程的表格用户把需要执行的命令序列放到 crontab 文件中以获得执行,而且每个用户都可以有自己的crontab 文件
crontab 常用命令:
crontab -u //设置某个用户的cron服务,root用户在执行crontab时需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除某个用户的cron服务
crontab~e//编辑某个用户的cron服务
编辑配置文件
cron 服务每分钟不仅要读一次 /var/spool/cron 内的所有文件,还需要读一次/etc/crontab使用crontab配置是针对某个用户的,而编辑/etc/crontab 是针对系统的任务
此文件的文件格式如下:
进程管理
介绍
每个进程都有一个唯一的进程ID(PID),用于追踪该进程
任何进程都可以通过复制自己地址空间的方式(fork)创建子进程,子进程中记录着父进程的ID(PPID)
第一个系统进程是systemd,其他所有进程都是其后代。
进程的状态
进程的优先级
进程的 CPU 资源(时间片)分配就是指进程的优先级(priority );
优先级高的进程有优先执行权利;
配置进程的优先级对多任务环境下的 Linux很有用,可以改善系统性能
- PRI,即进程的优先级,表示程序被CPU执行的先后顺序,值越小进程的优先级别越PRL,高
- NI,即 nice 值,表示进程可被执行的优先级的修正数值,可理解为“谦让度”进程的 nice 值不是进程的优先级,但是可以通过调整 nice 值可以影响进程的优先值
调整优先级
openEuler 中使用 nice 和 renice 调整进程的 nice 值,进而影响进程优先级 nice 命令语法,优先序(adjustment 取值范围 -19 ~ 20):
nice [-n adjustment] [command [arg...]]
例如,将 vi 运行的优先级设置为 -18:
nice -n -18 vi &
renice 命令语法,优先序范围同 nice,作用对象有程序群组 -g、进程 -p、用户-u,语法格式:
renice [-n adjustment] [-] <pid>
例如,将vi 运行的优先级设置为 10:
renice -n 12 -p 97009700(process ID) old priority -18, new priority 12
控制前台和后台
opneEuler 中常用以下命令管理进程,包括前后台切换及启停:
&:
将& 放在命令的最后,可以把这个命令放到后台执行Ctrl + z:
当前台正在执行一个命令时,按键 Ctrl + z,将其放到后台并暂停Ctrl+c:
中断当前正在执行的命令jobs:
查看当前有多少正在后台运行的命令fg:
将后台中的命令调至前台继续运行bg:
将后台任务唤醒,并在后台运行
查看进程- ps、top
- ps 命令可以显示当前进程,并列出详细的进程信息,字段含义如下表
- 常用psaux或ps-ef 查看进程信息
- ps 命令用于显示特定时间点的进程信息,top 命令可以实时显示进程信息
管理进程- 信号
openEuler 中,进程之间通过信号来通信,常见信号见表格
进程的信号是预定义好的一个消息,进程能识别它并决定是忽略还是做出反应系统管理员需要知道如何向一个进程发送何种信号,以管理进程。
kill -s HUP httpd #将httpd进程挂起
killall httpd #将httpd进程结束
killall -u root #定义用户名的所有进程
文章评论