Linux基础

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统

一、引言

Linux操作系统现在已经成为后台开发人员必备的技能,并且后期学习的各种知识都会涉及到Linux操作系统。

二、Linux的目录结构

Windows的目录结构是带有盘符的。D: E: C: ,而Linux中是没有盘符的
在终端中输入ls /查看Linux的顶级目录。

顶级目录

Linux的常用目录

常用目录

  • root:该目录为系统管理员HOME目录
  • bin:这个目录下放着经常使用的命令
  • boot:这里存放的是启动Linux时的一些核心文件
  • etc:存放系统管理所需要的配置文件和子目录
  • home:普通用户的HOME目录
  • usr:默认安装软件的目录,类似Windows中的Program Files目录
  • opt:是主机额外安装软件拜访的目录

三、Linux基本命令

Linux中命令的基本格式:命令【选项】【参数】

需要注意,个别命令是不遵循这个格式

当命令中有多个选项时,可以写在一起的,并且选项也是由简写方式的命令 -选项A选项B

Linux的基本操作命令,不遵循上述格式,但是后期会经常使用…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#1.我是谁
who am i

#2.我在哪
pwd

#3.查看ip地址
ip a | ip address

#4.清屏
clear

#5.ping域名|ip
ping 地址

#6.强制停止
Ctrl+C

四、Linux目录命令【重点】

4.1 列出目录

查看指定目录下的内容,默认查看当前目录下内容

Linux中的隐藏文件是以.开头的,当前目录使用.表示,上一级目录使用..表示

1
2
3
4
5
ls [-ald] [目录名]
# 目录名不填写,默认为当前目录。
# -a:列出的全部的文件,包括隐藏文件
# -1:列举出全部的信息
# -d:仅查看目录本身

4.2 切换目录

实现目录间切换,使用绝对路径、相对路径、特殊符号

1
cd 具体路径|特殊符号
特殊符号 表达的路径
. 当前目录
上一级目录
/ 根目录
~ 当前登录用户的HOME目录
- 返回

4.3 创建目录

创建目录,以及创建多级目录方式

1
2
mkdir [-p] 目录名
# -p:代表创建多级目录时,使用

4.4 删除目录

删除非空目录或包含内容的目录

1
2
3
4
5
6
7
# 只能删除空目录
rmdir 目录名

# 删除非空目录
rm [-rf] 目录名
# -r:代表递归删除目录下的全部内容
# -f:不询问,直接删除

4.5 复制目录

复制目录下的全部内容

1
2
cp-r 来源目录 目标目录
# -r:递归复制全部内容,必填项

4.6 移动、重命名目录和文件

移动、重命名目录和文件,会根据第二个参数指定具体操作逻辑

1
2
mv 目录名 新目录名|路径
# 如果第二个参数指定的路径不存在,就是重命名,如果第二个参数的路径存在,就是移动

五、Linux的文件命令【重点】

5.1 创建文件

创建空文件

1
touch 文件名1 文件名2 ...

5.2 编辑文件

编辑文件,后期最常的命令之一

1
2
3
4
5
6
7
8
9
vi文件名		# 查看文件。(查看模式)
i | a | o # 进入编辑模式。(编辑模式)
# i:在当前光标处,进入编辑模式。
# a:在当前光标后一格,进入编辑模式
# 0:在当前光标下一行,进入编辑模式。
esc # 退出编辑模式,回到查看模式。
: # 从查看模式进入到底行命令模式。(底行命名模式)
# 在底行命令模式下,输入wq:保存并退出。输入q!:不保存并退出
# 在查看模式下,按ZZ,可以快速保存并退出。

5.3 vi打开文件时,其他操作

编辑文件时,常用的快捷键,方便操作

1
2
3
4
5
6
7
8
9
10
11
12
13
# 在vi文件时,在底行命令模式下可以输入以下常用内容

# 行号操作
set nu # 查看文件的行号
to rownum # 快速的跳转到指定行
set nonu # 取消行号

# 搜索操作
/word # 类似Windows的Ctrl+F搜索文件中的具体内容所在位置,查看下一个可以输入字母n

# 快速定位
G # 快速跳转到最后一行
gg # 快速跳转到第一行

5.4 查看文件

根据不同的业务,可以选择不同的查看方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 查看文件,直接展示到最后一行
cat 文件名

# 从第一行开始查看文件内容,展示全部
tac 文件名

# 从最后一行开始展示
nl 文件名

# 显示文件的用时,展示行号
more 文件名
# 查看大文件时,可以一页一页的向下翻
# 按space向下翻页,退出时按q

less 文件名
# 查看大文件时,可以任意的向上或者向下翻
# 向上或向下翻页PageUp和PageDown,一行一行查看,按光标的↑↓

