赞
踩
本内容多数都是以命令为主,了解命令的作用、相关参数以及使用方式,不会过多的对命令进行解释,尤其用户及文件管理、硬盘管理,因为像这个几方面最好去看视频或者书上的讲解,命令更多是如何使用并非是原理。
觉得不错的话就请点点关注、点点赞以及收藏吧,感谢!!!
参考链接:linux就该怎么学
参考链接:linux命令大全
命令名称 命令参数 命令对象
命令名称:是想要执行的命令,如创建用户、查看文件等。
命令参数:通过添加相关参数能够更好的执行到想要的结果。
命令对象:是指所需要处理的文件、目录等。
注意点:在Linux中命令名称、命令参数与命令对象之间要使用空格进行分隔,并且要严格区分大小写。
2.2.1.1.命令解释
通过man命令来查看man自身的一个帮助信息。
语法:[root@localhost ~]# man man
2.2.1.2.man命令常用按键及作用
空格键:向下翻一页
PaGe down:向下翻一页
PaGe up:向上翻一页
home:直接前往首页
end:直接前往尾页
/:从上至下搜索某个关键词
?:从下至上搜索某个关键词
n:定位到下一个搜索到的关键词
N:定位到上一个搜索到的关键词
q:退出帮助文档
2.2.1.3.man命令中帮助信息
NAME:命令的名称
SYNOPSIS:参数的大致使用方法
DESCRIPTION:介绍说明
EXAMPLES:演示(附带简单说明)
OVERVIEW:概述
DEFAULTS:默认的功能
OPTIONS:具体的可用选项(带介绍)
ENVIRONMENT:环境变量
FILES:用到的文件
SEE ALSO:相关的资料
HISTORY:维护历史与联系方式
2.3.1.1.Tab键解释
tab键它可以实现对命令、参数或者文件名称等内容进行补齐。例如:想执行reboot重启命令,但是只记得前面两个字母re,那么就可以使用tab键进行补齐。
命令:[root@localhost ~]# re<tab键><tab键>
在操作中会发现按一个tab键却无法弹出,是由于在Linux系统中并非只有一个re开头的命令,所以需要按两个tab键。但是按两个tab键并不会之间补全,只是会显示所有re开头的命令。所以需要在显示内容中寻找reboot命令。
2.3.2.1.Ctrl+c组合键解释
当同时按下键盘上的Ctrl和字母c的时候,就可以结束当前的进程执行,并且若存在执行命令长时间无法结束,就可以使用该组合键,使其提前结束命令的执行。
命令:[root@localhost ~]# top
这个命令类似于windows中任务管理器,会实时刷新,这时就可以使用该组合键退出。
2.3.3.1.Ctrl+l组合键
Ctrl+l组合键:当同时按下键盘上的Ctrl和字母l的时候,会清空当前终端中已有的内容(相当于清屏操作)。
systemctl start httpd 启动服务
systemctl restart httpd 重启服务
systemctl stop httpd 停止服务
systemctl reload httpd 重新加载配置文件(不终止服务)
systemctl status httpd 查看服务状态
systemctl enable httpd 开机自动启动
systemctl disable httpd 开机不自动启动
date是用于显示和查看时间与日期的命令。
语法:date “+指定日期格式”
%S:秒(00~59)
%M:分钟(00~59)
%H:小时(00~23)
%I:小时(00~12)
%m:月份(1~12)
%p:显示出AM或PM
%a:缩写的工作日名称(例如:Sun)
%A:完整的工作日名称(例如:Sunday)
%b:缩写的月份名称(例如:Jan)
%B:完整的月份名称(例如:January)
%q:季度(1~4)
%y:简写年份(例如:20)
%Y:完整年份(例如:2020)
%d:本月中的第几天
%j:今年中的第几天
%n:换行符(相当于按下回车键)
%t:跳格(相当于按下Tab键)
3.1.3.1.查看当前系统时间
[root@localhost ~]# date
Fri Nov 4 17:19:45 CST 2022
3.1.3.2.按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间
[root@localhost ~]# date "+%Y-%m-%d %H:%M:%S"
2022-11-04 17:20:35
3.1.3.3.设置当前系统时间为2022年9月17日13点14分
[root@localhost ~]# date -s "20220917 13:14:00"
Sat Sep 17 13:14:00 CST 2022
[root@localhost ~]# date
Sat Sep 17 13:14:03 CST 2022
3.1.3.4.查看今天是当年的第几天
[root@localhost ~]# date "+%j"
260
reboot是用于重启系统的命令
语法:[root@localhost ~]# reboot
ps命令是用于查看系统中进程的状态。
语法:[root@localhost ~]# ps “参数”
-a:显示所有进程(包括其他用户的进程)
-u:用户以及其他详细信息
-x:显示没有控制终端的进程
3.3.3.进程状态
R(运行):进程正在运行或在运行队列中等待。
S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。
D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。
Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
T(停止):进程收到停止信号后停止运行。
top命令用于动态地监视进程活动及系统负载等信息。
语法:[root@localhost ~]# top
第1行:系统时间、运行时间、登录终端数、系统负载(3个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“99.9 id”意味着有99.9%的CPU处理器资源处于空闲。
第4行:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量。
第5行:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量。
nice是用于调整进程的优先级。
语法:[root@localhost ~]# nice“数值”“进程名称”
-20~19:数字越低,优先级越高
pidof命令用于查询某个指定服务进程的PID号码值。
语法:[root@localhost ~]# pidof “参数” “进程名称”
3.6.2.1.查询ssh的pid值
[root@localhost ~]# pidof sshd
2833 1088
kill是用于终止某一个指定pid值的服务进程。
语法:[root@localhost ~]# kill “pid值”
3.7.2.1.终止某一个进程
[root@localhost ~]# kill 2833
3.7.2.2.强制终止某一个进程,-9代表最高级别的杀死进程
[root@localhost ~]# kill -9 2833
3.8.killall 终止某个服务名称所有进程命令
killall命令用于终止某个指定名称的服务所对应的全部进程,由于某些复杂的软件会需要多个进程共同协助,才能够执行,所以若使用kill一个一个pid去终止会比较麻烦,而使用killall就比较方便了。
语法:[root@localhost ~]# killall “参数” “服务名称”
3.8.2.1.终止http服务
[root@localhost ~]# pidof httpd
13581 13580 13579 13578 13577 13576
[root@localhost ~]# killall httpd
[root@localhost ~]# pidof httpd
[root@localhost ~]#
ifconfig命令是用于获取网卡配置及网络状态等信息。
语法:[root@localhost ~]# ifconfig “参数” “网卡名称”
网卡名称,inet后面是ip地址,ether后面的物理地址(mac地址),以及rx,tx的接收数据与发送数据报的个数以及累计流量。
uname命令是用于查看系统架构及内核版本等信息的命令。
语法:[root@localhost ~]# uname -a
-a:完整的查看当前系统的内核名称,主机名,内核发行版本,节点名等信息。
uptime命令用于查看系统的负载信息,它可以显示当前系统的时间,系统已运行时间,启动终端的数量以及平均负载值。
平均负载值是指系统最近1分钟、5分钟、15分钟内的压力情况,当然负载值越低越好。
语法:[root@localhost ~]# uptime
4.3.2.1.显示系统负载信息
[root@localhost ~]# uptime
18:25:41 up 59 min, 2 users, load average: 0.02, 0.03, 0.05
free是用于显示内存使用的情况信息,-h能够更好的显示内存的实时使用量。
语法:free -h
4.4.2.1.显示内存使用量
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 469M 953M 16M 395M 1.2G
Swap: 2.0G 0B 2.0G
默认是以KB为单位,加上-h后更有利于阅读。
who可以快速的显示当前所有登陆本机的用户名称以及开启的终端信息,当然如果有远程登录的话,还可以显示远程登录的IP地址。
4.5.2.1.显示当前登录的主机信息
[root@localhost ~]# who
root pts/0 2022-12-03 03:16 (192.168.10.1)
Linux系统会将登录主机的信息都记录在日志中,而我们去查找的时候有时候比较繁琐,而输入last后就可以直接显示出来。
4.6.2.1.显示历史登录记录
[root@localhost ~]# last
root pts/0 192.168.10.1 Sat Dec 3 03:16 still logged in
reboot system boot 3.10.0-1160.80.1 Sat Dec 3 03:15 - 03:29 (00:13)
wtmp begins Tue Aug 23 23:59:39 2022
ping可以用于测试主机的连通性。
语法:ping [参数] 主机地址
-c 总共发送次数
-l 指定网卡名称
-i 每次间隔时间(秒)
-W 最长等待时间(秒)
想必ping都比较了解就不进行案例测试了。
tracepath命令用于显示数据包到达目的主机时途中经过的所有路由信息,当两台主机无法互相ping通就需要使用到了。
4.8.2.1.追踪IP地址为8.8.8.8
[root@localhost ~]# tracepath 8.8.8.8
1?: [LOCALHOST] pmtu 1500
1: gateway 0.304ms
1: gateway 0.159ms
2: no reply
3: no reply
netstat命令用于显示如网络连接、路由表、接口状态等的网络相关信息,英文全称为“network status”。
语法:netstat [参数]
-a 显示所有连接中的Socket
-p 显示正在使用的Socket信息
-t 显示TCP协议的连接状态
-u 显示UDP协议的连接状态
-n 使用IP地址,不使用域名
-l 仅列出正在监听的服务状态
-i 显示网卡列表信息
-r 显示路由表信息
4.9.3.1.使用netstat命令显示详细的网络状况
4.9.3.2.使用netstat命令显示网卡列表
history命令用于显示执行过的命令历史,命令历史记录最多显示1000条,当然也可以自定义/etc/profile文件中的HISTSIZE变量值。
语法:history [参数]
-c 清除命令历史记录
4.10.3.1.显示历史命令
4.10.3.2.清除历史命令记录
pwd命令用于显示用户当前所处的工作目录。
5.1.2.1.查看当前工作目录
[root@localhost ~]# pwd
/root
cd命令用于切换当前的工作路径。
语法:cd [参数] [目录]
cd - 命令返回到上一次所处的目录
cd.. 命令进入上级目录
cd~ 命令切换到当前用户的家目录
5.2.3.1.切换至etc下
[root@localhost ~]# cd /etc
[root@localhost etc]#
5.2.3.2.切换回家目录
[root@localhost etc]# cd ~
[root@localhost ~]#
ls命令用于显示目录中的文件信息。
语法:ls [参数] [文件名称]
-a参数可以看到全部文件(包括隐藏文件)
-l参数可以查看文件的属性、大小等详细信息
-d参数看目录属性信息
5.3.3.1.查看全部文件
5.3.3.2.查看文件的属性、大小等详细信息
find命令用于按照指定条件来查找文件所对应的位置。
语法:find [查找范围] 寻找条件
-name 匹配名称
-perm 匹配权限(mode为完全匹配,-mode为包含即可)
-user 匹配所有者
-group 匹配所有组
-mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n 匹配访问文件的时间(-n指n天以内,+n指n天以前)
-ctime -n +n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
-nouser 匹配无所有者的文件
-nogroup 匹配无所有组的文件
-newer f1 !f2 匹配比文件f1新但比f2旧的文件
-type b/d/c/p/l/f 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-size 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
-prune 忽略某个目录
5.4.3.1.获取该目录中所有以host开头的文件列表
[root@localhost ~]# find /etc -name "host*" -print
/etc/host.conf
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/selinux/targeted/active/modules/100/hostname
/etc/avahi/hosts
/etc/hostname
5.4.3.2.搜索权限中包括SUID权限的所有文件,只需使用-4000即可
locate命令用于按照名称快速搜索文件所对应的位置。
语法:locate文件名称
第一次使用locate命令之前,记得先执行updatedb命令来生成索引数据库,然后再进行查找。
[root@localhost ~]# updatedb
[root@localhost ~]# ls -l /var/lib/mlocate/mlocate.db
-rw-r-----. 1 root slocate 3621805 Dec 3 04:19 /var/lib/mlocate/mlocate.db
5.5.2.1.locate命令搜索出所有包含“whereis”名称的文件所在的位置
cat命令用于查看纯文本文件,使用查看内容较少的文件。
语法:cat [参数] 文件名称
-n 显示行数
6.1.3.1.查看某个文件并显示行数
more命令用于查看纯文本文件适用于内容较多的文件。more命令会在最下面使用百分比的形式来提示您已经阅读了多少内容;还可以使用空格键或回车键向下翻页。
语法:more [参数] 文件名称
6.2.2.1.查看某个文件
head命令用于查看纯文本文件的前N行。
语法:head [参数] 文件名称
6.3.2.1.显示前十行内容
[root@localhost ~]# head -n 10 anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
tail命令用于查看纯文本文件的后N行,当然还可以实时刷新文件最新的内容。
语法:tail [参数] 文件名称
-n 显示最后X行内容
-f 实时刷新最新内容
6.4.3.1.显示文件后10行
[root@localhost ~]# tail -n 5 anaconda-ks.cfg
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
tr命令用于替换文本内容中的字符。
语法:tr [原始字符] [目标字符]
6.5.2.1.将文件中所有小写替换为大写显示
wc命令用于统计指定文本文件的行数、字数或字节数。
语法:wc [参数] 文件名称
-l 只显示行数
-w 只显示单词数
-c 只显示字节数
6.6.3.1.统计某个文件的行数
[root@localhost ~]# wc -l anaconda-ks.cfg
63 anaconda-ks.cfg
grep命令是用途最广泛的文本搜索匹配工具。
语法:grep [参数] 文件名称
-b 将可执行文件(binary)当作文本文件(text)来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择——仅列出没有“关键词”的行。
6.7.3.1.查找匹配项
/etc/passwd文件保存着所有的用户信息,而一旦用户的登录终端被设置成/sbin/nologin,则不再允许登录系统,因此可以使用grep命令查找出当前系统中不允许登录系统的所有用户的信息
cut命令用于按“列”提取文本内容。
语法:cut [参数] 文件名称
如果按“列”搜索,不仅要使用-f参数设置需要查看的列数,还需要使用-d参数来设置间隔符号。
6.8.2.1.提前用户信息
[root@localhost ~]# cut -d : -f 1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
uniq命令用于去除文本中连续的重复行。
语法:uniq [参数] 文件名称
6.9.2.1.去除文件中的重复项
[root@localhost ~]# cat 1.txt
123456
123456
qwer
qwer
[root@localhost ~]# uniq 1.txt
123456
qwer
sort命令用于对文本内容进行再排序。
语法:sort [参数] 文件名称
-f 忽略大小写
-b 忽略缩进与空格
-n 以数值型排序
-r 反向排序
-u 去除重复行
-t 指定间隔符
-k 设置字段范围
6.10.3.1.默认排序
使用命令后会默认按照字母进行排序
root@localhost ~]# sort 1.txt
123456
123456
aaa
bbbb
gggg
qwer
qwer
rffff
touch命令用于创建空白文件,同时可以设置文件的时间。
语法:touch [参数] 文件名称
-a 仅修改“读取时间”(atime)
-m 仅修改“修改时间”(mtime)
-d 同时修改atime与mtime
7.1.3.1.创建一个空白目录
[root@localhost ~]# touch 2.txt
[root@localhost ~]# ls
2.txt
mkdir命令用于创建空白的目录。
语法:mkdir [参数] 目录名称
-p 创建父子目录
7.2.3.1.创建一个空白目录
[root@localhost ~]# mkdir 1
[root@localhost ~]# ls
1
7.2.3.2.创建一个连续目录
[root@localhost kk]# mkdir -p 1/2
[root@localhost kk]# ls
1
[root@localhost kk]# cd 1
[root@localhost kk]# ls
2
cp命令用于复制文件或目录。
在使用cp命令的时需要注意一下三种情况。
如果目标文件是目录,则会把源文件复制到该目录中;
如果目标文件也是普通文件,则会询问是否要覆盖它;
如果目标文件不存在,则执行正常的复制操作。
语法:cp [参数] 源文件名称 目标文件名称
-p 保留原始文件的属性
-d 若对象为“链接文件”,则保留该“链接文件”的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr(p、d、r为上述参数)
7.3.3.1.复制一份文件作为备份文件
[root@localhost ~]# cp 2.txt 3.txt
[root@localhost ~]# ls
2.txt 3.txt
7.3.3.2.复制一个目录
[root@localhost ~]# cp -r 1 3
[root@localhost ~]# ls
1 3
剪切操作不同于复制操作,因为它默认会把源文件删除,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录下。
语法:mv [参数] 源文件名称 目标文件名称
7.4.2.1.对文件进行改名
[root@localhost 1]# mv 1.txt 3.txt
[root@localhost 1]# ls
3.txt
7.4.2.2.对目录进行改名
[root@localhost 1]# mv 12 34
[root@localhost 1]# ls
34
rm命令用于删除文件或目录。
语法:rm [参数] 文件 名称
-f 强制执行
-i 删除前询问
-r 删除目录
-v 显示过程
7.5.3.1.删除一个文件
[root@localhost ~]# rm 2.txt
rm: remove regular empty file ‘2.txt’? y
7.5.3.2.强制删除一个文件
[root@localhost ~]# rm -f 3.txt
file命令用于查看文件的类型。
语法:file文件名称
7.6.2.1.查看一个文件的类型
[root@localhost ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
tar命令用于对文件进行打包压缩或解压。其中-c参数用于创建压缩文件,-x参数用于解压文件,因此这两个参数不能同时使用。其次,-z参数指定使用gzip格式来压缩或解压文件,-j参数指定使用bzip2格式来压缩或解压文件。
语法:tar参数 文件名称
-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有哪些文件
-z 用Gzip压缩或解压
-j 用bzip2压缩或解压
-v 显示压缩或解压的过程
-f 目标文件名
-p 保留原始的权限与属性
-P 使用绝对路径来压缩
-C 指定解压到的目录
7.7.3.1.将指定文件进行打包压缩
[root@localhost ~]# tar czvf etc.tar.gz /etc
tar: Removing leading `/' from member names
/etc/
/etc/fstab
/etc/crypttab
/etc/mtab
/etc/fonts/
/etc/fonts/conf.d/
7.7.3.2.将指定文件进行解压
[root@localhost ~]# tar xzvf etc.tar.gz -C /root/etc
etc/
etc/fstab
etc/crypttab
etc/mtab
etc/fonts/
etc/fonts/conf.d/
etc/fonts/conf.d/65-0-madan.conf
Vim编辑器中设置了3种模式—命令模式、末行模式和编辑模式,每种模式分别又支持多种不同的命令快捷键。
命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。
输入模式:正常的文本录入。
末行模式:保存或退出文档,以及设置编辑环境。
在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编写工作。而每次在编写完文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。
dd 删除(剪切)光标所在整行
5dd 删除(剪切)从光标处开始的5行
yy 复制光标所在整行
5yy 复制从光标处开始的5行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步的操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面
:w 保存
:q 退出
:q! 强制退出(放弃对文档的修改内容)
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令 执行该命令
:整数 跳转到该行
:s/one/two 将当前光标所在行的第一个one替换成two
:s/one/two/g 将当前光标所在行的所有one替换成two
:%s/one/two/g 将全文中的所有one替换成two
?字符串 在文本中从下至上搜索该字符串
/字符串 在文本中从上至下搜索该字符串
8.2.3.1.使用vim打开一个文件
[root@localhost ~]# vim 2.txt
8.2.3.2.进入输入模式
在我们进入2.txt文档的时候我们默认是命令模式,我们需要输入i、o、a来进入输入模式,当然我通常需要使用i来进入输入模式。可以看到图片的左下角有提示已经进入输入模式。
8.2.3.3.输入试试
在我们进入输入模式后,可以尝试随便输入点什么内容。
8.2.3.4.退出并保存文件
在我们输入完成后可以使用ESC键退出输入模式进入末行模式,然后在输入:wq!进行文件的保存并退出。当然:wq!是强制退出并保存的意思。通常来说使用:wq就欧克了。
8.2.3.5.查看保存的文件
所谓的输入输出重定向就是,输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。
输入重定向这里就不做案例演示了,由于在日常使用中,可以说是基本上很少用到,有兴趣的可以去自己操作一下。
命令 < 文件 将文件作为命令的标准输入
命令 << 分界符 从标准输入中读入,直到遇见分界符才停止
命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2
命令 > 文件 将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1
或
命令 &>> 文件 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
9.1.4.1.将文件的输出信息输出到文件中
9.1.4.2.将输出的内容追加到文件中
管道符就是“|”,意思也就是把前一个命令原本要输出到屏幕的信息当作后一个命令的标准输入。
语法:命令A | 命令B
9.2.2.1.查找被限制登录的用户
这里需要使用到grep /sbin/nologin /etc/passwd来查找那些用户被显示,然后我们使用wc -l进行统计一下数量。
[root@localhost ~]# grep /sbin/nologin /etc/passwd | wc -l
39
9.2.2.2.查看etc目录并能够进行翻页查看
想必在日常对linux运维过程中,可能会存在当查看linux中某给文件的时候可能会忘记文件名字叫什么,只能想起部分,那么这里就可以使用到通配符进行操作。
* 任意字符
? 单个任意字符
[a-z] 单个小写字母
[A-Z] 单个大写字母
[a-Z] 单个字母
[0-9] 单个数字
[[:alpha:]] 任意字母
[[:upper:]] 任意大写字母
[[:lower:]] 任意小写字母
[[:digit:]] 所有数字
[[:alnum:]] 任意字母加数字
[[:punct:]] 标点符号
9.3.3.1.匹配dev下的所有以sda开头的文件
[root@localhost ~]# ls -l /dev/sda*
brw-rw----. 1 root disk 8, 0 Dec 3 03:15 /dev/sda
brw-rw----. 1 root disk 8, 1 Dec 3 03:15 /dev/sda1
brw-rw----. 1 root disk 8, 2 Dec 3 03:15 /dev/sda2
#9.3.3.2.匹配dev下面以sda结尾是135的文件
[root@localhost ~]# ls -l /dev/sda[135]
brw-rw----. 1 root disk 8, 1 Dec 3 03:15 /dev/sda1
9.3.3.3.匹配etc下以.conf结尾的文件
通配符不单单可以在结尾使用也可以在开头使用。
id命令用于显示用户的详细信息。
语法:id用户名
10.1.2.1.查看root用户详细信息
[root@localhost ~]# id root
uid=0(root) gid=0(root) groups=0(root)
可以使用useradd命令创建用户账户。使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组
-d 指定用户的家目录(默认为/home/username)
-e 账户的到期时间,格式为YYYY-MM-DD.
-u 指定该用户的默认UID
-g 指定一个初始的用户基本组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定该用户的默认Shell解释器
10.2.3.1.创建一个用户为linux
[root@localhost ~]# useradd linux
为了能够更加高效地指派系统中各个用户的权限,在工作中常常会把几个用户加入到同一个组里面,这样便可以针对一类用户统一安排权限。
10.3.2.1.创建一个linux2的用户组
[root@localhost ~]# groupadd linux2
usermod命令修改已经创建的用户信息,比如用户的UID、基本/扩展用户组、默认终端等。
-c 填写用户账户的备注信息
-d -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e 账户的到期时间,格式为YYYY-MM-DD
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定用户禁止其登录系统
-U 解锁用户,允许其登录系统
-s 变更默认终端
-u 修改用户的UID
10.4.3.1.将linux用户加入root用户组中
[root@localhost ~]# usermod -G root linux
[root@localhost ~]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux),0(root)
10.4.3.2.修改linux用户的uid号
[root@localhost ~]# usermod -u 8888 linux
[root@localhost ~]# id linux
uid=8888(linux) gid=1001(linux) groups=1001(linux),0(root)
普通用户只能使用passwd命令修改自己的系统密码,而root管理员则有权限修改其他所有人的密码,并且root用户修改他人的密码的时候不需要验证旧密码。
-l 锁定用户,禁止其登录
-u 解除锁定,允许用户登录
--stdin 允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username
-d 使该用户可用空密码登录系统
-e 强制用户在下次登录时修改密码
-S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
10.5.3.1.修改linux用户的密码
[root@localhost ~]# passwd linux
Changing password for user linux.
New password: #输入密码
Retype new password: #再次输入密码
passwd: all authentication tokens updated successfully.
10.5.3.2.禁止linux用户登录
[root@localhost ~]# passwd -l linux
Locking password for user linux.
passwd: Success
[root@localhost ~]# passwd -S linux
linux LK 2022-12-03 0 99999 7 -1 (Password locked.)
如果确认某位用户后续不会再登录到系统中,则可以通过userdel命令删除该用户的所有信息。
-f 强制删除用户
-r 同时删除用户及用户家目录
10.6.3.1.删除linux用户
[root@localhost ~]# userdel linux
如果要删除一个已有的用户组,使用groupdel命令
语法:groupdel 用户组
10.7.2.1.删除某个用户组
[root@localhost ~]# groupdel linux2
修改用户组的属性使用groupmod命令。
语法:groupmod 选项 用户组
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字
在linux中每个文件都有所属组和所有者,并且规定了文件的所有者、所属组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。
对于目录文件来说,“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;而“可执行”则表示能够进入该目录。
参考连接:菜鸟教程linux
文件的可读、可写、可执行权限的英文全称分别是read、write、execute,可以简写为r、w、x,亦可分别用数字4、2、1来表示。
文件权限计算是基于rwx来进行计算的,例如一个文件的权限是7则为可读可写可执行,相当于是4+2+1。若一个文件是权限是6则是可读可写不可执行,相当于是4+2。一个文件权限可分为所属人所属组其他人,可以所属组可读写,其他人可读,那么这个文件权限就是rwxrw-r–,数字则为764。但764不能相加哦,而减号为占位符,也就是说rw-就是420。
chmod命令是控制用户对文件的权限的命令。
语法:chmod [参数] [权限] 文件名
u 表示所属人,g 表示所属组,o 表示其他人,a 表示前三者。
+ 为指定的用户类型增加权限
- 去除指定用户类型的权限
= 设置指定用户权限的设置,即将用户类型的所有权限重新设置
r 读 设置为可读权限
w 写 设置为可写权限
x 执行权限 设置为可执行权限
X 特殊执行权限 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
s setuid/gid 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
t 粘贴位 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位
数字表示:
11.4.3.1.将3.txt文档设为所有人皆可读取
1)第一种方式
[root@localhost ~]# chmod ugo+r 3.txt
2)第二种方式
[root@localhost ~]# chmod a+r 3.txt
11.4.3.2.将3.txt文件拥有者,与其所属组可写入,但其他以外的人则不可写入
[root@localhost ~]# chmod ug+w,o-w 3.txt
[root@localhost ~]# ls -l 3.txt
-rw-rw-r--. 1 root root 1011 Dec 3 12:35 3.txt
11.4.3.3.将3.txt所属者、所属组以及其他人拥有读写执行权限
[root@localhost ~]# chmod 777 3.txt
[root@localhost ~]# ls -l 3.txt
-rwxrwxrwx. 1 root root 1011 Dec 3 12:35 3.txt
df命令检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:df [-ahikHTm] [目录或文件名]
-a 列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k 以 KBytes 的容量显示各文件系统;
-m 以 MBytes 的容量显示各文件系统;
-h 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H 以 M=1000K 取代 M=1024K 的进位方式;
-T 显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i 不用硬盘容量,而以 inode 的数量来显示
12.1.3.1.将系统内所有的文件系统列出来
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 914424 0 914424 0% /dev
tmpfs 931396 0 931396 0% /dev/shm
tmpfs 931396 10456 920940 2% /run
tmpfs 931396 0 931396 0% /sys/fs/cgroup
/dev/mapper/centos-root 17811456 5496720 12314736 31% /
/dev/sda1 1038336 244816 793520 24% /boot
tmpfs 186280 12 186268 1% /run/user/42
tmpfs 186280 0 186280 0% /run/user/0
12.1.3.2.将容量结果以易读的容量格式显示出来
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 893M 0 893M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 5.3G 12G 31% /
/dev/sda1 1014M 240M 775M 24% /boot
tmpfs 182M 12K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
12.1.3.3.将 /etc 底下的可用的磁盘容量以易读的容量格式显示
[root@localhost ~]# df -h /etc
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 5.3G 12G 31% /
du 命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。
-a 列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h 以人们较易读的容量格式 (G/M) 显示;
-s 列出总量而已,而不列出每个各别的目录占用容量;
-S 不包括子目录下的总计,与 -s 有点差别。
-k 以 KBytes 列出容量显示;
-m 以 MBytes 列出容量显示
12.2.3.1.列出当前目录下的所有文件夹容量
[root@localhost ~]#du
136 ./vulhub/vulhub/yapi/mongodb-inj
132 ./vulhub/vulhub/yapi/unacc
268 ./vulhub/vulhub/yapi
3012 ./vulhub/vulhub/zabbix/CVE-2016-10134/database
3136 ./vulhub/vulhub/zabbix/CVE-2016-10134
如果系统中硬盘特别多,分区特别多,我们都不知道它们是否有被使用,又或者是做了些什么。此时,就可以用lsblk命令以树状图的形式列举一下了。
12.3.2.1.查看挂载磁盘
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.4G 0 rom
fdisk主要是用于磁盘分区操作工具,具体的磁盘管理原理还请查看相关的的文档书籍或者前言中提到的书籍。
参数链接:磁盘管理原理
语法:fdisk [-l] 磁盘名称
-l 输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
12.4.2.1.fdisk中命令参数
m 查看全部可用的参数
n 添加新的分区
d 删除某个分区信息
l 列出所有可用的分区类型
t 改变某个分区的类型
p 查看分区表信息
w 保存并退出
q 不保存直接退出
12.4.3.1.列出所有分区信息
12.4.3.2.分区实战
1)提前在虚拟机上安装一块硬盘,至于怎么添加和创建的时候差不多。可以看到我这边已经有一个sdb硬盘了。
2)接下来就对这快硬盘进行操作,在看到提示信息后输入参数p来查看硬盘设备内已有的分区信息,其中包括了硬盘的容量大小、扇区个数等信息。
3)输入参数n尝试添加新的分区。系统会要求用户是选择继续输入参数p来创建主分区,还是输入参数e来创建扩展分区。这里输入参数p来创建一个主分区。
4)在确认创建一个主分区后,系统要求用户先输入主分区的编号。在前文得知,主分区的编号范围是1~4,因此这里输入默认的1就可以了。接下来系统会提示定义起始的扇区位置,这不需要改动,敲击回车键保留默认设置即可,系统会自动计算出最靠前的空闲扇区的位置。最后,系统会要求定义分区的结束扇区位置,这其实就是要去定义整个分区的大小是多少。我们不用去计算扇区的个数,只需要输入+2G即可创建出一个容量为2GB的硬盘分区。
5)再次使用参数p来查看硬盘设备中的分区信息。果然就能看到一个名称为/dev/sdb1、起始扇区位置为2048、结束扇区位置为4196351的主分区了。这时千万不要直接关闭窗口,而应该敲击参数w后按回车键,这样分区信息才是真正地写入成功啦。
6)最后我们通过lsblk看一下这块添加的硬盘。
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
└─sdb1 8:17 0 2G 0 part
sr0 11:0 1 4.4G 0 rom
mkswap命令用于对新设备进行交换分区格式化。
语法:mkswap设备名称
12.5.2.1.对新的交换分区进行格式化
[root@localhost ~]# mkswap /dev/sdb2
Setting up swapspace version 1, size = 2 GiB (2086912 bytes)
no label, UUID=45a4047c-49bf-4c88-9b99-f6ac93908485
swapon命令用于激活新的交换分区设备。
语法:swapon设备名称
12.6.2.1.对新的交换分区进行激活
[root@localhost ~]# swapon /dev/sdb2
交换(SWAP)分区是一种通过在硬盘中预先划分一定的空间,然后把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设计目的是为了解决真实物理内存不足的问题。
12.7.2.1.添加交换分区实战
1)交换分区的创建过程与前文讲到的挂载并使用存储设备的过程非常相似,在生产环境中,交换分区的大小一般为真实物理内存的1.5~2倍,这里就分配2个G。
2)通过上面我们就获得一个2个g的新分区然后尝试修改硬盘的标识码,这里将其改成82(Linux swap)以方便以后知道它的作用。
3)到这里就完成了,这里我们保存退出。
4)对交换分区进行格式化
[root@localhost ~]# mkswap /dev/sdb2
Setting up swapspace version 1, size = 2 GiB (2086912 bytes)
no label, UUID=45a4047c-49bf-4c88-9b99-f6ac93908485
5)激活新的交换分区设备
[root@localhost ~]# swapon /dev/sdb2
磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单。
语法:mkfs [-t 文件系统格式] 磁盘文件名
-t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)
12.8.3.1.查看 mkfs 支持的文件格式
[root@localhost ~]# mkfs
mkfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
12.8.3.2.将分区 /dev/sdb1格式化为xfs文件系统
[root@localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
挂载是在使用硬件设备前所执行的最后一步操作。同时挂载也分临时挂载和永久挂载。
语法:mount文件系统 挂载目录
-a 挂载所有在/etc/fstab中定义的文件系统
-t 指定文件系统的类型
12.9.3.1.将/dev/sdb挂在在1目录下(临时挂载)
[root@localhost ~]# mount /dev/sdb1 1
虽然按照上面的方法执行mount命令后就能立即使用文件系统了,但系统在重启后挂载就会失效,也就是说需要每次开机后都手动挂载一下。这肯定不是我们想要的效果,如果想让硬件设备和目录永久地进行自动关联,将写入到/etc/fstab文件中。这个文件中包含着挂载所需的诸多信息项目,一旦配置好之后就能一劳永逸了。
设备文件 一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier)
挂载目录 指定要挂载到的目录,需在挂载前创建好
格式类型 指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等
权限选项 若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
是否备份 若为1则开机后使用dump进行磁盘备份,为0则不备份
是否自检 若为1则开机后自动进行磁盘自检,为0则不自检
12.10.3.1.将/dev/sdb挂在在1目录下(永久挂载)
[root@localhost ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Aug 23 23:50:40 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=8163a1ca-5544-4e49-b920-fb80efceb109 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /1 xfs defaults 0 0
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
语法:yum [options] [command] [package …]
options 可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 "yes"),-q(不显示安装的过程)等等
command 要进行的操作
package 安装的包名
列出所有可更新的软件清单命令:yum check-update
更新所有软件命令:yum update
仅安装指定的软件命令:yum install <package_name>
仅更新指定的软件命令:yum update <package_name>
列出所有可安裝的软件清单命令:yum list
删除软件包命令:yum remove <package_name>
查找软件包命令:yum search <keyword>
清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。