文件系统

/bin: binary, 表示这个目录存储的是经常使用的命令

/sbin: system, 系统管理员使用的系统管理程序

/root:这是系统管理员(root user)的目录

/etc:这里主要存放了系统配置方面的文件

/dev:这里主要存放与设备(包括外设)有关的文件(unix和linux系统均把设备当成文件)。

/home:这里主要存放你的个人数据。

/tmp:这是临时目录。

/mnt:这个目录一般是用于存放 “挂载储存设备的挂载目录” 的,比如有cdrom 等目录。

/usr:在这个目录下,你可以找到那些不适合放在/bin或/etc目录下的额外的工具

/opt:这里主要存放那些可选的程序。

/proc:操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。

/var:这个目录的内容是经常变动的,看名字就知道,我们可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。

/boot:Linux的内核及引导系统程序所需要的文件目录,比如 vmlinuz initrd.img 文件都位于这个目录中。

/media:有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。

Vim模式转换

image-20230525162641408

Vim快捷键

yy:复制一行(8yy 复制8行)

p:粘贴一行(8p 粘贴8行)

dd:删除一行(从行开始,删除3行, 3dd)

撤销:u

从当前光标开始,复制到行尾: y$ (删除y换成d)

从当前光标,往行头:y^ (删除y换成d)

复制当前单词:yw (删除y换成d)

shift + R 替换 类似windows下的insert模式

H:移动到文件头

h:左移光标

l:右移光标

j:上移一行光标

k:下移一行光标

e:移动到行尾

gg: 移动到文件头

set nu: 显示行号

3G:移动到第三行

G:移动到最后一行[+ e:移动到最后一个字符本文件]

o:光标下新开一行进入编辑模式

/要查找的词(修改配置文件常用)🍍

:%s/old/new/g: 全局替换

网络配置

主机模式:主机能和虚拟机通信,但是虚拟机不能访问外网

NAT模式:虚拟机能访问外网,并且主机能和虚拟机通信。

静态网络配置

/etc/sysconfig/network-scripts/ifcfg-ens33
其中将bootproto 修改为static, 并且添加IPADDR=需要修改成的静态地址,GATEWAY=需要修改的网关地址,DNS1=需要修改的域名解析地址

image-20230525194327985

修改主机名

用处:可用主机名代替主机IP

1、修改主机名

1
hostnamectl set-hostname 主机名(或者 vim /etc/hostname 修改)

2、添加主机名和ip映射

1
vim /etc/hosts

image-20230525200544764

打开某个端口

1
2
3
4
1、firewall-cmd --get-active-zones
2、firewall-cmd --zone=public --add-port=6379/tcp --permanent
3、firewall-cmd --reload
4、firewall-cmd --query-port=6379/tcp

修改linux ssh端口号,可能没有设置导致访问不了

1
2
3
4
5
6
7
8
9
10
11
12
13
1、vim /etc/ssh/sshd_config
2、删除Port22,前的#
3、重启ssh服务才能生效 service sshd restart

4、一些其他指令
关闭防火墙
sevice iptables stop

查看sshd是否开启(这里sshd是要开启的)
service sshd status

开启sshd
service sshd start

image-20230525202335709

通过windows自带的powershell ssh 登录

1
ssh 主机地址

系统管理

系统运行级别

1
2
3
查看默认级别 cat /etc/inittab
systemctl get-default
更改默认级别 systemctl set-default graphical.target 设置为图形模式

运行级别0:系统停机状态,默认运行级别不能为0,否者无法正常启动

运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录

运行级别2:多用户状态(没有NFS),不支持网络

运行级别3:完全多用户(有NFS),登录后控制台命令模式

运行级别4:系统未使用,保留

运行级别5:X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭重启,默认运行级别不能设为6,否者不能正常启动

常用命令

帮助命令

1
2
3
4
5
6
man vi
man cd
类似命令 help 仅用于内置命令
help cd
其他外置命令
cd --help

装中文包

1
2
sudo yum install man-pages-zh-CN 安装  有问题👊👊👊
man vi 查看

文件管理

显示文件信息:ls[-l,-a]、ll

删除文件:rm[-rf 递归+不提示]

复制文件:cp 文件/目录 复制到的位置 [-r 递归复制]

移动文件:mv 文件/目录 移动位置

修改文件名字(单文件):mv 文件 目录/文件名

查看小文件:cat 查看的文件

查看大文件:more 查看的文件

查看大文件:less(与more类似,但是并不是一次性打开整个文件,而是按需加载内容,专注于大文件)👍👍👍👍👍[shift + G 定位到文件末 g 定位到文件头 /关键字 搜索]

输出文件到控制台(类似cat):echo 查看文件[-e 支持反斜杠]

1
echo -e 'hello \n'

