如Windows一样,Linux也是一款操作系统,它并不像Windows那样提供很友好的图形界面以及丰富的应用程序,因此与Windows相比更加稳定,更适合在开发中部署服务器。
其实在我们的日常生活中,已经遇到过大量的Linux系统,比如很多的硬件设备的底层:安卓、路由器等等。
Linux的版本:Linux分为内核版本和发行版本,可以类比安卓版本,每年更新的安卓系统为原生系统,各大手机厂商,比如小米、华为,再对其进行封装。
通常我们说Linux版本指的就是发行版本,主流版本有:
虚拟机:使用计算机中的一部分资源,运行一台虚拟计算机。
安装时注意:
/
整个系统的根目录
/bin
bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc
这个目录用来存放所有的系统管理所需要的配置文件和子目录。例如防火墙文件、网络设置文件、JDK环境配置文件、mysql配置文件等。
/home
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv
该目录存放一些服务启动之后需要提取的数据。
/sys
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp
这个目录是用来存放一些临时文件的。
/usr
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。例如JDK、tomcat、mysql、redis等应用程序。
/usr/bin
系统用户使用的应用程序。
/usr/sbin
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src
内核源代码默认的放置目录。
/var
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
实际开发中,tomcat、数据库等,是部署在Linux服务器上的(不再是虚拟机),直接操作这台电脑是很不方便的,因此可以远程连接这台服务器,可以用Xshell来实现。
安装过程很简单,安装后配置连接。
成功连接后就可以远程使用Linux系统了,使用起来非常方便。
如果想要传输文件,还可以安装XFtp。
MacOS下可使用终端来进行远程连接Linux。
ls
命令:用来查看目录的内容
参数:
-a
列举目录中的全部文件,包括隐藏文件
-l
列举目录中的细节,包括权限、所有者、组群、大小、创建日期、文件是否是链接等
-f
列举的文件显示文件类型
-r
逆向,从后向前地列举目录中内容
-R
递归,该选项递归地列举当前目录下所有子目录内的内容
-s
大小,按文件大小排序
-h
以人类可读的方式显示文件的大小,如用K、M、G作单位
例:
ls -l
详细显示当前目录下所有非隐藏内容
ll
相当于ls -l
ls -l -a
详细显示当前目录下所有内容(包含隐藏文件)
ls -la
相当于ls -l -a
ll -a
相当于ls -l -a
ll /etc
详细显示etc目录下所有非隐藏内容
上图红框内的三种字符,代表了该项的类别:
-
代表普通文件
d
代表文件夹
l
代表链接(相当于Windows的快捷方式)
cd
命令:切换目录
例:
cd /
转到根目录
cd ~
转到当前用户目录
~:
cd ..
转到上一级目录
cd /usr
转到根目录下的usr目录中(绝对路径)
cd test
转到当前目录下的test子目录中(相对路径)
pwd
命令:输出当前目录
mkdir
命令:创建目录
例:
mkdir test
在当前目录下创建test目录
mkdir /root/test
在root目录下创建test目录
rmdir
命令:删除空目录
例:
rmdir test
删除当前目录下的test目录,该目录必须为空
cat
命令:快捷查看文件内容(适合小文件)
例:
more
命令:分页展示文件内容(加载整个文件后分页展示)
操作:
enter
向下一行
空格
向下滚动一屏
b
返回上一屏
=
输出当前行的行号
+n
从笫n行开始显示
q
退出
less
命令:分页展示文件内容(分页加载文件后展示)
参数:
-m
显示百分比
-N
显示每行的行号
操作:
enter
向下一行
空格
向下滚动一屏
b
返回上一屏
+n
从笫n行开始显示
q
退出
cp
命令:复制文件或目录
参数:
-r
递归(可复制目录)
例:
cp 1.txt ~/test/1.txt
将当前目录下的1.txt复制到用户目录下test目录中
cp 1.txt 2.txt
将当前目录下的1.txt复制一份,并命名为2.txt
cp test a/test
将当前目录下的test目录及目录中全部内容,复制到a目录中
mv
命令:移动文件或目录
参数:
-f
强制(不询问)
例:
mv 1.txt ~/test/1.txt
将当前目录下的1.txt移动到用户目录下test目录中
mv -f 1.txt ~/test/1.txt
将当前目录下的1.txt移动到用户目录下test目录中,强制覆盖同名文件
mv 1.txt 2.txt
将当前目录下的1.txt重命名为2.txt
rm
命令:删除文件或者目录
参数:
-r
递归
-f
强制(不询问)
例:
rm 1.txt
删除当前目录下的1.txt
rm -r test
删除当前目录下的test目录以及该目录中的所有内容
rm -rf test
删除当前目录下的test目录以及该目录中的所有内容,不询问
rm -rf *
删除当前目录下所有内容
rm -rf /*
删除系统中所有内容(不要执行!)
find
命令:查询文件或者目录
参数:
-name
要查询的文件或目录名
例:
find /root -name 'ins*'
查询/root目录下面,所有以ins开头的文件或者目录
vim(vi)
命令:编辑文档
例:
vim 1.txt
用vim编辑器打开1.txt
操作:
刚进入vim时为一般模式,一般模式切换到编辑模式:
i
或I
:进入编辑模式
i
从目前光标所在处插入
I
在目前所在行的第一个非空格符处开始插入
a
或A
:进入编辑模式
a
从目前光标所在的下一个字符处开始插入
A
从光标所在行的最后一个字符处开始插入
o
或O
:进入编辑模式
o
在目前光标所在的下一行处插入新的一行
O
在目前光标所在处的上一行插入新的一行
编辑模式切换回一般模式:
Esc
:退出编辑模式,回到一般模式一般模式切换到命令行模式:
:w
保存编辑的内容
:w!
强制写入该文件,但跟你对该文件的权限有关
:q
离开vi
:q!
不想保存修改强制离开
:wq
保存后离开
:x
保存后离开
ZZ
若文件没有更动,则不保存 离开,若文件已经被更改过,则保存后离开
Windows常见压缩格式:rar、zip
Linux常见压缩格式:tar、tar.gz
*.tar
打包,不压缩文件大小
*.tar.gz
打包并且压缩文件大小
tar
命令
参数:
-c
创建新的压缩文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。相当于打包。
-x
从压缩文件中释放文件。相当于拆包。
-t
列出档案文件的内容,查看已经备份了哪些文件。
-z
是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩或解压? 一般格式为xx.tar.gz或xx. tgz
-j
是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩或解压?一般格式为xx.tar.bz2
-v
压缩的过程中显示文件。
-f
使用压缩包名,在f之后要立即接档名,不要再加其他参数。
例:
tar -cvf 1.tar *
将当前目录所有文件及目录打包为1.tar
tar -zcvf 1.tar.gz *
将当前目录所有文件及目录打包压缩为1.tar.gz
tar -zxvf 1.tar.gz
将1.tar.gz解压到当前目录
tar -zxvf 1.tar.gz -C test
将1.tar.gz解压到当前目录下的test目录中
ps
命令:查看进程
参数:
-A
所有的进程均显示出来
-e
与-A相同
-a
显示现行终端机下的所有进程,包括其他用户的进程
-u
以用户为主的进程状态
-f
做一个更为完整的输出
例:
ps -ef
查看所有系统进程
上图中,UID指的是进程是被哪个用户打开的,root用户对所有的进程都由杀死和创建的权利;
PID是进程ID,可以根据PID来杀死相关的进程。
kill
命令:强制杀死某个进程
例:
kill -9 25948
强制关闭PID为25948的进程
adduser
命令:创建用户
参数:
-G
分配工作组
例:
adduser tom
创建用户,用户名为tom
adduser -G test
创建用户tom,并分配到test工作组
passwd
命令:为用户设置密码
例:
passwd tom
为用户tom设置密码
groupadd
命令:创建工作组
例:
groupadd test
创建test工作组
usermod
命令:修改用户
参数:
-G
分配工作组
例:
usermod -G test tom
将用户tom分配到test工作组中
用户权限:
图中红框内的9位字符,代表的是该文件或目录的权限信息。
每个文件或目录的权限分为三类:前三位为所属用户(u)权限,中间三位为所属组(g)权限,后三位为其他用户(o)权限。(a代表所有用户)
r
:读 4
w
:写 2
x
:执行 1
chmod
命令:修改文件或目录的用户权限
例:
chmod g=rwx 1.txt
将1.txt的工作组权限修改为所有权限
chmod a=r 1.txt
将1.txt的所有用户权限修改为只读
下载JDK,传到Linux中
解压到指定目录,通常/usr/local/jdk
编辑环境变量
vim /etc/profile
文件最后添加:
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_281 export PATH=$JAVA_HOME/bin:$PATH
刷新配置
source /etc/profile
安装源
rpm -ivh https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
安装MySQL
yum -y install mysql-community-server
启动MySQL
启动
systemctl start mysqld
设置开机启动
systemctl enable mysqld
查看初始密码
grep 'password' /var/log/mysqld.log |head -n1
修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';FLUSH PRIVILEGES;
设置远程访问
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
修改配置文件
vim /etc/my.cnf