- A+
模块
- 认识Linux
- 基本的命令(文件操作、目录管理、文件属性、Vim编辑器、磁盘、账户管理)
- 软件的安装与部署
简介
为什么要学习linux?
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIN(可移植操作系统接口)和UNX的多用户、多任务、支持多线程和多CPU的操作系统。
在服务端、在开发领域Linux越来越受欢迎,尤其是作为一个后端程序员,必须掌握Linux的
- Linux一切皆文件
- 根目录/ ,所有的文件都挂在在这个节点下
使用虚拟机或者服务器安装Linux
阿里云服务器相关操作====》 服务器购买及宝塔部署环境说明
阿里云ecs服务器搭建 ====》 阿里云ecs服务器搭建
走进Linux
关机
在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
关机指令为:shutdown ;
执行前先同步 sync
sync # 将数据由内存同步到硬盘中 shutdown # 关机指令 可以用 man shutdown 查看文档 shutdown -h 10 # 10分钟之后关机 shutdown -h now # 立马关机 shutdown -h 10:30 # 10点30分关机 shutdown -r now # 系统立马重启 shutdown -r +10 # 系统10分钟之后重启 reboot # 重启 等同于 shutdown -r now halt # 关闭系统 等同于shutdown -h now
不管是重启系统还是关闭系统,首先都要运行sync命令,把数据写到磁盘中
系统目录结构
登录系统后,在当前窗口输入命令:
ls /
如下图所示
树状目录结构:
解释:
常用基本命令(掌握)
目录管理
相对路径 、绝对路径
cd : 切换目录命令!
./ : 当前目录
cd. . : 返回上一级目录
ls / ll (列出目录)
在Linux中 ls 命令是最常用的
-a 参数 : all , 查看全部的文件,包括隐藏文件 -l 参数 : 列出所有的文件,包括文件的属性与权限,无法查看隐藏文件
所有Linux可以组合使用
cd命令 切换目录
cd 目录名 (绝对路径/相对路径)
- 绝对路径:以
/
开头 - 相对路径: ../
pwd 显示当前用户所在的目录
touch : 新建文件
touch index.js
mkdir 创建目录
rmdir 移除目录
rmdir 只能删除空的目录,如果下面存在文件,需要先删除文件按
递归删除多个目录加 rmdir -p
cp (复制文件按或者目录)
cp (源地址,目标地址)
当文件名相同时询问你是否覆盖 y:覆盖/n:取消
rm (移除文件或者目录)
-f :忽略不存在的文件、强制删除 极其危险 -r : 递归删除目录! -i : 互动删除 询问是否删除
rm -rf / # 系统中所有的文件都被删除了 也就是删库跑路的做法 非常刺激!
mv 移动文件或者命令 重命名文件
-f :强制移动 -u :只替换已经更新过的文件
reset :重新初始化终端/清屏。
clear :清屏。
history :查看命令历史
help :帮助
基本属性
明白文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll
或ls -l
命令来显示一个文件的属性以及文件所属的用户和组,如:
实例中,boot文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等:
- 当为[ d ]则是目录
- 当为[ -]则是文件
- 若是[ b]则表示为装置文件里面的可供储存的接口设备(可随机存取装置)
- 若是[ c]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
接下来的字符中,以三个为一组,且均为『rwx』的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x]代表可执行(execute)。
要注意的是,这三个根限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。每个文件的属性由左边第一部分的10个字符来确定(如下图) ∶
修改文件属性
chgrp 更改文件属组
chgrp [-R]属组名 文件名
-R :递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
chown 更改文件属组,也可以同时更改文件属组
chown [-R] 属组名 文件名 chown [-R] 属组名:属组名 文件名
上面两个很少使用
chmod 更改文件9个属性
解决 你没有权限操作此文件!
chmod [-R] xyz 文件或者目录
可读可写不可执行 rw- 6 可读可写可执行 rwx- 7 chmod 777 文件赋予所有用户可读可写可执行
文件内容查看
Linux系统中使用以下命令来查看文件的内容:
-
cat由第一行开始显示文件内容
-
tac 从最后一行开始显示,可以看出tac是cat的倒着写!
-
nl显示的时候,顺道输出行号!
-
more一页一页的显示文件内容
-
less 与more类似,但是比 more更好的是,他可以往前翻页!(空格下翻页,pageDown , pageUp键代表翻动页面!退出q命令,查找字符串/要查询的字符;向上查询用?要查询的字符; n搜索下一个 N搜索上一个)
-
head只看头几行
-
tail 只看尾巴几行
你可以使用 man [命令]
=来查看各个命令的使用文档,如: man cp。
查看网络命令: ifconfig
----Linux ipconfig
-----Windows
网络配置目录:cd letc/sysconfig/network-scripts
链接
Linux分为两种:硬链接与软链接
硬链接:用户可以建立这种机制防止误删除
软链接:快捷方式
ln 创建链接
touch 文件名 :命令创建文件 echo "" >> 文件名 : 输入字符串
Vim编辑器
什么是Vim编辑器?
vim通过一些插件可以实现和IDE—样的功能!
Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用 尤其是Linux中,必须要会使用Vim(查看内容,编辑内容,保存内容!)
键盘图:
三种使用模式
基本上vilvim 共分为三种模式,分别是命令模式(Command mode ),输入模式( Insert mode )和底线命令模式(Lastline mode )。这三种模式的作用分别是∶
命令模式∶
用户刚刚启动vilvim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。以下是常用的几个命令︰
- i切换到输入模式,以输入字符。
- ×删除当前光标所在处的字符。
- : 切换到底线命令模式,以在最底一行输入命令。
输入模式:
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命令模式:
在命令模式下按下:(英文冒号)就进入了底线命令模式。光标就移动到了最底下,就可以在这里输入一些底线命令了!
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号) :
- q 退出程序
- w 保存文件
- wq 保存退出
按ESC键可随时底线命令模式
使用Vim方法:
vim 文件名
完整的演示说明
新建或者编辑文件,按i进入编辑模式,编写内容,编写完成后退出编辑模式,esc,退出之后进入底线命令模式︰wq保存退出!
第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等
第二部分∶一般模式切换到编辑模式的可用的按钮说明
第三部分:一般模式切换到指令行模式的可用的按钮说明
账户管理
一般在公司中 接触不到root账户呀......?
简介
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号 ,然后以这个账号的身份进入系统。
实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加、删除与修改。
- 用户口令的管理。
- 用户组的管理。
用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。
useradd 命令 添加用户
useradd -选项 用户名useradd-选项 用户名 useradd -m 用户名 -g 组名 # 添加用户时分配组
理解一下本质:Linux中一切皆文件,这里的添加用户说白了就是往某一个文件中写入用户的信息了! /etc/passwd
userdel 删除用户
userdel -r 用户名 #删除用户时将目录一起删除
usermod 修改用户
usermod -d 路径 用户名
切换用户
root:
切换用户:
hostname # 查看主机名 hostname 名字 # 修改主机名
密码设置
我们一般通过root创建用户的时候!要配置密码!
Linux上输入密码是不会显示的,你正常输入就可以了,并不是系统的问题!
在公司中,我们一般拿不到公司服务器的root权限,都是一些分配的账号!
超级用户:
passwd username: new password: re password:
普通用户:
passwd (current) UNIX password: new password: # 密码不能太简单 re password:
锁定账户
password -l 用户名 # 该用户无法登录 password -d 用户名 # 清空用户密码
用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同。如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group文件的更新。
创建用户组 groupadd
groupadd 组名 # 创建用户组 cat /etc/group # 查看
创建完用户组后可以得到一个组的id 指定id groupadd -g 520 组名
入果不指定就是自增1
删除用户组 groupdel
groupdel 组名 # 删除 cat /etc/group # 查看
修改用户组信息 groupmod
-g # 修改id -n # 修改组名 groupmod -g 666 -n 新组名 旧组名
切换用户组
# 登录当前用户 $ newgrp root
扩展 文件的查看
完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。
与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd,/etclshadow,letclgroup等。
/ect/passwd
用户名:口令(登录密码 不可见):用户标识号:组标识号:注释性描述:主目录:登录she11
这个文件中的每一行都代表这一个用户,我们可以从这里看出这个用户的主目录在那里,可以看到属于哪一个组!
登录口令:把真正的加密后的用户口令字存放到/etc/shadow
文件中 保证安全性
用户组的所有信息都存放在/etc/group文件中。
磁盘管理
df (列出文件系统整体的磁盘使用量) du(检查磁盘空间使用量)
-
df
-
du
-
检查根目录容量
du -sm /*
系统初期 usr目录最大,很多文件都在这里
Mac或者想使用Linux挂载我们的一些本地磁盘或者文件! 了解即可
-
挂载:mount
-
卸载:umount -f [挂载位置] 强制卸载
除了这个之外,以后我们安装了JDK,其实可以使用java中的一些命令来查看信息!
进程管理
对于我们开发人员来说,其实Linux更多偏向 于使用即可! |
基本概念
- 在Linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号!
- 每一个进程呢,都会有一个父进程!
- 进程可以有两种存在方式∶前台!后台运行!
- 一般的话服务都是后台运行的,基本的程序都是前台运行的!
命令
ps 查看当前系统中正在执行的各种进程的信息
ps -xx: -a # 显示当前终端运行的所有信息 (当前的进程) -u # 以用户的信息显示进程 -x # 显示后台运行进程的参数 # ps -aux 查看所有的进程 ps -aux|grep mysql #查看mysql的进程 ps -aux|grep java #查看java的进程 # | 在Linux叫管道符 # grep 过滤命令 查找文件中符合条件的字符串!
ps -ef : 可以查看到父进程的信息
ps -ef|grep mysql #看父进程可以通过目录树结构查看 # 进程树 pstree -pu -p # 显示父id -u # 显示用户组
结束进程:kill
kill -9 进程的id # 强制结束进程
对于开发人员,常用的基本就以上这些
环境安装
安装软件一般有3种方式
- rpm
- 解压缩
- yum在线安装
JDK安装
开发Java必要的环境
- 官网下载 JDK包 rpm
- 安装Java环境
# 检测当前系统是否存在Java环境 java -version # 如果有需要卸载 rpm -qa|grep jdk # 检测jdk版本信息 rpm -e --nodeps jdk # 卸载后可安装 rpm -ivh rpm包 # 配置环境变量
配置环境变量:/etc/profile
rpm 无需配置 解压缩需要配置
确保Linux的防火墙端口是开启的,如果是阿里云,需要保证阿里云的安全组策略是开放的!
# 查看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 #永久生效,没有此参数重启后失效
Tomcat 安装
- 将文件移动到/usr/tomcat/下,并解压!
# mv apache-tomcat-9.0.22.tar.gz /usr # cd /usr # ls apache-tomcat-9.0.22.tar.gz # tar -zxvf apache-tomcat-9.0.22.tar.gz # 解压
- 运行Tomcat,进入bin目录,和我们以前在Windows下看的都是一样的
# 执行:startup.sh -->启动tomcat # 执行:shutdown.sh -->关闭tomcat ./startup.sh ./shutdown.sh
- 确保Linux的防火墙端口是开启的,如果是阿里云,需要保证阿里云的安全组策略是开放的!
安装MySQL
视频====》mysql安装
教程====》Linux环境yum,安装MySQL
部署SpringBoot项目
-
首先将项目打成jar包
-
将jar包上传至服务器
-
执行命令
$ nohup java -jar test.jar >temp.txt & //这种方法会把日志文件输入到你指定的文件中,没有则会自动创建。进程会在后台运行。
安装Docker(yum安装)
-
官网安装参考手册:https://docs.docker.com/install/linux/docker-ce/centos/
-
确定你是CentOS7及以上版本
[root@192 Desktop]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
- yum安装gcc相关(需要确保 虚拟机可以上外网 )
yum -y install gcc yum -y install gcc-c++
- 卸载旧版本
yum -y remove docker docker-common docker-selinux docker-engine # 官网版本 yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
- 安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置stable镜像仓库
# 错误 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo ## 报错 [Errno 14] curl#35 - TCP connection reset by peer [Errno 12] curl#35 - Timeout # 正确推荐使用国内的 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新yum软件包索引
yum makecache fast
- 安装Docker CE
yum -y install docker-ce docker-ce-cli containerd.io
- 启动docker
systemctl start docker
- 测试
docker version docker run hello-world docker images
宝塔面板安装
https://www.bilibili.com/video/av91821322
完结~~ 本篇文章由作者借鉴B站狂神说视频而写 原文链接:https://mp.weixin.qq.com/s/aMJeiQW5z5FzeEdsRn44vA