输入输出重定向👍👍

1
2
3
4
ls -l > 文件 (列表内容写入文件a.txt中(覆盖写))
ls -al >> 文件 (列表内容追加到文件a.txt的末尾)
cat 文件1 > 文件2 (将文件1的内容覆盖到文件2)
echo '内容' >> 文件

显示文件头的内容

1
2
head 文件 (查看文件头10行内容)
head -n 5 (查看文件头5行内容,5可以是任意数)

文件尾内容👍👍

1
2
3
tail 文件 (查看文件尾部10行内容)
tail -n 5 文件 (查看文件尾部5行内容,5可以是任意行数)
tail -f 文件 (实现追踪该文档的所有更新,监控当前文件内容状态;需新开窗口执行其他命令)👍👍👍

软链接(link)类似windows的快捷方式

1
2
3
ln -s[原文件或目录][软链接名] (给原文件创建一个软链接)(不加-s 就是硬链接)
👍👍
删除软链接 rm -rf 软链接名,而不是rm -rf软链接名/ (如果使用rm -rf软链接名/删除,会导致软链接对应的真是目录内容删掉)

image-20230526094146107

历史指令记录

1
history

硬链接和软链接👍👍👍

硬链接:一个文件的多个名字,修改一个文件内容会影响到其他文件的内容,并且硬链接的innode是一致的,所以无法创建一个目录的硬链接

软链接:一种特殊文件,指向目标文件,并且带有自己的innode

时间

1
2
3
4
5
6
7
8
9
10
date
提取相关时间
date +%Y 2023 年
date +%y 23 年
date +%s 时间戳秒
date '+%Y-%m-%d %H:%M%S'
date -s '2023-05-20 23:24:00' 重设时间\
cal 日历
cal 2023 全年日历
cal -3 最近三个月日历

用户管理

需要 root 权限

添加用户

1
useradd -d /home/dave david

设置密码

1
passwd david

查看是否有这个用户

1
id username

切换用户

1
su username

设置普通用户临时root权限,需要root去修改/etc/sudoers,将boluo ALL(ALL) ALL添加在里面

1
sudo ls

image-20230527001716546

删除用户

1
2
rm -rf username/  会留下username这个目录
userdel -r username 什么都不会留下

新增用户组(默认情况下,新建用户会自带和用户id一样的用户组id)

1
groupadd sgroup 

查看组

1
cat /etc/group

新增用户到组

1
usermod -g 组名 用户名

修改组名称

1
groupmod -n 新名称 旧名称

删除组

1
groupdel 组名

文件属性权限解释

image-20230527113520469

image-20230527113556787

其中第一个文件是一个软链接有读写和执行权限,并且组权限有读写和执行…

变更文件权限

1
2
3
4
5
6
7
8
9
u:所有者 g:所有组 o:其他人 a:所有人
r=4 w=2 x=1 rwx=4+2+1=7
方式一
chmod u+x 文件名称或目录(给用户添加执行权限)
chmod g+x 文件名称或目录(给用户组添加执行权限)
方式二
chmod [mode=421][文件或者目录]
chmod 777 hello.txt 表示hello.txt所有者、所有组、其他人有读写和执行权限
chmod -R 777 eee eee目录及以下文件赋予所有权限(-R递归以下子文件)

更改文件所有者和所有组

1
2
chown boluo ssvip 更该ssvip的所有者
chgrp qixiu2 ssvip 更改ssvip的所有组

image-20230527121542138

搜索查找

1
2
3
4
find -name hello.txt
find /home/ hello.* 在/home目录下去找hello.开头的文件
find /home/ -user xigua 查找用户下文件
find /home/ -size +100M 文件大小限定(大于100M)

image-20230527124918592

image-20230527125152141

locate指令用于事先建立在系统中所有文件名称及路径的locate数据库实现快速定位,locate并不会遍历整个文件系统,所以查询数据较快。(需实现执行更新)

1
2
3
yum install mlocate 可能系统中没有这个指令,需要先安装🎈🎈🎈
updatedb 执行更新
localte hello.txt

image-20230527132851484

grep过滤查找及|管道符

1
2
grep 选项 查找内容 源文件 (-n 显示匹配行及行号)
配合 wc 可查看文件大小词数 行数

image-20230527133620243

image-20230527133854302

压缩解压打包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
只能压缩文件

gzip 压缩
gunzip 解压缩
gzip 文件名
gunzip 压缩包

可以压缩文件和目录,-r可递归压缩
zip、unzip

打包tar
tar [选项] XXX.tar.gz 将要打包进去的内容(推荐选项 -zxvf(解压) -zcvf(压缩))
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩🎈
-x 解包.tar文件🎈
-C 解压到指定目录

