Linux系统
前言:
作者使用的工具是Xshell、Xftp、VMware、CentOS7,有条件的朋友可以去买个服务器,命令以及操作基本一样,以下的讲解和操作都是基于虚拟机上的。
目录
1、简单介绍
Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。
开机会启动许多程序,它们在Windows叫做“服务”(service),在Linux就叫做“守护进程”(daemon)。
开机成功后,它会显示一个文本登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份,密码不会显示,注意小键盘是否开启,输完回车。
一般来说,用户的登录方式有三种:
- 命令行
- ssh
- 图形界面
最高权限账户为root,可以操作一切。
2、Java环境安装
安装软件的三种方式:
- rpm(JDK:在线发布一个spring boot项目)
- 解压缩(tomcat,启动并通过外网访问,发布网站)
2.1、配置JDK
Java开发必要的环境
1、下载JDK rpm。点击进入官网
2、使用Xftp上传到虚拟机中,这里我上传到了/home/desiy目录中。
3、安装Java环境
检测当前系统是否存在Java环境,如果有的话就需要卸载。
java -version
检测JDK版本信息
rpm -qa|grep jdk
卸载:rpm -e --nodeps jdk_
如果你出现如下情况说明您以前可能是安装过jdk,这是留下的模块,这时我们需要删除模块。
删除模块:
结果:
卸载完毕后即可安装我们下载的jdk rpm版
安装:rpm -ivh rpm包名
补充:我们进入usr/java目录:记住画出来的部分,配置环境需要。
4、配置环境变量 ,这里需要我们回到 / 目录下
vim /etc/profile
在其最下面添加以下语句;注意:jdk1.8.0_251-amd64,不是唯一。我在上面的补充中已说明。
JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
CLASSPATH=%JAVA_HOME%/lib;%JAVA_HOME%/jre/lib
PATH=$JAVA_HOME/bin;$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME
# 最后保存退出
让这个配置文件生效:source /etc/profile
查看Java环境:输入java命令即可
5、发布项目:我这里发布了一个spring项目,需要记住端口号。
首先(IDEA中)打包项目:要确保项目在IDEA中能正常运行。打包完成后上传到虚拟机中。如何上传上面也有介绍。
6、开启端口
# 查看所有开启端口
firewall-cmd --list-ports
# 开启防火墙端口并添加8080端口,因为我的项目端口号是8080。
firewall-cmd --permanent --zone=public --add-port=8080/tcp
# 重启防火墙
systemctl restart firewalld.service
我这里没有开启任何端口,那么我们需要添加:
7、运行项目:
java -jar springboot-security.jar
网址输入:主机号+端口号:192.168.75.250:8080
2.2、配置Tomcat
ssm、war包需要放到tomcat中运行。
1、下载。点击进入官网
选择版本->bin->
2、上传(同JDK)
3、解压
tar -zxvf apache-tomcat-9.0.36-embed.tar.gz
4、开启tomcat ./xxx.sh执行脚本文件即可。
# 开始 ./startup.sh
# 停止 ./shutdown.sh
3、常用的基本命令
关机
在Linux领域中大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下。
sync # 将数据由内存同步到硬盘中。
shutdown # 关机指令,man shutdown查看帮助文档。例如下面的命令:
shutdown -h 10 # 计算机将在10分钟后关机
shutdown -h now # 马上关机
shutdown -h 20:00 # 在今天的20:00关机
shutdown -h +10 # 10分钟后关机
shutdown -r now # 马上重启
shutdown -r +10 # 10分钟后重启
reboot # 等同于 shutdown -r now
halt # 关闭系统,等同于shutdown -h now和poweroff
最后,不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中。
系统目录结构
1、在Linux中一切皆文件
2、根目录/,所有的文件都挂载在这个节点下
登录成功后,在命令窗口下输入命令:
ls
3.1、目录管理
cd:切换目录命令
./:当前目录
cd …:返回上一级目录
在Linux中ls可能事最常用命令。
-a参数:all,查看全部的文件,包括隐藏文件。
-l参数:列出所有的文件,包括文件的属性和权限,不包括隐藏文件。
所有的Linux命令可以组合使用。
pwd显示当前所在目录
[root@localhost usr]# pwd
/usr
[root@localhost usr]#
mkdir创建文件夹,mkdir -p dir1/dir2递归创建。这里我们在home目录下创建一个f1文件夹:
还可以这样:
rmdir删除文件夹,rmdir -p dir1/dir2递归删除。
cp复制文件或者目录。注意,这里是文件不是文件夹!!!
cp 文件名 新的目录
-f忽略不存在的文件,不会出现警告,强制删除。
-r递归删除目录。
-i互动,删除询问是否删除
rm -rf / 系统中所有的文件被删除了,删库跑路。
mv 移动文件或者目录,还可以重命名一个文件夹。
-f强制
-u替换已更新的文件
[root@localhost home]# cd /..
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[root@localhost /]# cd usr
[root@localhost usr]# ls
bin etc games include lib lib64 libexec local sbin share src tmp
[root@localhost usr]# mv games/ game
[root@localhost usr]# ls
bin etc game include lib lib64 libexec local sbin share src tmp
[root@localhost usr]#
3.2、基本属性
修改文件属性
1、chgrp:更改文件属组
2、chown:更改文件属主,也可以同时更改文件属组
3、chmod:更改文件9个属性
3.3、文件内容查看
Linux系统中使用以下命令来查看文件的内容(常用):
- cat 由第一行开始显示文件内容,用来读文章或者配置文件
- tac 从最后一行开始显示
- nl 伴随着行号显示
- more 分页显示(空格翻页,enter表示向下看一行,/ 向下查询字符,? 向上查询字符,n 继续搜寻下一个,N上寻找)
- less 比more更好的是可以往前翻页(空格翻页,上下键翻动页面,q退出)
- =head== 只显示头几行,通过 -n 参数来控制显示几行
- tail 只显示最后几行,通过 -n 参数来控制显示几行
man[命令]查看各个命令的使用文档。
扩展:Linux链接的概念
Linux的链接分为:硬链接、软链接
硬链接:A–B,假设B是A的硬链接,那么他们两个指向了同一个文件,允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要的文件上,防止误删。
软链接:类似于Windows下的快捷方式,删除的源文件,快捷方式也访问不了。
创建链接 ln 命令
touch 命令创建文件
echo 输入字符串
[root@localhost ~]# cd /
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[root@localhost /]# cd home
[root@localhost home]# touch f1 # 创建一个f1文件
[root@localhost home]# ls
desiy f1
[root@localhost home]# ln f1 f2 # 创建一个硬链接 f2
[root@localhost home]# ls
desiy f1 f2
[root@localhost home]# ln -s f1 f3 # 创建一个软链接(符号链接)f3
[root@localhost home]# ls
desiy f1 f2 f3
[root@localhost home]# ll
total 4
drwx------. 17 desiy desiy 4096 Jun 25 15:26 desiy
-rw-r--r-- 2 root root 0 Jun 26 15:34 f1
-rw-r--r-- 2 root root 0 Jun 26 15:34 f2
lrwxrwxrwx 1 root root 2 Jun 26 15:34 f3 -> f1
[root@localhost home]# echo "I Love MT" >>f1 # 给f1文件中写入一些字符串
[root@localhost home]# ls
desiy f1 f2 f3
[root@localhost home]# ll
total 12
drwx------. 17 desiy desiy 4096 Jun 25 15:26 desiy
-rw-r--r-- 2 root root 10 Jun 26 15:35 f1
-rw-r--r-- 2 root root 10 Jun 26 15:35 f2
lrwxrwxrwx 1 root root 2 Jun 26 15:34 f3 -> f1
[root@localhost home]# cat f1 # 查看f1
I Love MT
[root@localhost home]# cat f2 # 查看f2
I Love MT
[root@localhost home]# cat f3 # 查看f3
I Love MT
[root@localhost home]#
删除f1之后,文件f2与f3的区别:
[root@localhost home]# rm -rf f1
[root@localhost home]# ls
desiy f2 f3
[root@localhost home]# cat f2 # f2 硬链接还在
I Love MT
[root@localhost home]# cat f3 # f3 软连接(符号链接)快捷方式失效
cat: f3: No such file or directory
[root@localhost home]#
3.4、Vim编辑器
什么是Vim编辑器
Vim通过一些插件可以实现和IDE一样的功能。
Vim是从Vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别多,在程序员中被广泛使用。尤其是在Linux中,必须会使用Vim(查看内容、编辑内容、保存内容)
所有的Unix Like 系统都会内建Vi文书编辑器,其他的文书编辑器则不一定会存在。
3.5、账号管理
用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加、修改、删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。
属主,属组
useradd 命令添加用户
useradd -选项 用户名
-m:自动创建这个用户的主目录/home/MT
-G:给用户分配组
[root@localhost home]# useradd -m MT 创建一个用户
[root@localhost home]# ls
desiy MT
[root@localhost home]#
本质:Linux中一切皆文件,这里的添加用户就是往某一个文件中写入用户的信息。 /etc/passwd
删除用户 userdel
userdel -r MT 删除用户的时候将它的目录也删除。
[root@localhost home]# userdel -r MT
[root@localhost home]# ls
desiy
修改用户 usermod
修改用户 usermod 对应修改的内容
[root@localhost home]# usermod -d /home/233 MT
修改完毕之后查看配置文件即可。
切换用户
1.切换用户的命令为:su username【username为用户名】
2.普通用户切换到root用户,sudo su
3.在终端输入exit或者logout或使用快捷方式ctrl+d,退回到原来用户,其实ctrl+d就是执行exit命令
4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su-root】
$表示普通用户
#表示超级用户-root
用户的密码设置问题
我们一般通过root创建用户时候要配置密码。
注意:Linux中的密码是不会显示的。
[root@vm ~]# passwd MT
Changing password for user MT.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
如果是超级用户:
passwd username:
new password:
re password:
如果是普通用户:
passwd
(current) UNIX password:
new password: # 密码不能太简单
re password:
锁定账户
如果一个人辞职了,我们不删除这个人的账号,只是冻结此账号,让其登录不上系统。
passwd -l MT # 锁定之后这个用户就不能登录了
passwd -d MT # 没有了密码也不能登录
3.6、用户组管理
属主、属组
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于于它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
创建一个用户组 groupadd
[root@vm ~]# groupadd MT
创建完用户组后可以得到一个组的id,这个id是可以自定义的:-g 520,若不自定义就自增1.
删除一个用户组 groupdel
[root@vm ~]# groupdel MT
修改用户组的权限信息和名字 groupmod -g(组id) -n(名字)
[root@vm ~]# groupmod -g 520 -n KMT MT
切换用户组
# 登录当前用户 KMT
$ newgrp root
扩展:文件的查看
查看用户信息:/etc/passwd
用户名:口令(登录密码,不可见):用户标识号:组标识号:注释性描述:主目录:登录Shell
这个文件中的每一行都代表一个用户,可以从这里看出这个用户的主目录在哪里,属于哪个组。
登录口令:真正加密后的口令在/etc/shadow文件中,保证我们口令的安全性。
查看用户组:/etc/group
3.7、磁盘管理
df(列出文件系统整体的磁盘使用量)du(检查磁盘空间使用量)
3.8、进程管理
什么是进程?
1、在Linux中,每一个程序都有自己的进程,每一个进程都有一个id号。
2、每一个进程都有一个父进程。
3、进程的存在方式有两种:前台、后台运行。
4、一般的服务都是后台运行的,基本程序都是前台运行的。
命令
PS 查看当前系统中正在执行的各种进程的信息。
ps-xx:
- -a 显示当前终端运行的所有进程信息(当前的进程)
- -u 以用户的信息显示进程
- -x 显示后台运行进程的参数
# 查看所有的进程
ps -aux|grep mysql
# | 在Linux中这个叫做管道符
# grep 查找文件中符合条件的字符串
对于我们来说,目前只需记住一个命令即可:ps -xx|grep 进程名字,过滤进程信息。
ps-ef:可以查看父进程的信息
ps -ef|grep mysql # 查看父进程一般可以通过目录树结构查看
pstree -pu
-p 显示父id
-u 显示用户组
结束进程
kill -进程的id
常用在Java中的循环进入死循环时,我们希望结束程序。或者使用CTRL+Z