# 只查看前几行
head 文件名

# 只查看后几行
tail 文件名
# tail -f 日志 监控日志

5.5 复制文件

复制文件到指定目录下

1
cp 文件名 目录

5.6 删除文件

删除文件方式

1
2
rm [-f] 文件名
# -f: 是否询问

六、Linux的压缩包命令【重点】

6.1 针对tar命令

Linux中常用的压缩包,大多是.tar,.tar.gz,.tgz的

6.1.1 解压压缩包

针对压缩包后缀的情况,采用不同的参数,否则可能会损失文件

1
2
3
4
5
6
tar[-zxvf] 压缩包名称 [-C路径]
# -z:代表压缩包后级是.gz的
# -x:代表解压
# -v:解压时,打印详细信息
# -f:-f选项必须放在所有选项的最后,代表指定文件名称
# -C路径:代表将压缩包内容解压到指定路径

6.1.2 打包成压缩包

可以将多个文件以及目录打包成压缩包,根据选择的参数指定压缩包名

1
2
3
tar[-zcvf] 压缩包名称 文件1 文件2 目录1 目录2 ...
# -c:代表打包
# 其他参数同上

6.2 针对zip类型压缩包

Linux不仅仅针对tar压缩包,也支持zip,rar这种Windows下的压缩包。

不过需要安装软件针对对各种类型压缩包的操作

6.2.1 安装软件

1
2
yum -y install zip # 打包程序
yum -y install unzip # 解压程序

七、用户和用户组的操作

7.1 用户的常用操作命令

Linux是一个多用户的操作系统,任何一个用户想要操作Linux操作系统,必须向系统管理员申请一个账户

才可以,并且以这个账号的身份去操作Linux。

用户的账号一方面可以帮助系统管理员追踪当前用户的操作。另一方面可以控制当前用户对系统资源访问。

7.1.1 用户的创建

1
2
3
4
5
useradd [-cgd] [选项指定的具体内容] 用户名

# -c:代表comment,给用户添加一段注释
# -g:代表group,可以修改用户的所在组
# -d:代表指定用户的HOME目录

7.1.2 设置用户密码

1
passwd 用户名

7.1.3 切换用户

1
2
3
4
su 用户名

# [root@localhost ~]# -> root用户在本地登录,并且当前在~目录下,#代表是超级管理员
# [qf@localhost ~]$ -> qf用户在本地登录,并且当前在~目录下,$代表是普通用户

7.1.4 删除用户

1
2
3
userdel [-r] 用户名

# -r: 代表删除用户的同时,删除该用户的HOME目录

7.1.5 修改用户

1
2
3
4
5
usermod [-cgd] [选项指定的具体内容] 用户名

# -c:代表comment,给用户添加一段注释
# -g:代表group,可以修改用户的所在组
# -d:代表指定用户的HOME目录

7.2 用户组的操作

用户的身份除了用户本身,还会分配到指定的用户组,可以通过用户组对设置一些文件的操作权限

7.2.1 创建用户组

1
groupadd 用户组名

7.2.2 修改用户组

1
groupmod [-n] [选项指定的具体内容] 用户组名

7.2.3 删除用户组

1
2
groupdel 用户组名
# 只能删除不存在的用户组名称

八、文件权限的修改【重点】

首先我们要清楚Linux文件的权限信息

在Linux中输入ls -l或者ll查看文件和目录的详细信息

文件详情
文件详情

实例中,a目录的第一个属性用“d”标识这个a是一个目录。

anaconda-ks.cfg第一个属性用“-"标识他是一个文件。

在Linux文件详情的后面属性需要分为三组查看

  • rwx:代表文件拥有者的权限

  • rwx:代表文件所属组用户的权限

  • rwx:代表其他用户对当前文件的操作权限

    • r:代表read,读的权限

    • w:代表write,写的权限

    • x:代表execute,代表执行权限

其余信息

  • 后续的第一个root:代表当前文件的拥有者
  • 后续的第二个root:代表当前文件的所属组
  • 后续分别为:文件的大小和最后修改时间等信息

8.1 对文件权限的修改

使用chmod对文件的权限进行修改,一种使用数字,一种使用符号…

  • 数字方式方便操作,不过要修改整体权限信息
  • 符号方式更细粒度华,不过操作麻烦

8.1.1 数字方式

1
2
3
4
chmod [-R] 777 文件|目录

# rwx在这三个权限中r:4,w:2,x:1
# -R:当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限。

8.1.2 符号方式

1
2
3
4
5
6
chmod [-R] a=rw 文件|目录

# user : u , group : g , other : o , all : a
# read: r, write:w, execute:x
# 赋予权限的方式,添加:+,减掉:一,设定:=
# -R:当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限。