tar -zcvf h.tar.gz hello.txt hello2.txt 压缩多个文件
tar -zxvf h.tar.gz -C ../ 解压到指定目录

磁盘管理

1
2
安装tree插件
yum install tree

image-20230527140936742

du 可查看硬盘使用(disk usage)

1
2
3
4
5
6
7
du
-h 以人们已阅读的GB MB KB等格式自行显示
-a 不仅查看子目录大小,还要包括文件
-c 显示所有文件和子目录大小后,显示总和
-s 只显示总和
--max-depth=n 指定统计子目录的深度第n层
du --max-dupth=3 -ah

df 查看磁盘空间使用情况 (disk free)

df 选项

1
df - h

image-20230527142632018

lsblk 查看设备挂在情况

1
lsblk -f

image-20230527143245276

mount/umount 挂载/卸载

对Linux用户来讲,不论有几个分区,分给哪一个目录使用,他总归就是一个根目录,一个独立且唯一的文件结构

1
2
3
mount [-t vfstype][-o options] device dir (挂在设备)
umount 设备文件名或挂载点 (卸载设备)
下图挂载一个光盘rom设备

image-20230527171004692

磁盘分区

1
2
3
4
5
6
7
8
9
fdisk -l (查看磁盘分区详情) root用户下,才能使用
添加分区操作步骤:
1、新硬盘进行分区操作
2、分区后进行格式化
3、开始挂载硬盘
👇👇👇
fdisk 硬盘设备名 (对新增磁盘进行分区操作)
msfs -t xfs /dev/sdb1 格式化 sdb1(分区后执行)
mount /dev/sdb1/ /home/boluo/guazaidian (开始挂载硬盘)

进程管理

systemctl (centos7 版本)

systemctl start | stop | restart | status 服务名

/usr/lib/systemd/system 查看所有服务路径

查看当前进程状态 ps

1
2
3
4
5
6
7
8
9
10
ps aux | grep xxx (查看系统所有进程)
ps -ef | grep xxx (可以查看子父进程之间的关系)

选项
a 列出带有终端的所有用用户的进程
x 列出当前用户的所有进程, 包括没有终端的进程
u 面向用户友好的显示风格
-e 列出所有进程
-u 列出某个用户关联的所有进程
-f 显示完整格式的进程列表

终止进程 kill

1
2
3
kill [选项] 进程号 (通过进程号杀死进程)
killall 进程名称 (杀死所有对应进程名称)
-9 立即强制杀死

查看当前进程状态 top (实时)

1
2
3
4
5
6
top
shift + p 按 cpu占用排序
shift + n 按 pid排序
shift + m 按 内存使用排序
u 可以查询用户
k 可以杀死对应进程

显示网络状态和端口占用信息 netstat

1
2
3
4
5
6
netstat -anp | grep 进程号 (查看进程网络信息) 
netstat -nlp | grep 端口号 (查看网络端口占用情况)
-a 显示所有正在监听和为监听的套接字
-n 拒绝显示别名,能显示数字的全部转换成数字
-l 仅列出在监听的服务状态
-p 表示显示那个进程在调用

系统定时任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
重新启动crond服务 systemctl restart crond
crontab [选项]
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
编辑
crontab -e
格式
项 含义 范围
第一个 * 一个小时中的第几分钟 0-59
第二个 * 一天当中的第几小时 0-23
第三个 * 一个月中的第几天 0-31
第四个 * 一年当中的第几个月 1-12
第五个 * 一周当中的星期几 0-7(0和7都代表星期日)
特殊符号
* 代表任何时间
, 代表不连续时间
- 代表连续的时间范围
*/n 代表每隔多久执行一次
示例
45 22 * * * 每天中的22时45分执行命令
0 0 1,15 * 1 每个月中的1号和15号的0时0分执行命令,每周1的0时0分(星期几和第几天不推荐同时出现,容易混乱)

示例
crontab -e
*/1 * * * * echo 'hello' >> /tmp/hello.txt (没分钟向hello.txt添加hello)
crontab -r 移除当前用户所有定时任务

软件包管理工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
RPM(ReadHat Package Manager) 

rpm -qa 查询已安装软件
rpm -qi 软件名称 是否已经安装此软件
rpm -e 软件包 卸载软件
rpm -e --nodeps 软件包 卸载软件,不考虑依赖关系

rpm -ivh rpm包名 安装软件
-i install
-v --verbose,显示详细信息
-h --hash,进度条
--nodeps 安装前不检查依赖

推荐
yum install 软件名
yum remove 软件名
yum update 升级软件
参数---
install 安装
update 更新
check-update 检查是否有可用更新
remove 移除
list 显示软件包信息
clean 清理yum过期的缓存
deplist 显示yum软件包的所有依赖关系

更改软件更新下载镜像源🎈🎈🎈
todo