文章目录
1 前言
LInux占据了服务器操作系统的半壁江山,Ubantu和CentOS是最流行的发行版
Linux中一切皆文件
文件: 读写 查看 创建 删除 移动 复制 编辑
执行 执行程序
权限 用户 用户组
系统 磁盘 进程
2 操作文件
[root@localhost ~]# cd /home #切换目录
[root@localhost home]# mkdir testfile # 新建一个目录
[root@localhost home]# ls # 列出当前目录下的所有文件
testfile
[root@localhost home]# cd testfile/
[root@localhost testfile]# touch f1 # 新建一个文件
[root@localhost testfile]# ls
f1
[root@localhost testfile]# ll # ls升级版,显示目录下详细信息
总用量 0
-rw-r--r--. 1 root root 0 5月 10 10:35 f1
[root@localhost testfile]# echo "hello world" >> f1 # 写数据到问文件
[root@localhost testfile]# cat f1 # 查看文件输出
hello world
[root@localhost testfile]# rm -rf f1 # 删除文件
[root@localhost testfile]# ls # 列出目录内文件
[root@localhost testfile]# cp f1 f2
[root@localhost testfile]# ls
f1 f2
[root@localhost testfile]# cat f2
hello world
[root@localhost testfile]# mv f2 f3
[root@localhost testfile]# ls
f1 f3
[root@localhost testfile]# cat f3
hello world
主要命令:
mkdir :新建一个目录 mkdir xxx
ls : 列出当前目录所有文件
ll : 详细视图列出当前目录所有文件
cd:切换目录
pwd:返回当前工作目录的路径
touch:新建一个文件
echo:往文件内写数据 echo ”hello world“ >> f1
rm:删除命令 rm -rf f1
cp:拷贝 cp old_dir/old_file new_dir/new_file
mv:移动,等于剪切 mv old_dir/old_file new_dir/new_file
scp:本地拷贝到云端 scp 20210506.txt root@192.168.43.200/home/local.txt
ssh:ssh 到指定端口 ssh -p xx user@ip xx 为 端口号 user为用户名 ip为要登陆的ip,ssh root@ip_addr
3 编辑文件-Linux的Vim和Vi
3.1 基础应用
vi和vim是一款文本编辑器,文本编辑器基本功能是查看内容;编辑内容;保存内容,vi是基础版,vim是升级版编辑器
vim分为三种模式,分别是命令模式(输入命令)、输入模式(编辑文件)、底线命令模式(最后一行命令)
- 命令模式
vim test.txt # 进入命令模式
i # 进入编辑模式
x # 删除当前光标所在处的字符
esc # 推出编辑模式
: # 进入底线命令模式
- 底线命令模式
q : 退出程序
w : 保存文件
3.2 高级应用
- 光标移动、复制粘贴、搜索替换
# 移动光标
h 左箭头
j 下箭头
K 上箭头
l 右箭头
ctrl + f :向下移动一页
ctrl + b :向上移动一页
ctrl + d :向下移动半页
ctrl + u : 向上移动半页
+ :光标移动到非空格的下一行
- :光标移动到非空格的上一行
数字 + 空格 :移动光标
数字 + 回车 :移动光标换行
n< space>: 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。
0 或功能键[Home]: 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End]: 移动到这一行的最后面字符处(常用)
H: 光标移动到这个屏幕的最上方那一行的第一个字符
M: 光标移动到这个屏幕的中央那一行的第一个字符
L: 光标移动到这个屏幕的最下方那一行的第一个字符
G: 移动到这个档案的最后一行(常用)
nG: n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg: 移动到这个档案的第一行,相当于 1G 啊!(常用)
n< Enter>: n 为数字。光标向下移动 n 行(常用)
- 搜索、替换
/word : 从光标开始一直到文件结尾范围内搜索word
?word : 从文件开头一直到光标位置范围内搜索word
n :这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N :这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
- 删除
x,X : 删除命令,对于一行字,x为向后删除一个字符,相当于del,X为向前删除一个字符,相当于backspace
nx : 连续向后删除n个字符,3x,表示从光标位置开始向后的三个字符被删除
dd : 删除光标所在行的一整行,包括换行符
ndd : 删除光标所在的向下n行,5dd:表示删除光标所在行开始往下5行
d1G : 删除光标所在到第一行的所有数据
dg : 删除光标所在到最后一行的所有数据
d$ : 删除光标所在处到所在行最后一个字符
d0 :删除光标所在处到所在行第一个字符
- 复制
yy : 复制光标所在的行
nyy:复制光标所在行往下n行 5yy:复制光标所在行向下5行数据(包括光标行)
y1G: 复制游标所在行到第一行的所有数据
yG: 复制游标所在行到最后一行的所有数据
y0: 复制光标所在的那个字符到该行行首的所有数据
y$: 复制光标所在的那个字符到该行行尾的所有数据
- 粘贴
p,P: p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢?那么原本的第 20 行会被推到变成 30 行。(常用)
- 删除、复制粘贴补充
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u 复原前一个动作。(常用)
[Ctrl]+r 重做上一个动作。(常用)
- 指令行存储、离开
:w :保存编辑好的数据
:wl :文件属性为只读时,强制写入该档案,到底能不能写入,还是跟你对该档案的权限有关
:q :离开编辑器(vi/vim)
:q! :若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
:wq :储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ :这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!
:w [filename]:将编辑的数据储存成另一个档案(类似另存新档)
:r [filename]:在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename]: 将 n1 到 n2 的内容储存成 filename 这个档案。
:! command : 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中看 /home 底下以 ls 输出的档案信息!
:set nu : 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu : 与 set nu 相反,为取消行号!
4 用户与用户组
4.1 用户
Linux是多用户多任务的分时操作系统
需要使用操作系统的用户,必须向超级管理员申请一个账号,以这个账号的身份进入系统
每个账号有一个唯一的用户名和唯一的口令(口令=账号密码)
linux一切皆文件,对于用户相关操作,相同与操作配置文件/etc/passwd
- 添加用户
# 只有root可以添加用户
useradd 参数 用户名
-c :指定用户的一些注释
-d : 指定用户主目录,如果目录不存在,则同时使用-m选项,可以创建主目录
-g :用户组,指定用户所属的用户组
-G :用户组,指定用户所属的附加组
-m :使用者目录如不存在则自动建立
-s :shell文件 指定用户的登录shell
-u : 用户名
- 删除用户
# 只有root可以删除用户,如果账号不再使用,可以从系统中删除
userdel -r username # 删除用户,同时删除该用户的主目录
- 修改用户
# 只有root可以修改用户
usermod 选项 用户名
#选项同添加时的选型
usermod -s /bin/ksh -d /home/z –g developer kuangshen
- 切换用户
su username 【username是用户名】
# 从普通用户切换到root用户
sudo su
# 从普通用户切换到root用户后,退回到普通用户
exit / logout / ctrl+d
# 在切换用户时,切换后使用新用户的工作环境在su和username之间加”-“
su - username
$ 普通用户
# 超级用户
- 用户密码
# root用户下修改密码
passwd 参数 username
-l 锁定口令,禁用账号
-u 口令解锁
-d 使账号无口令
-f 强迫用户下次登录时修改口令
# 普通用户下修改密码
passwd
4.2 用户组
每个用户都有一个用户组,系统可以对一个用户组中进行集中管理。Linux下的用户属于与用户名同名的用户组,这个用户组在用户被创建同时创建
- 创建用户组
groupadd 选型 用户组
-g 组标记号,如不指定自增
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
groupadd group1 # 新增一个用户组group1
groupadd -p 520 group2 # 新增一个用户组group2 id指定为520
- 删除用户组
groupdel groupname
- 修改用户组名字、权限
groupmod 选项 groupname
-g 组标记号
-n 新用户组 重命名
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
# 此命令将组group2的组标识号修改为102。
groupmod -g 102 group2
# 将组group2的标识号改为10000,组名修改为group3。
groupmod –g 10000 -n group3 group2
- 切换组
#如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
#用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:
$ newgrp root
#这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。
4.3 用户与用户组相关配置文件
新增或者修改一个用户本质是操作 /etc/passwd 文件
新增或者修改一个用户组本质是操作/etc/group 文件
5 文件属性&权限
5.1 基本文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等:
当为[ d ]则是目录
当为[ - ]则是文件;
若是[ l ]则表示为链接文档 ( link file );
若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。
其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
每个文件的属性由左边第一部分的10个字符来确定(如下图):
从左至右用0-9这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中:
第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;
第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
5.2 修改文件属性
- 更改文件属组
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
- 更改文件属主,也可以同时修改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
- 更改文件9个属性
chmod [-R] xyz 文件或目录
#Linux文件属性有两种设置方法,一种是数字,一种是符号。
#Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
#先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
#r:4 w:2 x:1
#每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx---] 分数则是:
# owner = rwx = 4+2+1 = 7
# group = rwx = 4+2+1 = 7
# others= --- = 0+0+0 = 0
chmod 770 filename
5.3 查看文件内容
6 磁盘管理
df # 列出文件系统整体磁盘使用量
df -h # 使用MB或GB为单位显示磁盘使用量
du # 当前文件磁盘使用量
du -a # 显示所有包括隐藏文件的磁盘使用量
du -sm /* #跟目录下每个目录占用的容量,最大的是/usr
- 挂载一些本地磁盘或者文件
mount
# 挂载
mount /dev/upan /mnt/upan #将外部设备挂载到mnt的U盘
# 卸载
umount -f [挂载位置] # 强制卸载
7 进程管理
LInux中一个程序都有一个进程,每一个进程有一个PID
每一个进程都会有一个父进程
进程有两种形式,前台和后台
一般服务器是后台运行的,基本的程序都是前台运行
# 查看进程
ps 参数
-a : 显示当前终端运行的所有进程信息
-u : 显示当前登录用户的进程
-x : 显示后台运行进行的参数
ps -aux | grep mysql # 查看mysql的进程
# | 管道符号 A|B A命令的输出作为B命令的输入
ps -ef | grep mysql # 查看父进程
pstree -p # 显示父id
-u # 用户名
kill -9 PID # 杀进程
8 防火墙
# 查看firewall服务状态
systemctl status firewalld
# 开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all # 查看全部信息
firewall-cmd --list-ports # 只看端口信息
# 开启端口
开端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙:systemctl restart firewalld.service
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效