8.2 文件拥有者及所属组修改

chown可以直接修改拥有者和所属组,chgrp只能修改所属组……

1
2
3
4
5
6
7
8
# 修改文件的拥有者和所属组
chown [-R] 拥有者:所属组 文件|目录

# 修改文件的拥有者
chown [-R] 拥有者 文件|目录

# 修改文件的所属组
chgrp [-R] 所属组 文件|目录

九、Linux的其他操作命令

9.1 进程的操作

需要用到类似Windows的结束进程时,在Linux下需要使用如下命令

1
2
3
4
5
6
7
ps -ef
#查看全部正在运行的进程

ps- ef|grep 搜索的内容

#杀死进程
kill-9pid

9.2 服务的操作

和Windows下的服务操作一致,只需使用如下命令,默认为centos7版本

1
2
#针对服务的启动,停止,重启,开机自动启动,禁止开机自动启动,查看服务状态。
systemctl start|stop|restart|enable|disable|status 服务名称

9.3 端口号查看

如发现端口号被占用,可以使用如下方式查找pid,并结束进程

1
2
3
4
#想使用指定的命令需要事先下载netstat
yum-y install net-tools
#查看端口号占用情况
netstat -naop|grep 端口号

9.4 访问地址

类似浏览器访问路径,无法图形化显示,一般用于测试

1
curl 访问地址

9.5 查找文件

在Linux中查找指定文件,参数较多,如下为根据文件名称查询

1
find 路径 -type f | grep profile

十、Linux下安装软件

10.1 安装JDK

在Linux下安装JDK,并配置JAVA_HOME环境变量

10.1.1 下载JDK压缩包

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

10.1.2 上传并解压JDK压缩包

后期大多软件都安装在/usr/local下,直接使用tar解压

1
tar-zxvf jdk-8u241-linux-x64.tar.gz -C /usr/local

10.1.3 修改JDK目录名

为了方便配置环境变量,修改一下目录名称

1
2
cd /usr/local
mv jdk1.8.0_241 jdk

10.1.4 修改环境变量

Linux提供了两种环境变量的文件

  • 第一个是用户级别的环境变量,存放在:~/bashrc
  • 第二个是系统级别的环境变量,存放在:/etc/profile
1
2
3
4
5
6
7
8
9
# 在环境变量文件中,添加如下内容
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH

# 重新加载环境变量文件
source /etc/profile

# 最终测试
java -version

10.2 安装MySQL

10.2.1安装MySQL的YUM存储库

使用wget下载即可,不过需要先下载wget,再通过wget下载rpm包

1
2
3
yum -y install wget
#通过wget下载MySQL存储库
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm

10.2.2安装下载好的rpm包

使用rpm包的命令直接安装

1
2
3
4
5
6
7
8
# 安装rpm包
rpm -Uvh mysq180-community-release-e17-3.noarch.rpm

# 查看rpm包
rpm -qa | grep 内容

# 卸载rpm(不需要指定当前命令。。。)
rpm -e --nodeps rpm名称

10.2.3选择发行版本

由于默认安装8.0版本的MySQL,我们需要修改为5.7版本

1
2
3
4
5
6
# 查看一下默认选择的发行版本
yum repolist all | grep mysql

# 通过编辑/etc/yum.repos.d/mysql-community.repo文件,去修改发行版本
# 将80的enabled更改为0,将67的enabled更改为1,保存即可,再次通过yum repolist all | grep mysql查看
# 效果如下
MySQ安装版本
MySQ安装版本

10.2.4安装MySQL社区版服务

开始安装,这一步需要下载一段时间

1
yum -y install mysql-community-server

10.2.5启动MySQL服务,并连接

安装成功后,手动启动,并使用日志中的密码登陆,而且第一个操作必须是修改密码,才可后续正常操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 启动MySQL服务
systemctl start mysqld.service

# 查看初始化密码
grep 'temporary password' /var/log/mysqld.log

# 连接MySQL服务
mysql -u root -p
Enter password:随机密码

# 修改密码
mysql> ALTER USER'root'@'localhost' IDENTIFIED BY 'POssword';

# 要求密码,必须携带大写字母,小写字母,数字,特殊符号

10.2.6开启远程连接

默认MySQL禁止远程链接,需要单独创建一个用户开启远程链接,这样就可以在windows下使用图形化工具连接

1
2
mysql> GRANT ALL PRIVILEGES ON*.* TO 'root'@'%' IDENTIFIED BY 'P0ssword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

查看防火墙规则,看ports是否开放了3306端口

1
firewall-cmd --list-all

开放端口

1
firewall-cmd --permanent --add-port=3306/tcp

重启防火墙(修改配置后要重启防火墙)

1
firewall-cmd --reload

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!