AnolisOS基础篇
龙蜥系统是一个由Linux内核、GNU工具和其他自由软件组成的操作系统,也被称为GNU/Linux系统。这个名字是由GNU项目的创始人Richard Stallman提出的,目的是强调GNU项目和Linux内核的合作。在龙蜥系统中,GNU提供了大部分的用户空间工具和应用程序,而Linux内核则提供了操作系统的核心功能和驱动程序支持。龙蜥系统被广泛应用于服务器、个人电脑、移动设备等各种领域,并且成为
目录
1:什么是龙蜥系统?
龙蜥系统是一个由Linux内核、GNU工具和其他自由软件组成的操作系统,也被称为GNU/Linux系统。这个名字是由GNU项目的创始人Richard Stallman提出的,目的是强调GNU项目和Linux内核的合作。在龙蜥系统中,GNU提供了大部分的用户空间工具和应用程序,而Linux内核则提供了操作系统的核心功能和驱动程序支持。
龙蜥系统被广泛应用于服务器、个人电脑、移动设备等各种领域,并且成为了开源软件运动的一个重要代表。许多Linux发行版(如Ubuntu、Fedora、Debian等)都是基于龙蜥系统构建的,为用户提供了丰富的功能和灵活的定制选项。
龙蜥系统是一个强大、稳定且灵活的操作系统,得到了全球范围内开发者和用户的支持和认可。
2:Linux的发展史:
1991年:Linus Torvalds在赫尔辛基大学发布了Linux内核的第一个版本,这标志着Linux的诞生。
1990s:Linux逐渐在全球范围内得到认可和使用,吸引了大量的开发者参与其中,形成了一个庞大的开源社区。
2000s:Linux在服务器领域得到广泛应用,成为了许多企业和组织的首选操作系统。
2010s:随着移动互联网和物联网的兴起,Linux在嵌入式系统和移动设备上也得到了广泛应用,如Android操作系统就是基于Linux内核开发的。
Linux已经成为了世界上最流行的操作系统之一,不仅在服务器、嵌入式系统和移动设备上得到广泛应用,也在个人电脑和超级计算机等领域发挥着重要作用。
命令:
shell命令:
shell 既是编程语言又是解释器
基本关系:
user输入命令--->shell翻译---->kernel
kernel返回命令--->shell翻译--->user
基本命令格式:[命令 参数 内容选项]
cat /etc/shells:查看解释器
echo $:查看当前使用的解释器
su - root:切换root用户
def -y install csh:下载c语言解释器
cat /etc/shells:查看shells文件
sh:进入sh解释器
exit:退出
type:查看命令类型 type echo
命令行基础:
ctr+alt+F1:返回图形化介面
^C:换行
hostname:查看主机名
cat /etc/hostname:查看主机名文件
ifconfig:用于查看和配置网络接口的命令。
ens33:网卡的名称,每个网络接口都有一个唯一的标识符。
inet:表示IPv4地址。
netmask:表示子网掩码,用于确定网络中主机的范围。
inet6:表示IPv6地址。
ether:表示网卡的MAC地址。
RX:表示网络接收包的效率。
TX:表示网络发送包的效率。
ping 127.0.0.1: (127.0.0.1:网络回环地址,用于主机内部的网络通信测试。)
基础命令:
查看:
pwd:查看当前目录
ls:查看当前目录下的内容
ls --help:查看ls里的所有选项
ls:列出当前目录下的文件和子目录
ls -l:以长格式显示文件和子目录的详细信息,包括权限、所有者、大小、修改时间等
ls -a:显示所有文件,包括以.开头的隐藏文件
ls -h:以人类可读的格式显示文件大小
ls -t:按照修改时间排序文件和子目录
ls -r:反向排序文件和子目录
ls -R:递归列出所有子目录及其内容
ls -i:显示每个文件的inode号码
ls -ld test:查看test的详细信息
cat filename:查看filename文件内容'
cat file1 file2 > newfile:连接文件,将file1和file2的内容连接起来,并将结果输出到newfile中
cat > newfile:创建文件在终端中输入文本,按Ctrl+D结束输入,然后将输入的文本保存到newfile中
cat -n filename:显示文件内容并显示行号
cat filename | head -n 10:显示特定行数,可以使用命令显示文件的前10行
cat filename | tail -n 10命令显示文件的最后10行
切换:
cd:切换目录
cd /etc:切换到etc目录
cd .:当前
cd ..:返回上一级目录
cd ~:返回用户根目录
cd -:返回上一次访问的目录
开关机:
reboot:重启
poweroff:关机
shutdown:关机
shutdown -h now:立即关机
帮助:
man:帮助
which:查询命令文件位置
whereis:查询是否有man帮助命令
命令 --help:查看help帮助
创建文件夹和目录:
mkdir test:新建目录
mkdir -p a/b/c/d/e : 同时创建多个目录
touch a.txt b.txt :创建两个文件夹
剪切和复制:
mv a /root/:将a目录剪切到root目录下
mv *.txt /root/:将所有txt文件剪切到root目录下
cp -r a b:将a文件夹复制到b文件夹
cp a.txt b.txt
删除:
rm : 删除
rm filename:删除指定文件--->例如,rm file.txt会删除名为file.txt的文件
rm -r directory:递归删除指定的目录及其所有内容,删除目录时需要使用-r选项来确保删除整个目录树
rm -f filename:强制删除文件,系统不进行询问
rm *.txt删除当前目录下所有以.txt结尾的文件
rmdir directory:删除空目录。如果目录不为空,需要使用rm -r directory来删除非空目录
echo命令:
echo
命令用于在终端输出指定的文本内容。基本语法如下:
echo [option] [string]
-
option
:可选参数,用于控制echo
命令的输出格式。 -
string
:要输出的文本内容。
示例:
echo "Hello, World!"
wc
命令:
wc
命令用于统计文件中的字数、行数和字符数。基本语法如下:
wc [option] [file]
-
option
:可选参数,用于指定输出格式或限制统计的内容。 -
file
:要统计的文件名。
常用选项包括:
-
-l
:统计行数。 -
-w
:统计单词数。 -
-c
:统计字符数。
示例:
wc -l myfile.txt
head
命令:
head
命令用于显示文件的开头部分,默认显示文件的前10行。基本语法如下:
head [option] [file]
常用选项包括:
-
-n N
:显示文件的前N行内容。
示例:
head -n 5 myfile.txt
tail
命令:
tail
命令用于显示文件的结尾部分,默认显示文件的最后10行。基本语法如下:
tail [option] [file]
常用选项包括:
-
-n N
:显示文件的最后N行内容。 -
-f
:实时追踪文件内容的变化。
示例:
tail -n 3 myfile.txt
tail -f myfile.txt
命令会持续输出myfile.txt
文件的内容,并且实时显示文件内容的变化,非常适合用于监视日志文件等场景
uniq
命令:
uniq
命令用于过滤重复的行,并且要求输入是经过排序的。基本语法如下:
uniq [option] [file]
常用选项包括:
-
-d
:仅显示重复的行。 -
-c
:统计每行重复出现的次数。 -
-i
:忽略大小写。
示例:
sort myfile.txt | uniq
对myfile.txt
文件进行排序,并过滤重复的行。
链接文件和别名:
通配符:
touch file{1..100}.txt :创建100个file文件
mv file??.txt /tmp :将file10-99所有文件移动到tmp目录下
通配符:
*.txt :所有
{1..100}:1-100
*:匹配零个或多个字符。例如,*.txt会匹配所有以.txt结尾的文件名
?:匹配任意单个字符。例如,file?.txt会匹配类似file1.txt、fileA.txt这样的文件名
[...]:匹配方括号内指定范围内的任意单个字符。例如,file[123].txt会匹配file1.txt、file2.txt、file3.txt
{...}:匹配花括号内的任意一个模式。例如,{file1,file2}.txt会匹配file1.txt和file2.txt
软硬链接:
touch test.txt
ln -s test.txt s.txt :创建软连接
ln test.txt h.txt :创建硬链接
软连接与硬链接的区别:
软链接是基于原文件的,删除原文件后,软链接失效,不能访问
软链接只有一个指向的功能,没有存储功能
删除原文件后,硬链接依然可以是被访问的,硬链接在磁盘中是有存储的位置的
设置别名:
alias:设置别名
alias ll='ls -l' : 将'ls -l'的效用赋给ll (临时性的)
vim .bashrc : 修改后别名永久生效
vim编辑器:
打开/保存/退出:
打开文件:vim filename
保存文件:在Normal模式下输入:w或:write
退出Vim:Normal模式下输入:q或:quit
保存并退出
:wq 保存后退出
:q! 不保存退出
:x 保存退出
:X 加密保存退出
光标移动:
h:向左移动光标
j:向下移动光标
k:向上移动光标
l:向右移动光标
0:移动到行首
$:移动到行尾
gg:移动到文件开头
G:移动到文件末尾
编辑文本:
i:在光标处插入文本
a:在光标后插入文本
o:在当前行下方插入新行
dd:删除当前行
yy:复制当前行
p:粘贴文本
撤销/重做:
u:撤销上一步操作
Ctrl + r:重做上一步操作
:set nu 显示文件行号
:%s/root/h 将root替换为h
:%s/root/h/g :将所有root全部替换为h
:r!/etc/password :将password 文件内容重新读入
用户信息:
id root:查看root基本信息
cat /etc/passwd | head -l:查看用户
head -l:查看首行
tail -l:查看末尾一行
root:超级管理员用户 id 固定为 0
system:系统用户 id 1-999
user:普通用户 id 1000-655345
cat /etc/shadow :查看密码
用户管理:
useradd --help
useradd:创建用户
userdel:删除用户
usermod:修改用户
useradd test:创建test用户
cat /etc/password | tail -3:查看
useradd -m -s /bin/bash -u 6666 test1
-m:家目录 -s:指定解释器 -u:指定id号
cat /etc/password | tail -2 :查看
用户密码管理:
chage --help
passwd 用户名:设置密码
passwd -S 用户名:查询密码信息
chage -l 用户名:查询密码信息
chage -d 用户名:
组账户管理:
groupadd:创建组账户(公共组)
groupdel:删除组账号
groupmod:修改组账户
groupadd public
cat /etc/group | tail -1
groupadd -g 1212 public
-g:设置组账户id
修改public的id
groupmod -g 1111 public
添加组:
gpasswd -a anolis public
剔除组:
gpasswd -d anolis public
基本权限管理:
各部位详解:
文件类型:
第一个- | 文件类型 |
- | 代表普通文件 |
d | 目录 |
l | 软链接 |
rw- | 所有者权限 | user | u |
r-- | 所属组权限 | group | g |
r-- | 其它组权限 | other | o |
权限数值对照表:
|
修改权限:chmod
chmod o+w test
chmod a+w test:将所有用户的权限都添加w
chmod o=rwx /test.txt
将test的用户设置为root
chown test:root /test.txt
将test用户添加到root组里
gpasswd -a test root
利用数字更改权限:
chmod 644 /test.txt
chown修改文件或目录的拥有者和所属组:
chown
命令用于修改文件或目录的拥有者和所属组。其基本语法如下:
chown [OPTIONS] OWNER[:GROUP] FILE
其中:
OWNER
表示要修改的拥有者的用户名或用户ID。GROUP
表示要修改的所属组的组名或组ID。FILE
表示要修改的文件或目录名称。
一些常用的选项包括:
-R
:递归地修改指定目录下所有文件和子目录的拥有者和所属组。--from=OLD_OWNER[:OLD_GROUP]
:只修改拥有者和所属组为OLD_OWNER
和OLD_GROUP
的文件。--reference=REF_FILE
:将指定文件REF_FILE
的拥有者和所属组设置为目标文件的拥有者和所属组。
例如,要将文件file.txt
的拥有者修改为user1
,所属组修改为group1
,可以使用以下命令:
chown user1:group1 file.txt
如果要递归地修改目录/path/to/directory
下所有文件和子目录的拥有者和所属组为user1
和group1
,可以使用以下命令:
chown -R user1:group1 /path/to/directory
隐藏权限(限制root用户):
lsattr:查看隐藏权限
chatter:修改隐藏权限
chattr +i /test.txt
+i:root只有r权限,不能修改不能删除
chattr +a /test.txt
+a:可以看和追加写入内容
chattr -a /test.txt
-a:去掉a隐藏权限
ACL访问控制:
getfacl:查看访问控制
getfacl /test.txt
创建访问控制:
在原本所有东西都不变的情况下,方便我们进行例外操作
useradd -m -s /bin/bush/ acl :创建用户
setfacl -m acl:rwx /test.txt
getfacl /test.txt
test.txt文加在原来的user基础上又多了一个管理者acl用户,权限位为mask
删除访问控制:
删除访问控制:
getfacl -x acl /test.txt
umask默认值:
umsk:
这个四位数的 umask 值中:
-
第一位的0,表示「特殊权限」,暂时不用理会
-
第二位的0,表示「用户权限」,从用户权限减0,也就是权限不变
-
第三位的2,表示「用户组权限」,从组权限减2,也就是减掉写(w=2)的权限
-
第四位的2,表示「其他用户权限」,从其他用户权限减2,即取消其他用户的写权限
umask值对应权限:
umask值 | 文件权限 | 目录权限 | 含义 |
---|---|---|---|
002 | 664 | 775 | 取消其他用户写权限 |
006 | 660 | 771 | 取消其他用户读、写权限 |
022 | 644 | 755 | 取消用户组、其他用户的写权限 |
027 | 640 | 750 | 取消其他用户读、写权限;取消用户组的写权限 |
目录结构信息:
/:根目录
/bin:命令存放
/dev:块设备文件存放位置
/home:家目录
/mnt:挂在光盘或目录
/proc:存放系统核心数据
/run:存放pid文件
/tmp:存放临时文件
/var:存放系统日志
/etc:各种服务配置信息文件
/usr:存放应用程序
/root:超级管理员的家目录
/srv:服务启动后需要访问的目录
/opt:主机安装软件产生的额外目录会放在opt文件下
Setuid附加权限(user组):
在Linux中,setuid(Set User ID)是一种权限机制,允许一个程序在执行时暂时拥有另一个用户的权限。这种机制通常用于需要特定权限才能执行的程序,比如系统管理工具或者某些特权操作。
当一个可执行文件具有setuid权限时,它在执行时将会以文件所有者的权限来运行,而不是执行者的权限。这样可以让普通用户执行一些需要特权用户权限才能执行的操作,比如修改系统配置文件或者执行特定系统命令。
可执行文件设置setuid权限
使用chmod命令。例如,要将一个可执行文件的所有者权限设置为root用户,可以使用以下命令:
chmod u+s 目录
例如下面将mkdir命令增加和删除附加权限:
删除mkdir的x权限并给与它附加权限时,mkdir的user权限变为S,如果x权限存在时,附加权限变为s.
Setgid附加权限(group):只针对目录
在Linux中,setgid(Set Group ID)是一种权限机制,类似于setuid,允许一个程序在执行时暂时拥有与文件所属组相关的权限。
当一个可执行文件具有setgid权限时,它在执行时将会以文件所属组的权限来运行,而不是执行者的权限。这种机制通常用于需要特定组权限才能执行的程序,比如共享资源管理程序或者某些特权操作。
可执行文件设置setgid权限
使用chmod命令。例如,要将一个可执行文件的所属组权限设置为一个特定的组,可以使用以下命令:
chmod g+s 目录
Sticky附加权限(other):只针对目录
在Linux中,Sticky位是一种特殊的权限标志,通常用于目录。当一个目录具有Sticky位时,只有目录的所有者、文件的所有者和root用户才能删除该目录下的文件,其他用户无法删除非自己创建的文件。
Sticky位通常用于共享目录,以确保用户只能删除自己创建的文件,而不能删除其他用户创建的文件。这在一些共享目录中非常有用,比如/tmp目录,以防止用户意外删除其他用户的文件。
目录设置Sticky位
使用chmod命令。例如,要为一个目录设置Sticky位,可以使用以下命令:
chmod +t 目录
如果不添加附加权限:
分别创建uer1和user2两个用户,并且在user1用户下创建一个user1.txt文件
可以看到user2虽然不可以更改user1的文件但是可以删除user1的文件user1.txt
Sticky权限:
t | 代表有附加权限 |
T | 代表没有附加权限 |
只有目录的所有者、文件的所有者和root用户才能删除该目录下的文件,其他用户无法删除非自己创建的文件
文件查找:
locate搜索:
linux中使用locate搜索文件是在虚拟数据库中搜索的
搜索前需要先更新数据库:updatedb
# 搜索passwd
locate passwd
locate搜索效率高。使用的模式是贪婪匹配,准确度不高
按文件名查找:
find 更加精准
find / -name passwd
文件过滤:
grep命令格式:
grep 关键字 文件名
grep root passwd
表示在文件passwd
中查找包含关键字root
的行。grep
是一个用于在文件中查找指定文本模式的命令,root
是要查找的关键字,passwd
是要搜索的文件名
-i | 大小写都匹配 |
-n | 显示行号 |
-v | 取反--->显示不匹配的 |
-r | 递归,逐个查找 |
精准匹配过滤:
^ | 只匹配以关键字开头的文件 |
$ | 只匹配以关键字结尾的文件 |
^$ | 匹配空行 |
awk命令:
根据指定的规则对文本文件中的数据进行处理和分析。awk
通常用于按行处理数据,可以方便地对数据进行分割、筛选、计算等操作。
awk 'pattern { action }' file
-
pattern
:匹配条件,符合条件的行将执行action
中的操作。 -
action
:要执行的操作,可以是打印、计算等。 -
file
:要处理的文件名。
# 在/etc/passwd文件中查找以root开头的行,并打印出整行数据
awk -F':' '$1 == "root" { print $0 }' /etc/passwd
sed命令:
用于对文本进行替换、删除、插入等操作
sed 's/pattern/replacement/g' file
-
pattern
:要替换的模式。 -
replacement
:替换的内容。 -
g
:全局替换。
# 将file.txt文件中所有的old_text替换为new_text
sed 's/old_text/new_text/g' file.txt
tar归档与压缩:
tar命令格式:
tar -cf 文件:将文件或目录打包成一个归档文件
tar -tvf ***.tar:查看归档文件中的文件信息
tar -xf ***.tar:解压缩归档文件
-
c
:表示创建一个新的归档文件 -
t
:表示列出归档文件中包含的文件列表 -
x
:表示从归档文件中提取文件 -
v
:表示在执行操作时显示详细信息
压缩格式:
-z | .gz格式 |
-j | bz2格式 |
-J | .xz格式 |
# 压缩home目录格式为.gz
tar -czf home.tar.gz /home
# 将home压缩文件解压至tmp目录下
tar -xzf home.tar.gz -C/tmp
zip归档与压缩:
zip:
zip
命令用于创建ZIP格式的归档文件,将文件或目录打包成一个ZIP文件。基本语法如下:
zip -r archive.zip file1 file2 directory1
-
-r
:递归地将指定目录下的所有文件和子目录打包。 -
archive.zip
:指定要创建的ZIP归档文件名。 -
file1 file2 directory1
:要压缩的文件或目录列表。
# 解压缩ect.zip文件并且放至var目录下
unzip etc.zip -d /var
bzip2:
# 压缩
bzip2 passwd
# 解压缩
bzip2 -d passwd.bz2
gzip2:
# 压缩
gzip h.txt
# 解压缩
gzip -dv h.txt.gz
重定向:
输出重定向:
>:覆盖
>>:追加
echo ** 1> ** :1>正确信息
错误信息 ** 2> ** :1>错误信息
错误信息 ** &> ** :&>不管正确与错误
echo Anolis > lhm
# 将Anolis这个字符写入lhm文件中,如果lhm文件不存在则自动创建
输入重定向:
<:将文件内容作为命令的输入
cat > OK << EOF
# EOF作为分隔符,不管写什么内容只要遇到EOF就停止
# cat > OK
# cat查看ok文件不存在则创建
# << EOF
# 输入内容,遇到EOF停止输入
文件处理:
cat:
查看文件
-n:显示行号
more:
分页查询---> 空格:下一页---->Ctr+b:上一页
list:分页查看--->上下键查看
sort:
排序
paste:
两个文件结合展示
临时配置信息:
ifconfig:
查询网络信息
ifconfig ens33
# ens33指定网卡名
修改主机名:
临时修改:
hostname Anolis-OS
# 临时修改,配置文件没有变
永久修改:
echo Anolis-OS > /etc/hostname
# 永久修改,改变配置文件
hostnamectl set-hostname Anolis_OS
# 使用命令永久修改主机名
解析DNS服务器:
nslookup:解析命令
nslookup www.baidu.com
dns的配置文件:
cat /etc/resolv.conf
nameserver:DNS的解析地址
本机的域名解析:
cat /etc/hosts
nmcil:连接管理:
临时配置地址信息:
ifconfig ens33 192.168.238.110
断开连接重启后网卡名就会恢复:
nmcli:统一配置信息
手动图形化界面配置网络:
设置--->网络--->开始配置
nmcli device status:查询网卡设备状态
nmcil connection show:配置文件信息
nmcil device show:查询硬件详细信息
更改ipv4地址:
nmcli connection modify
: 指示nmcli
工具对网络连接进行修改操作
-
ens33
: 这是要修改的网络连接的名称,即网卡的名称。-
ipv4.address 192.168.238.190/24
: 这部分指定了要设置的IPv4地址。在这种情况下,IPv4地址被设置为192.168.238.190
,并且子网掩码为/24
,表示子网中有24位是网络位,剩下的8位是主机位。这个地址是用来标识网络上的设备的唯一标识。 -
ipv4.gateway 192.168.238.2
: 这部分指定了网关的IPv4地址。网关是连接本地网络和其他网络的设备,用于路由数据包。 -
ipv4.dns 192.168.238.2
: 这部分指定了DNS服务器的IPv4地址。DNS服务器用于将域名解析为对应的IP地址。 -
connection.autoconnect yes
: 这部分设置了连接的自动连接属性为yes
,表示系统启动时将自动连接这个网络。
-
nmcil connection modify ens33 ipv4.address 192.168.238.190/24
ipv4.gateway 192.168.238.2 ipv4.dns 192.168.238.2 connection autoconnect yes
autoconnect yes:每次开机自动生效
此时ipv4的地址没有变,因为这个时候只是更改了而没有重新启动
nmcil connection down ens33:断开ens33网卡连接
nmcil connection up ens33:重新激活
网卡配置文件:
更改ipv6信息:
nmcil connection modify ens33 ipv6.address 2023::1/64 connection autoconnect yes
测试网络连通性:
使用vim更改配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
-
TYPE=Ethernet
: 指定了连接的类型是以太网,表示这是一个以太网连接。 -
PROXY_METHOD=none
: 指定了代理方法为none
,表示没有开启代理。 -
BROWSER_ONLY=no
: 指定了是否只在浏览器中使用代理的设置为no
,表示不仅仅在浏览器中使用代理。 -
BOOTPROTO=dhcp
: 指定了启动协议为dhcp
,表示使用动态主机配置协议来获取IP地址等网络配置信息。 -
DEFROUTE=yes
: 指定了默认路由为yes
,表示使用该连接作为默认路由。 -
IPV4_FAILURE_FATAL=no
: 指定了IPv4连接失败是否致命的设置为no
,表示IPv4连接失败不会导致连接失败。 -
IPV6INIT=yes
: 指定了是否初始化IPv6的设置为yes
,表示启用IPv6。 -
IPV6_AUTOCONF=yes
: 指定了是否自动配置IPv6的设置为yes
,表示允许系统自动配置IPv6地址。 -
IPV6_DEFROUTE=yes
: 指定了IPv6默认路由为yes
,表示使用该连接作为IPv6的默认路由。 -
IPV6_FAILURE_FATAL=no
: 指定了IPv6连接失败是否致命的设置为no
,表示IPv6连接失败不会导致连接失败。 -
NAME=ens33
: 指定了连接的名称为ens33
。 -
UUID=f54c6261-c573-4327-98ac-c5279ea363de
: 指定了连接的唯一标识符。 -
DEVICE=ens33
: 指定了设备名称为ens33
。 -
ONBOOT=yes
: 指定了系统启动时是否激活该连接的设置为yes
,表示系统启动时激活该连接。 -
IPADDR=192.168.238.190
: 指定了IPv4地址为192.168.238.190
。 -
PREFIX=24
: 指定了子网掩码为/24
,表示子网中有24位是网络位,剩下的8位是主机位。 -
GATEWAY=192.168.238.2
: 指定了网关的IPv4地址为192.168.238.2
。 -
DNS1=192.168.238.2
: 指定了第一个DNS服务器的IPv4地址为192.168.238.2
。 -
IPV6ADDR=2023::1/64
: 指定了IPv6地址为2023::1/64
,表示IPv6地址为2023::1
,子网前缀长度为64位。
改配置文件后需要使用rebot重启电脑后配置才会生效
网络诊断:
netsatat:查看网络状态
netstat -ntupl | grep 22
查看网卡数字,tcp,udp,路由,监听信息
ss:
ss与netsatat功能基本一样:
路由表:
-
查看当前系统的路由表信息:
route
-
添加一个新的路由:
sudo route add -net 目标网络 netmask 子网掩码 网关
例如:
sudo route add -net 192.168.1.0 netmask 255.255.255.0 192.168.0.1
-
删除一个已有的路由:
sudo route del -net 目标网络 netmask 子网掩码
例如:
sudo route del -net 192.168.1.0 netmask 255.255.255.0
添加默认路由:
sudo route add default gw 网关
例如:
sudo route add default gw 192.168.0.1
查看网络连通性:
ping www.baidu.com
trace命令:
trace
命令通常用于追踪数据包在网络中的路径。具体而言,trace
命令通常指的是traceroute
命令,用于确定数据包从源主机到目标主机的路径。以下是traceroute
命令的基本用法:
traceroute 目标主机
例如,要追踪到www.example.com
的路径,可以执行以下命令:
traceroute www.example.com
traceroute
命令将显示数据包经过的每个路由器的IP地址,以及从源主机到目标主机的路径上的延迟。这有助于诊断网络连接问题并了解数据包在网络中的传输路径
下载页面html代码:
wget:
wget下载源码:
wget xxx.tar.gz
此时会将xxx.tar.gz源码包下载到当前目录
网页源代码访问:
curl www.baidu.com
rpm管理软件:
debian与centos:
debian deepin dpkg apt-get make
centos rpm dnf/yum make
-
Debian/Deepin:
-
dpkg
: Debian Package,用于在Debian或基于Debian的发行版(如Deepin)中管理安装、卸载和管理软件包。 -
apt-get
: Advanced Package Tool,是Debian Linux系统中用于管理软件包的命令行工具,可以用来安装、升级、卸载软件包以及解决依赖关系。
-
-
CentOS:
-
rpm
: RPM Package Manager,是Red Hat Linux系统中的软件包管理工具,用于安装、升级和删除RPM软件包。 -
dnf
/yum
: Yellowdog Updater Modified(yum)已经逐渐被新的工具dnf(Dandified Yum)替代,用于在Red Hat Linux系统中管理软件包。
-
-
通用工具:
-
make
: 是一个构建自动化工具,通常用于编译和构建软件项目。通过Makefile
文件定义编译规则,可以简化软件项目的构建过程。
-
软件安装部署:
下载包:
dnf download httpd
rpm -ivh httpd
-i:安装
v:过程
h:标记
U:升级软件
-e:卸载
-q:看是否安装
a:所有
-qa:查看安装了多少个包
-ql:查看软件包的详细信息
dnf download vsftpd
卸载:
rpm -e vsftpd
rpm命令大全:
-
安装软件包:
rpm -i package.rpm
-
升级软件包:
rpm -U package.rpm
-
删除软件包:
rpm -e package_name
-
查询软件包信息:
-
查询已安装软件包信息:
rpm -q package_name
-
查询软件包文件信息:
rpm -qf /path/to/file
-
-
列出已安装的软件包:
rpm -qa
-
验证软件包:
rpm -V package_name
-
解决依赖关系:
rpm -ivh package.rpm
-
查看软件包的文件列表:
rpm -ql package_name
-
查看软件包的信息:
rpm -qi package_name
源码编译安装:
Nginx:
Nginx是一个高性能的开源Web服务器软件,也可以用作反向代理服务器、负载均衡器和HTTP缓存。以下是关于Nginx服务的一些详解:
-
安装和配置:在Linux系统上安装Nginx通常是通过包管理器,如apt、yum等进行安装。配置文件通常位于
/etc/nginx/nginx.conf
,可以在该文件中设置服务器监听端口、虚拟主机、日志记录、SSL证书等。 -
虚拟主机:Nginx支持虚拟主机,可以通过配置不同的server块来实现多个网站在同一台服务器上运行。每个server块可以指定不同的域名、根目录、日志文件等。
-
反向代理:Nginx可以作为反向代理服务器,将客户端的请求转发到后端的应用服务器上。通过配置
proxy_pass
指令可以实现反向代理。 -
负载均衡:Nginx也可以用作负载均衡器,将请求分发到多个后端服务器上,从而提高系统的性能和可靠性。可以通过配置
upstream
块和proxy_pass
指令来实现负载均衡。 -
HTTP缓存:Nginx可以作为HTTP缓存服务器,缓存静态资源以减轻后端服务器的压力,并提高网站的访问速度。可以通过配置
proxy_cache
指令来启用HTTP缓存。 -
日志记录:Nginx会记录访问日志和错误日志,可以在配置文件中指定日志文件的路径和格式。访问日志记录了客户端请求的详细信息,错误日志记录了Nginx服务器的错误信息。
dnf配置及使用:
dnf repolist:
列出系统所有的的软件库
dnf list:列出已经安装的软件包
dnf list installed:列出已经安装的rpm软件包
dnf list availble:列出可供安装的软件包
dnf info httpd:查询httpd软件包的详情
dnf命令大全:
-
更新软件包数据库:
sudo dnf check-update
-
搜索软件包:
dnf search package_name
-
安装软件包:
sudo dnf install package_name
-
更新软件包:
sudo dnf update
-
删除软件包:
sudo dnf remove package_name
-
列出已安装的软件包:
dnf list installed
-
清理缓存:
sudo dnf clean all
gcc --version:查看编译环境
dnf -y install gcc:安装gcc编译包
ls -lh nginx-1.13.7.tar.gz:查看nginx服务器
编译步骤:
-
tar解压缩
tar -xf nginx-1.13.7.tar.gz
cd nginx-1.13.7/
-
configure配置信息
./configure --help
./configure --prefix=/user/local/nginx
-
make编译
-
make install 编译安装
make && make install
使用inotify步骤与上述相同
systemctl管理:
systemctl介绍:
systemctl
是一个用于管理系统服务的命令行工具,主要用于启动、停止、重启、启用和禁用系统服务。以下是关于systemctl
管理的一些详解:
-
启动服务:使用
systemctl start [service]
命令可以启动一个系统服务,例如systemctl start nginx
可以启动Nginx服务。 -
停止服务:使用
systemctl stop [service]
命令可以停止一个正在运行的系统服务,例如systemctl stop nginx
可以停止Nginx服务。 -
重启服务:使用
systemctl restart [service]
命令可以重启一个系统服务,例如systemctl restart nginx
可以重启Nginx服务。 -
查看服务状态:使用
systemctl status [service]
命令可以查看一个系统服务的当前状态,包括是否正在运行、最后一次启动时间、运行时间等信息。 -
启用/禁用服务:使用
systemctl enable [service]
命令可以将一个系统服务设置为开机自启动,而使用systemctl disable [service]
命令可以禁止一个系统服务开机自启动。 -
查看所有服务:使用
systemctl list-units --type=service
命令可以列出系统中所有的服务及其状态,可以方便地查看系统中正在运行的服务。 -
查看服务日志:使用
journalctl -u [service]
命令可以查看特定服务的日志信息,可以用来排查服务启动、运行过程中的错误和警告信息。
init pid 1 和 systemd:
-
nit PID 1: 在Linux系统中,
init
是系统的第一个进程,其进程号(PID)通常为1。init
在系统引导过程中启动,负责初始化系统环境、启动各种系统服务和进程。作为系统的第一个进程,init
是所有其他进程的祖先进程,它负责监控和管理系统中的所有进程。
init
进程的主要任务包括:
-
启动系统服务和守护进程
-
处理系统信号
-
管理系统运行级别(Runlevel)
-
处理系统关机和重启
在传统的SysVinit系统中,init
进程会根据运行级别(Runlevel)启动不同的服务。然而,随着Systemd的出现,init
的角色逐渐被Systemd所取代。
-
Systemd: Systemd是一个系统和服务管理器,用于替代传统的SysVinit。Systemd引入了许多新的概念和功能,如并行启动服务、按需加载服务、基于单元文件的配置等,以提高系统的启动速度和效率。
Systemd的一些重要特点包括:
-
单元文件(Unit files):Systemd使用单元文件来描述系统服务、挂载点、套接字等资源,并通过这些文件来管理系统的各个部分。
-
单元(Unit):Systemd将系统中的各种资源抽象为单元,如服务单元、挂载点单元等,方便统一管理。
-
Socket激活(Socket activation):Systemd支持通过套接字激活服务,避免了不必要的服务预启动。
-
并行启动(Parallel startup):Systemd可以并行启动系统中的服务,提高系统的启动速度。
-
systemctl get-default:
systemctl get-default
命令用于获取当前系统的默认运行级别(target)。在Systemd中,运行级别被称为target,它定义了系统启动时需要启动的服务单元。通过systemctl get-default
命令,可以查看当前系统默认的target是什么,即系统启动时会加载哪些服务单元。 -
systemctl set-default multi-user.target:
systemctl set-default multi-user.target
命令用于设置系统的默认运行级别(target)。在这个命令中,multi-user.target
是一个Systemd的标准target,表示多用户模式。在多用户模式下,系统会启动基本的服务,但不会启动图形界面等资源密集型服务。
通过执行systemctl set-default multi-user.target
命令,可以将系统的默认运行级别设置为多用户模式,这意味着系统将以文本模式启动,不会加载图形界面等服务。这在需要提高系统性能或者在服务器环境下运行时很有用。
运行级别:
0:操作系统(关机)
1:单用户运行级别,可以联网
2:多用户,不能联网
3:多用户运行级别有网,
4:预留级别
5:图形界面
6:重启
ssh访问控制(远程管理):
rpm -q openssh-server:查看是否有ssh包
systemctl status sshd:查看sshd服务运行状态
systemctl start sshd:启动
systemctl stop sshd:停止
systemctl enable sshd:开机自启动
systemctl disable sshd:关闭
编辑ssh配置文件:
vim /etc/ssh/sshd_config
port:监听的端口号
Listen:监听地址(ipv4,ipv6)
Hostkey:密钥
PermitRootLogin:远程登录
更多配置信息建议自行学习
远程自己:
命令格式:
ssh 用户名@地址
ssh root@127.0.0.1
配置免密:
ssh-keygen:生成密钥
id_rsa:私钥
id_rsa.pub:锁
将锁传给远程电脑:
ssh-copy-id root@127.0.0.1
效果:可以直接登录,不用输入密码
文件互传:
将文件传到mnt目录下:
scp h.txt root@127.0.0.1:/mnt
时间服务:
date:
查看当前时间
timedate:
Local:本地时间
RTC:硬件时间
Time zone:时区
hwclock --show:
更精准的硬件时间
查看是否安装时间服务器:
rpm -q chrony
时间配置文件
vim /etc/chrony.conf
启动时间服务:
systemctl start chronyd
对比上述没有启动时的:
cron计划任务:
编辑计划任务:
crontab -e -u root
时间 计划 任务
*分 *时 *日 *月 *周 shell命令
0 18(每天18点) *(每天) *(每月) 1-5(周一到周五) poweroff:周一-周五下午6点执行关机操作
每周六、天凌晨做数据备份备份:
0 0 * * 6,7 tar -cf home.tar.gz /home
每周隔两天凌晨做数据备份备份:
0 0 */2 * * * tar -cf home.tar.gz /home
系统信息:
查看系统版本:
cat /etc/os-release
cpu信息:
ls cpu
登录信息:
last:所有用户的登录信息
内存信息:
total:总共可用的
used:已使用的
free:剩余
shared:共享使用
buff(系统数据)/cache(用户数据):缓存
available:可供应用程序使用的
清空缓存:
echo 3(1 or 2) > /proc/sys/vm//drop_caches
1:系统数据
2:用户数据
3:系统和用户数据
进程管理:
-
top
:top
命令用于实时显示有关运行中进程、CPU使用情况、内存使用情况和其他系统资源的信息。它提供了一个交互式界面,用于监视和管理进程。 -
ps
:ps
命令用于显示有关当前运行进程的信息。它可以显示在特定时刻运行的进程的快照,或提供进程的持续列表。 -
pstre
:pstre
命令不是标准的Linux命令。您可能指的是自定义的或第三方命令,用于提供与进程相关的信息。如果您指的是您所指的名为pstre
的特定命令或工具,请提供更多细节,以便我能够进一步帮助您。
ps aux
a:当前终端下的所有进程
x:当前用户下的所有进程
u:输出格式
-
PID: 进程的唯一标识符,即进程ID。
-
CPU: 进程在CPU上的占用情况,即进程的CPU利用率。
-
VSZ: 进程所占用的虚拟内存大小,单位为KB。
-
RSS: 进程使用的实际物理内存大小,即Resident Set Size,单位为KB。
-
TTY: 控制终端的名称。
-
STAT: 进程的状态,例如R表示运行,S表示睡眠,Z表示僵尸进程等。
-
START: 进程启动的时间。
-
TIME: 进程在CPU上的累计执行时间。
-
COMMAND: 启动进程的命令行。
kill -l:
列出进程管理方式
9:杀死进程
18:恢复进程
19:停止进程
kill -9 进程id:杀死进程
kill -18 进程id:恢复进程
kill -19 进程id:停止进程
jobs:
-
jobs
命令的格式和用法:- 格式:
jobs [options]
- 用法:
jobs
命令用于显示当前shell会话中正在运行的作业列表。- 可选参数:
-l
:显示作业号、PID以及作业的状态。-p
:仅显示与作业相关的进程组ID。-r
:仅显示正在运行的作业。-s
:仅显示已停止的作业。
- 可选参数:
- 格式:
fg:
-
fg
命令的格式和用法:- 格式:
fg [job_spec]
- 用法:
fg
命令用于将一个后台作业切换到前台运行。- 参数:
job_spec
:作业号或作业标识符,指定要切换到前台的作业。- 作业号:使用作业列表中的编号,如
%1
表示作业号为1的作业。 - 作业标识符:使用
%
后跟作业号或进程组ID,如%3
或%group_id
。
- 作业号:使用作业列表中的编号,如
- 参数:
- 格式:
日志管理:
log:标识一般信息或事件的记录
bug:标识日志中的错误或异常情况
err:标识日志中的错误信息
ls /var/log/:查看日志文件
messages:系统服务
日志优先级:
-
0 - Emergency (紧急): 表示系统不可用或者出现严重错误,需要立即采取行动。
-
1 - Alert (警报): 表示需要立即采取行动,但不一定需要立即停止系统。
-
2 - Critical (严重): 表示严重的错误,需要立即解决。
-
3 - Error (错误): 表示出现错误,但系统仍然可以继续运行。
-
4 - Warning (警告): 表示可能出现问题,需要引起注意。
-
5 - Notice (通知): 表示普通但重要的消息。
-
6 - Informational (信息): 表示提供一般信息。
-
7 - Debug (调试): 表示调试信息,通常用于开发和调试目的。
jourbalctl -n 日志级别:查询日志级别信息
磁盘分区管理:
MBR格式:2T及以下
GPT格式:128个分区,2T以上
lsblk:
列出磁盘信息
fdisk:
分区格式化
mkfs:
格式化
mount:
挂载
lvm逻辑卷:
流程:
创造物理卷--->创造卷组--->将卷组内容添加到逻辑卷中
pvs
:显示物理卷的信息。vgs
:显示卷组的信息。lvs
:显示逻辑卷的信息。
创造物理卷:
pvcreate /dev/sdb5
创造卷组:
vgcreate vgs(名称可以自定义) /dev/sdb5
逻辑卷:
lvcreater -l +100%free -n lvs(名称自定义:逻辑卷的名字) vgs(卷组名)
+100%:将所有的空间全部给它
交换分区:
交换分区格式化:
mkswap /dev/adb7
vim /etc/fastab
打开分区:
swapon -s
关闭分区:
sponoff -s
RAID磁盘阵列:
RAID(Redundant Array of Independent Disks)是一种通过将多个磁盘组合在一起来提高数据存储性能、容量和冗余度的技术。在Linux系统中,可以使用软件RAID来创建和管理RAID磁盘阵列。常用的RAID级别包括RAID 0、RAID 1、RAID 5、RAID 10等,每种级别都有不同的特点和应用场景。
以下是一些在Linux中管理RAID磁盘阵列时常用的命令:
-
mdadm: mdadm命令用于管理Linux软件RAID设备。常用选项包括:
-
cat /proc/mdstat: 查看当前系统中的RAID设备状态和信息。
-
mdadm.conf: 配置文件,用于指定系统启动时要激活的RAID设备。
-
mdadm --assemble: 在系统启动时重新组装RAID设备。
-
mdadm --fail / mdadm --remove: 将一个磁盘标记为失败或从RAID设备中移除。
-
mdadm --add: 将一个新的磁盘添加到RAID设备中。
-
mdadm --grow: 调整RAID设备的大小或级别。
系统启动流程:
流程:
-
BIOS(Basic Input/Output System)或UEFI(Unified Extensible Firmware Interface):计算机开机时首先加载BIOS或UEFI固件,进行硬件自检和初始化,并选择引导设备。
-
MBR(Master Boot Record)或GPT(GUID Partition Table):在选择的引导设备上,系统会读取MBR或GPT分区表,确定操作系统所在的分区。
-
Bootloader:根据MBR或GPT中的引导标志,系统会加载相应的引导加载程序(Bootloader),如GRUB2(GRand Unified Bootloader 2)。
-
GRUB2:GRUB2是常用的引导加载程序,它会显示引导菜单,允许用户选择要启动的操作系统或内核。GRUB2的配置文件通常为
/boot/grub/grub.cfg
。 -
内核加载:一旦用户选择了要启动的操作系统或内核,GRUB2会加载相应的内核文件和初始内存盘(initrd)。
-
系统初始化:内核启动后,会初始化系统硬件、加载驱动程序和文件系统,并启动第一个用户空间进程(init进程)。
关键命令和配置文件:
-
boot:在BIOS或UEFI中选择引导设备。
-
grub-install:安装GRUB2引导加载程序。
-
grub-mkconfig:生成GRUB2的配置文件。
-
/etc/default/grub:GRUB2的默认配置文件,用于设置引导菜单等选项。
-
/boot/grub/grub.cfg:GRUB2的配置文件,包含引导菜单的内容。
-
boot:在BIOS或UEFI中选择引导设备。
-
格式:根据具体计算机的BIOS或UEFI界面进行选择引导设备的操作。
-
-
grub-install:安装GRUB引导加载程序。
-
格式:
grub-install [选项] [目标设备]
-
示例:
grub-install /dev/sda
-
-
grub-mkconfig:生成GRUB的配置文件。
-
格式:
grub-mkconfig -o [配置文件路径]
-
示例:
grub-mkconfig -o /boot/grub/grub.cfg
-
-
reboot:重新启动系统。
-
格式:
reboot
-
-
shutdown:关闭系统。
-
格式:
shutdown [选项] [时间]
-
示例:
shutdown now
-
-
systemctl:用于管理系统服务和启动项。
-
格式:
systemctl [命令] [服务名]
-
示例:
systemctl start sshd
-
-
journalctl:查看系统日志。
-
格式:
journalctl [选项]
-
示例:
journalctl -xe
-
-
lsblk:列出系统中的块设备信息,包括分区和磁盘。
-
格式:
lsblk [选项]
-
示例:
lsblk
-
-
blkid:显示块设备的UUID和文件系统类型。
-
格式:
blkid [设备名]
-
示例:
blkid /dev/sda1
-
-
mount:挂载文件系统。
-
格式:
mount [选项] [设备名] [挂载点]
-
示例:
mount /dev/sdb1 /mnt/data
-
-
umount:卸载文件系统。
-
格式:
umount [挂载点]
-
示例:
umount /mnt/data
-
-
ifconfig 或 ip:配置网络接口。
-
格式:
ifconfig [接口名] [选项]
或ip [命令] [对象]
-
示例:
ifconfig eth0 up
或ip addr show
-
-
route:查看和配置路由表。
-
格式:
route [选项]
-
示例:
route -n
-
-
ping:测试网络连通性。
-
格式:
ping [目标地址]
-
示例:
ping www.example.com
-
-
hostname:查看或设置主机名。
-
格式:
hostname [选项]
-
示例:
hostname
或hostnamectl set-hostname myhostname
-
破解密码:
1.在boot引导时按下e键进入紧急引导--->grub界面
按e键:
2.将原来的只读(ro)修改为读写(rw)
3.在末行加入解释器:init=/bin/bash
4.ctr+x执行进入到紧急模式
5.输入passwd root
防火墙:
在Linux系统中,防火墙是用于保护系统安全的重要组件,可以通过控制数据包的流动来提高系统的安全性。在Linux系统中,防火墙的功能通常由内核(kernel)提供,并且可以与安全模块如SELinux(Security-Enhanced Linux)结合使用。
SELinux:
-
Enforcing:在这种模式下,SELinux会强制执行安全策略,拒绝任何违反策略的操作,并记录在日志中。
-
Permissive:在这种模式下,SELinux会允许违反安全策略的操作,但会记录在日志中,不会阻止操作。
-
Disabled:在这种模式下,SELinux完全被禁用,不会对系统资源进行任何访问控制。
命令格式和使用方法:
-
查看SELinux状态:
-
命令:
sestatus
-
作用:显示当前SELinux的状态,包括工作模式(enforcing、permissive或disabled)和其他相关信息。
-
-
临时修改SELinux模式:
-
命令:
setenforce [0|1]
-
作用:临时修改SELinux的工作模式。0表示Permissive模式,1表示Enforcing模式。
-
-
永久修改SELinux模式:
-
编辑配置文件
/etc/selinux/config
,将SELINUX=
后面的值修改为enforcing
、permissive
或disabled
来设置SELinux的工作模式。 -
重启系统使更改生效。
-
-
修改SELinux上下文:
-
命令:
chcon
-
作用:用于修改文件或目录的SELinux上下文,包括文件类型、标签等。
-
firewall-cmd:
firewall-cmd
命令是用于配置和管理Firewalld防火墙的命令行工具。Firewalld是一个动态的、管理方便的防火墙解决方案,可以在运行时动态地管理防火墙规则,而无需重启防火墙服务。
firewall-cmd
命令及其功能:
-
查看防火墙状态:
-
firewall-cmd --state
:显示防火墙的当前状态(是否运行)。
-
-
查看防火墙规则:
-
firewall-cmd --list-all
:显示所有防火墙规则,包括区域、服务、端口等信息。
-
-
开启/关闭防火墙:
-
firewall-cmd --state
:显示当前防火墙状态。 -
firewall-cmd --reload
:重新加载防火墙规则,使更改生效。 -
firewall-cmd --runtime-to-permanent
:将运行时的规则保存为永久规则。
-
-
管理防火墙规则:
-
firewall-cmd --zone=public --add-port=80/tcp
:在公共区域添加允许TCP端口80的规则。 -
firewall-cmd --zone=public --remove-port=80/tcp
:在公共区域移除TCP端口80的规则。 -
firewall-cmd --zone=public --add-service=http
:在公共区域添加允许HTTP服务的规则。 -
firewall-cmd --zone=public --remove-service=http
:在公共区域移除HTTP服务的规则。
-
-
设置默认区域:
-
firewall-cmd --set-default-zone=public
:设置默认区域为公共区域。
-
firewall-cmd --list-all
列出所有的防火墙规则和设置
firewall-cmd --parmanent --zone=public --add-service=http
在防火墙配置中永久性地添加一个规则,允许HTTP流量通过public区域
重新加载防火墙配置:
更多推荐
所有评论(0)