Linux ​
1. Linux介紹 ​
1.1 Linux的前世今生 ​
- Linux操作系统,被称之为类Unix操作系统,因此,要了解Linux的诞生就得先了解Unix操作系统
1. 1965 年开始的 Multics ⼯程计划,该计划由⻉尔实验室、美国麻省理⼯学院和通⽤电⽓公司联合发起,⽬标是开发⼀种交互 式的、具有多道程序处理能⼒的分时操作 系统,以取代当时⼴泛使⽤的批处理操作系统。
2. 在此期间,贝尔实验室的肯•汤普森,在Multics操作系统上开发了一款名为太空遨游的游戏,回到贝尔实验室之后,他也想在自己的计算机上玩这款游戏,于是就自己开发出了一个简化的分时操作系统,这就是Unix操作系统的雏形。
3. 为了提高操作系统的可移植性,肯•汤普森和丹尼斯•⾥奇共同发明了C语言- Linux 内核最初只是由芬兰⼈林纳斯·托瓦兹(Linus Torvalds)在赫尔⾟基⼤学上学时出于个⼈爱好⽽编写的
- Linux 是⼀套免费使⽤和⾃由传播的类 Unix 操作系统,是一个支持多⽤户、多任务、⽀持多线程和多 CPU 的操作系统
- Linux 继承了 Unix 以⽹络为核⼼的设计思想,Linux 的初衷就是要替代UNIX,并在功能和⽤户体验上进⾏优化,所以 Linux 模仿了 UNIX(但并没有抄袭UNIX 的源码),使得Linux在外观和交互上与UNIX⾮常类似。
1.2 Linux的发⾏版本 ​

⽬前市⾯上较知名的发⾏版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

1.3 Linux操作系統的組成 ​
UNIX或者Linux系统⼤致可以分为以下⼏个部分
硬件交互的操作系统内核
中间层是shell层
最外层是应⽤层

内核层: 内核层是 UNIX/Linux 系统的核⼼和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源 (硬件资源和软件资源),有效地组织进程的运⾏,从⽽扩展硬件的功能,提⾼资源的利⽤效率,为⽤户提供⽅便、⾼效、安全、可靠的应⽤环境。
Shell层: Shell 层是与⽤户直接交互的界⾯。⽤户可以在提示符下输⼊命令⾏,由 Shell 解释执⾏并输出相应结果或者有关信息,所以我们也把 Shell 称作命令解释器,利⽤系统提供的丰富命令可以快捷⽽简便地完成许多⼯作。
1.4 Linux的文件系统 ​
1.4.1 Linux操作系统中的文件类型 ​
在linux中,⼀切皆为⽂件。⽂件分为下⾯的⼀些类型
- 普通文件 -
- 目录文件 d
- 链接文件 l
- 设备文件 b/c
- 管道文件 p
1.4.2 Linux操作系统的组织结构 ​
Linux⽂件系统⽬录结构和熟知的windows系统有较⼤区别,没有各种盘符的概念。根⽬录只有⼀个/,采⽤层级式的树状⽬录结构。

- /:根⽬录,所有的⽬录、⽂件、设备都在/之下,/就是Linux⽂件系统的组织者,也是最上级的领导者。
- /bin:bin 就是⼆进制(binary)英⽂缩写。在⼀般的系统当中,都可以在这个⽬录下找到linux常⽤的命令。系统所需要的那些命令位于此⽬录。
- /boot:Linux的内核及引导系统程序所需要的⽂件⽬录。
- /dev:dev 是设备(device)的英⽂缩写。这个⽬录对所有的⽤户都⼗分重要。因为在这个⽬录中包含了所有linux系统中使⽤的外部设备。但是这⾥并不是放的外部设备的驱动程序。这⼀点和常⽤的windows,dos操作系统不⼀样。它实际上是⼀个访问这些外部设备的端⼝。可以⾮常⽅便地去访问这些外部设备,和访问⼀个⽂件,⼀个⽬录没有任何区别。
- /home:如果建⽴⼀个⽤户,⽤户名是"xx",那么在/home⽬录下就有⼀个对应的/home/xx路径,⽤来存放⽤户的主⽬录。
- /lib:lib是库(library)英⽂缩写。这个⽬录是⽤来存放系统动态连接共享库的。⼏乎所有的应⽤程序都会⽤到这个⽬录下的共享库。因此,千万不要轻易对这个⽬录进⾏什么操作,⼀旦发⽣问题,系统就不能⼯作了。
- /proc:存储的是当前内核运⾏状态的⼀系列特殊⽂件,⽤户可以通过这些⽂件查看有关系统硬件及当前正在运⾏进程的信息,甚⾄可以通过更改其中某些⽂件来改变内核的运⾏状态。此外还有/srv /sys三个⽬录,内核相关⽬录,不要动。
- /root:Linux超级权限⽤户root的家⽬录。
- /sbin:这个⽬录是⽤来存放系统管理员的系统管理程序。⼤多是涉及系统管理的命令的存放,是超级权限⽤户root的可执⾏命令存放地,普通⽤户⽆权限执⾏这个⽬录下的命令,sbin中包含的都是root权限才能执⾏的。
- /usr:这是linux系统中占⽤硬盘空间最⼤的⽬录。⽤户的很多应⽤程序和⽂件都存放在这个⽬录下。 Unix software resource usr。类似windows系统的program files
- /usr/local:这⾥主要存放那些⼿动安装的软件,即不是通过或apt-get安装的软件。它和/usr⽬录具有相类似的⽬录结构。
- /usr/share :系统共⽤的东⻄存放地,⽐如 /usr/share/fonts 是字体⽬录,/usr/share/doc和/usr/share/man帮助⽂件。
- /etc:管理所有的配置⽂件的⽬录,⽐如安装mysql的配置⽂件my.conf
- /mnt:可供系统管理员使⽤,⼿动挂载⼀些临时设备媒体设备的⽬录。
- /media:是⾃动挂载的⽬录。当把U盘插⼊到系统中,会⾃动挂载到该⽬录下。⽐如插⼊⼀个U盘,会⾃动到/media⽬录中挂载。
- /opt:额外安装软件存放的⽬录。⽐如mysql的安装包就可以放在该⽬录。
- var: 存放应用程序在运行的过程中,可能会产生的一些临时文件的目录。比如有:日志文件,pid文件
1.5 Linux vs Windows ​
⽬前国内 Linux 更多的是应⽤于服务器上,⽽桌⾯操作系统更多使⽤的是 Windows,主要区别如下

2. Linux安装 ​
2.1 云服务器 ​
⾃⼰安装服务器还是麻烦了些,现在⼀般都推荐⼤家使⽤云服务器,⽐较⽅便,价格也不贵。⽬前国内三家主流云服务器⼚商,阿⾥云、腾讯云、华为云
大家在选择操作系统镜像的时候,最好选择Ubuntu 18.04这个版本
CPU不限
内存:4G
Ubuntu 18.04
2.2 虚拟机 ​
2.2.1 软硬件准备 ​
- 软件: 推荐使⽤VMware,服务器上有相关安装包,安装
- 镜像: 推荐使⽤ubuntu 18.04
- 因为是在宿主机上运⾏虚拟化软件安装ubuntu,所以对宿主机的配置有⼀定的要求。最起码I5CPU 双核,内存8G及以上。
2.2.2 安装步骤 ​
- 安装VMWare
- 打开VMWare,创建新的虚拟机
- 可以设置虚拟机的配置,内存,CPU,网络以及操作系统镜像等,其中我们将网络连接模式,我们使用NAT模式(默认就是这种模式)
- 启动虚拟机(启动安装过程可能需要等待)
// 如果安装好虚拟机之后,右上角没有网络的图标,那么可以执行以下操作,重启一下网卡
// 1. 停止网卡
sudo systemctl stop NetworkManager
// 2. 删除网卡缓存数据
sudo rm -rf /var/lib/NetworkManager/NetworkManager.state
// 3. 重启网卡
sudo systemctl restart NetworkManager2.2.3 设置静态IP ​
说明,NAT模式默认情况下是DHCP模式,是自动获取IP的,导致每次虚拟机开启之后获取的IP可能会变化,假如项目中后续连接的是虚拟机上面的MySQL,那么MySQL的HOST地址可能会经常改变,这就需要我们经常去改项目中的MySQL的连接地址,比较麻烦。所以需要改为静态IP,也就是每次开机之后IP不会变,这样才能方便我们后面项目的开发。
首先查看虚拟机本地的IP地址,执行命令
shell# 查看本地IP地址 ifconfig # 如果提示没有找到这个命令,那么首先需要安装工具 sudo apt install net-tools
查看网关地址
编辑 ⇒ 虚拟网络编辑器 ⇒ VMnet8 ⇒ NAT设置

点击NAT设置,即可看到如下图所示

设置静态IP
设置 ⇒ Network ⇒ 点击齿轮

设置为下图所示

重启虚拟机,查看IP地址是否变化,如果未变,那么设置成功。
3. Linux Shell命令 ​
3.1 预备知识 ​
我们知道Linux的⽬录结构为树状结构,最顶级的⽬录为根⽬录 /,我们需要先知道什么是绝对路径与相对路径。
绝对路径: 路径的写法,由根⽬录 / 写起,例如: /usr/share/doc 这个⽬录。
相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd ../man或cd man
3.2 实用高频命令 ​
- pwd :显示当前⽬录路径
- ls: list directory contents,显示当前⽂件夹下的⽬录或⽂件
常⽤选项:
-a 显示所有的⽂件夹和⽂件,包括隐藏⽂件
-l 以详细的形式显示
例如:
[root@www /]# ls -l
total 12
drwxr-xr-x 2 cskaoyan cskaoyan 4096 Aug 2 20:58 cskaoyan
-rw-r--r-- 1 cskaoyan cskaoyan 0 Aug 2 20:47 main.txt
-rw-r--r-- 1 cskaoyan cskaoyan 14 Aug 2 20:11 test.txt- cd : 进⼊⼀个路径或者⽬录,绝对路径或者相对路径都可以
⽤法: cd [路径],⽐如 cd ~(代表进⼊家⽬录)
cd . 进入当前⽬录
cd .. 进⼊上⼀级⽬录
cd /home 进⼊根目录下的home⽬录3.3 Linux⽂件与⽬录管理 ​
3.3.1 目录文件 ​
mkdir: 创建新目录
mkdir 目录的相对路径或绝对路径rmdir: 删除空目录
rmdir 目标目录的相对路径或绝对路径rm: 移除⽂件或⽬录
-f :就是 force 的意思,忽略不存在的⽂件,不会出现警告信息; -i :互动模式,在删除前会询问使⽤者是否动作 -r :递归删除啊!最常⽤在⽬录的删除了!这是⾮常危险的选项!!!cp: 复制文件或目录
cp [-adfilprsu] 来源档(source) ⽬标档(destination) -a:相当於 -pdr 的意思,⾄於 pdr 请参考下列说明;(常⽤) -d:若来源档为连结档的属性(link file),则复制连结档属性⽽⾮⽂件本身 -p:连同⽂件的属性⼀起复制过去,⽽⾮使⽤默认属性(备份常⽤) -r:递归持续复制,⽤於⽬录的复制⾏为;(常⽤)mv: 移动⽂件与⽬录,或修改⽂件与⽬录的名称
mv [-fiu] source destination -f :force 强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖; -i :若⽬标⽂件 (destination) 已经存在时,就会询问是否覆盖! -u :若⽬标⽂件已经存在,且 source ⽐较新,才会覆盖 (update)我们可以使⽤ man [命令] 来查看各个命令的使⽤⽂档,如 :man cp。
3.3.2 普通文件 ​
创建文件
touch: 目标文件的相对路径或绝对路径查看文件内容
cat命令: 以只读的⽅式打开⼀个⽂件。可以加 -n 表示带上⾏号(适合查看⽂件内容⽐较少的)
more命令:和cat功能类似,不过是以分⻚的形式⼀⻚⼀⻚显示数据
more [选项] 目标文件 选项: +n: 从笫n⾏开始显示 -c: 从顶部清屏,然后显示 分页查看命令: 空格: 向后翻一页 b: 键就会往回(back)⼀⻚显示less: 也⽤来分⻚显示数据,但是功能⽐more强⼤。并不会⼀次性将全部⽂件读取才显示,⽽是根据显示
的需要加载对应的数据。
less [选项] 目标文件 选项: -f :强迫打开特殊⽂件,例如外围设备代号、⽬录和⼆进制⽂件 -m :显示类似more命令的百分⽐ -N :显示每⾏的⾏号 分页查看命令: f 向后翻⼀⻚ d 向后翻半⻚ h 显示帮助界⾯ q 退出less 命令 u 向前滚动半⻚ y 向前滚动⼀⾏head: 查看⼀个文件,取开头的⼀部分内容
head -n 目标文件,表示查看目标文件的前n行内容,比如 head -5 a.txttail:查看⼀个⽂件的尾部内容
tail -n 目标文件,查看⽂件的最后n行内容,比如 tail -5 a.txt tail -f filename,尾部持续不断地输出内容。Control + c退出 例如:tail -5f filename
重定向和追加
echo: 输出内容到控制台。
echo $PATH 输出Linux的环境变量到控制台>命令:输出重定向(会将原来的内容覆盖)
echo hello > a.txt 将字符串hello, 写入a.txt文件 ls -l > a.txt 将目录信息,写入a.txt文件 cat a.txt > b.txt(⽂件可以存在,可以不存在) 将a.txt文件内容写入b.txt文件中>>命令:追加(不会覆盖原⽂件的内容,追加到底部)
echo hello >> a.txt 将字符串hello, 追加 写入到a.txt文件 ls -l >> a.txt 将目录信息,追加 写入a.txt文件 cat a.txt >> b.txt(⽂件可以存在,可以不存在) 将a.txt文件内容写入b.txt文件中
压缩与解压缩
tar是⽤来建⽴,还原备份⽂件的⼯具程序,它可以加⼊,解开备份⽂件内的⽂件。
tar
-c:产⽣.tar⽂件
-v:显示详细信息
-z:打包同时压缩
-f:指定压缩后的⽂件名
-x:解压.tar⽂件
压缩: tar -zcvf combine.tar.gz 1.txt
解压: tar -zxvf combine.tar.gz -C java/
-C 表示解压到指定⽬录如果需要解压和压缩为 .zip 格式的⽂件,那么需要安装zip和unzip命令
# 安装
sudo apt install zip
# 压缩
zip [-r] cskaoyan.zip cskaoyan
# 解压
unzip cskaoyan.zip3.2.3 文本编辑 ​
Ubuntu默认没有安装vim,需要先安装vim⼯具。
sudo apt install vimvim有三种模式:命令模式(Command mode)、插⼊模式(Insert mode)、末⾏模式(Last Linemode)。
命令模式
通过指令 vim filename 进⼊命令模式。除此之外,还有⼀些其他的参数,⽐如: -R: 把指定的⽂件以只读的⽅式放⼊vim编辑器中 +: 打开⽂件,并把光标置于最后⼀⾏的⾸部 +n: 打开⽂件,并把光标置于第n⾏的⾸部 命令模式快捷键: 删除: x: 删除光标所在位置的字符 dd: 少出光标所在⾏ ndd: 删除当前⾏后n⾏⽂本(包括此⾏) dG: 删除光标所在⾏⼀直到⽂件末尾的所有内容 D: 删除光标位置到⾏尾的所有内容 删除的内容此时并没有被真正删除,⽽是在剪切版中,按下 p 键,可以将删除的内容粘贴回来。 光标移动: w: 光标移动⾄下⼀个单词⾸ e: 光标移动⾄下⼀个单词尾 b: 光标移动⾄上⼀个单词⾸ gg: 光标移动到⽂件开头 G: 光标移动⾄⽂件末尾 nG: 光标移动到第n⾏,n为数字 0或^:光标移动⾄当前⾏的⾏⾸ $: 光标移动⾄当前⾏的⾏尾插入模式
在命令模式下,通过按下i、I、a、A、o、O这6个字⺟进⼊插⼊模式,不同的字⺟代表不同的进⼊⽅式。 i: 在当前光标位置前⾯插⼊随后输⼊的⽂本,光标后的⽂本相应向右移动 I: 在光标所在⾏的⾏首插⼊随后输⼊的⽂本 o: 在光标所在⾏下⾯插⼊新的⼀⾏,然后光标停在空⾏⾸,等待输⼊⽂本 O: 在光标所在⾏上⾯插⼊新的⼀⾏,然后光标停在空⾏⾸,等待输⼊⽂本 a: 在当前光标位置后⾯插⼊随后输⼊的⽂本,光标后的⽂本相应向右移动 A: 在光标所在⾏的⾏尾插⼊随后输⼊的⽂本按下ESC键离开插⼊模式,进⼊命令模式
末行模式
在命令模式下,按下: 键进⼊末⾏模式。 在该模式下,可以使⽤⼀系列的指令,完成保存、离开vim编辑器等功能。 :wq 保存并退出vim编辑器 :wq! 保存并强制退出vim编辑器 :q 不保存退出 :q! 不保存强制退出 :w 保存不退出 :w! 强制保存不退出 :w filename 另存到filename⽂件 ZZ 直接退出
三种模式之间的关系

3.4 用户管理 ​
Linux系统是⼀个多⽤户、多任务的操作系统。多⽤户是指在linux操作系统中可以创建多个⽤户,⽽这些多⽤户⼜可以同时执⾏各⾃不同的任务,⽽互不影响
在Linux系统中,会存在着以下⼏个概念:
- 用户名: 每个用户在操作系统中,都具有唯一用户名
- ⽤户所属的组:多个用户可以属于同一个用户组。
- ⽤户的家⽬录:在/home目录下,与该用户的用户名一致的目录。
3.4.1 添加用户 ​
- sudo useradd [选项] ⽤户名
sudo useradd test
注意这种⽅式创建出来的没有家⽬录,我们创建的时候需要带参数
sudo useradd -m test: -m 表示在 /home⽬录下创建⼀个家⽬录
sudo useradd -m -s /bin/bash test: 表示指定shell版本是我们熟悉的bash设置用户密码
sudo passwd [⽤户名]切换用户
su [⽤户名]
3.4.2 删除用户 ​
sudo userdel [⽤户名]
-r: 不仅会删除该⽤户,还会删除该⽤户对应的家⽬录
3.5 用户组管理 ​
添加组
sudo groupadd [groupname]
创建⽤户的时候加⼊组: useradd -m -s /bin/bash -g [groupname] [username]查看⽤户及组信息
id ⽤户名
修改用户所属组
usermod -g [groupname] [username]
3.6 文件权限管理 ​
3.6.1 权限及命令 ​
ls -l
total 40
#⽂件信息 ⽂件数 ⽤户 组名 ⼤⼩ ⽉份 ⽇期 时间 ⽂件名
drwxr-xr-x 2 cskaoyan cskaoyan 4096 Aug 2 23:52 cskaoyan
prw-r--r-- 1 cskaoyan cskaoyan 0 Aug 2 23:43 fifo_file
-rw-r--r-- 1 cskaoyan cskaoyan 26825 Aug 3 00:25 main.txt
-rw-r--r-- 1 cskaoyan cskaoyan 33 Aug 3 00:37 test.txt
drwxr-xr-x 3 cskaoyan cskaoyan 4096 Aug 3 01:27 xxxrwx
前10位字符的说明:
- 第1位:-表示是⼀个普通的⽂件;d表示是⼀个⽬录;
- rwx:分别代表Read、Write、Execute即读、写、执⾏权限,这个顺序不会变,如果没有权限的话就⽤-代替
- 第2-4位:表示⽂件所有者的对于文件所具有的权限
- 第5-7位:表示和文件所有者同组的其他用户对文件所具有的权限
- 第8-10位:⽂件其他组⽤户拥有的权限
我们可以使用chmod命令,手动修改文件权限
第一种方式
chmod u=rwx,g=rw,o=r filename u:所有者 g:所有组 o:其他组,a代表全部,没有就用空格替代第二种方式
r=4,w=2,x=1 rwx = 4 + 2 + 1 = 7 chmod 751 等价于 u=rwx,g=rx,o=x
3.6.2 案例 ​
- 新建⼀个police组和⼀个gang组
- police组新增⼀个成员叫刘⼩磊,另⼀个成员⼩警,gang组新增⼀个成员叫张⼤松,另⼀个成员强哥
- 将刘⼩磊和张⼤松的分组对调
- 刘⼩磊创建⼀个⽂件,写下:葵涌码头,⻰⿎滩收货。该⽂件权限⾃⼰可以读写,同组其他⼈员没有权限读写,其他组可以查看
- 张⼤松创建⼀个⽂件,写下:有内⻤,终⽌交易。该⽂件权限⾃⼰可以读写,同组其他⼈员没有权限读写,其他组可以读写
- 将刘⼩磊的账号销毁
#第⼀步
sudo groupadd police
sudo groupadd gang
#第⼆步
sudo useradd -m -s /bin/bash -g police liuxiaolei
sudo useradd -m -s /bin/bash -g police xiaojing
sudo useradd -m -s /bin/bash -g gang zhangdasong
sudo useradd -m -s /bin/bash -g gang qiangge
#给定密码
sudo passwd liuxiaolei
sudo passwd xiaojing
sudo passwd zhangdasong
sudo passwd qiangge
#第三步 卧底
sudo usermod -g police zhangdasong
sudo usermod -g gang liuxiaolei
#第四步 卧底传递情报
su liuxiaolei
sudo echo "葵涌码头,⻰⿎滩收货" > liuxiaolei.txt
chmod 704 liuxiaolei.txt
su zhangdasong
sudo echo "有内⻤,终⽌交易" > zhangdasong.txt3.7 进程管理 ​
3.7.1 查看进程 ​
# 查看Linux 当前主机运行的基本信息(类似于Windows中任务管理器)
topLinux系统中查看进程使⽤情况的命令是ps命令,但是ps命令一般都不会单独使用
常⻅选项:
-e:显示所有进程
-f:全格式
a:显示终端上的所有进程
u:以⽤户的格式来显示进程信息
x:显示后台运⾏的进程⼀般常⽤格式为ps -ef或者ps -aux两种。显示的信息⼤体⼀致,略有区别。

UID:⽤户ID
PID:进程ID
PPID:⽗进程ID
C:CPU⽤于计算执⾏优先级的因⼦。数值越⼤,表明进程是CPU密集型运算,执⾏优先级会降低;数值越
⼩,表明进程是I/O密集型运算,执⾏优先级会提⾼
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU时间
CMD:完整的启动进程所⽤的命令和参数
USER:⽤户名称
PID:程号
%CPU:进程占⽤CPU的百分⽐
%MEM:进程占⽤物理内存的百分⽐
VSZ:进程占⽤的虚拟内存⼤⼩(单位:KB)
RSS:进程占⽤的物理内存⼤⼩(单位:KB)
TT:终端名称(缩写),若为?,则代表此进程与终端⽆关,因为它们是由系统启动的
STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有⽐普通优先级更低的
优先级,R-正在运⾏,D-短期等待,Z-僵死进程,T-被跟踪或者被停⽌等
STARTED:进程的启动时间
TIME:CPU时间,即进程使⽤CPU的总时间
COMMAND:启动进程所⽤的命令和参数,如果过⻓会被截断显示ps -ef 与 ps aux的区别:
- 如果想查看进程的⽗进程ID和完整的CMD命令,可以使⽤ef
- 如果想查看进程的CPU占⽤率和内存占⽤率,可以使⽤aux
如果还想进一步筛选想要查询的目标进程信息,可以使用管道命令
#搜索匹配进程
ps -ef | grep [搜索内容]3.7.2 终止进程 ​
kill [选项] 进程号
选项:
-9:操作系统从内核级别强制杀死⼀个进程
-15:可以理解为操作系统发送⼀个通知告诉应⽤主动关闭3.7.3 服务管理 ​
服务本质上来说也是⼀个进程,只不过是在后台运⾏。监听着某⼀端⼝,等待该端⼝的请求到来,⽐如ssh服务监听着22端⼝,mysql服务监听着3306端⼝;
systemctl start/stop/restart/status/reload 服务名称
#⽐如关闭ssh服务
systemctl stop sshd3.8 网络管理 ​
3.8.1 查看网络设置 ​
ifconfig3.8.2 查看网络端口占用 ​
- netstat
-a:显示全部
-n:以数字的形式显示
-p:显示该连接被哪个应⽤程序占⽤PID
eg:
netstat -anp | grep 3306- lsof -i: 端⼝号
3.8.3 测试网络是否正常 ​
ping [⽬的ip或者域名]# 补充命令
# 查看磁盘
df -h
# 查看内存
free -m
top
tail -f
vim
less
ps -ef | grep
netstat -anp | grep4. Linux 远程软件的安装 ​
4.1 远程连接软件 ​
安装软件,使得我们可以通过ssh协议远程连接Linux服务器。
什么是ssh协议?
SSH 为 Secure Shell 的缩写,由 IETF 的⽹络⼯作⼩bai组(Network Working Group)所制定;SSH为建⽴在应⽤层和传输层基础之上的安全协议。SSH 是⽬前较可靠,专为远程登录会话和其他⽹络服务提供安全性的协议
如何使⽤ssh协议远程连接服务器?
- ⾸先需要在⽬标服务器上安装ssh服务(Ubuntu 16 默认⾃带了这个服务)
#查看ssh服务是否启动
ps -aux|grep sshd
#如果出现sshd进程则表示已经启动,如果没有出现那么执⾏下⾯的命令
#更新apt源
sudo apt update
#安装ssh
sudo apt install openssh-server
#安装完之后再次查看sshd是否已经启动,如果没有启动的话执⾏以下命令启动
sudo service ssh restart
# 注意,如果是刚装的新的虚拟机执行sudo apt update命令报错,执行如下命令之后在执行update命令即可
sudo apt-get install --reinstall libappstream4在⽬标服务器上安装ssh服务之后需要在本机也安装ssh客户端的软件,可以安装的ssh协议客户端软件有很多,例如xshell、SecrueCRT、iterm2、MobaXterm等等


4.2 远程文件传输 ​
需要使用ftp软件实现,本地主机和远程服务器主机的文件传输。
FTP(File Transfer Protocol,⽂件传输协议) 是 TCP/IP 协议组中的协议之⼀。FTP协议包括两个组成部分,其⼀为FTP服务器,其⼆为FTP客户端。其中FTP服务器⽤来存储⽂件,⽤户可以使⽤FTP客户端,通过FTP协议访问位于FTP服务器上的资源
如何使⽤?安装 winscp , filezila 或者是 transmit 软件即可。
5. Java开发环境的搭建 ​
5.1 JDK环境搭建 ​
- 从oracle官⽹下载linux的jdk8,之后⽤winscp⼯具等将jdk8上传到linux机器上
- 解压tar.gz到某个目录下
sudo mkdir /usr/local/java
cd /usr/local/java
sudo tar -zxvf jdk-8u231-linux-x64.tar.gz
sudo mv jdk1.8.0_231/ jdk配置JDK的环境变量
进入配置文件 sudo vim /etc/profile
编辑文件,在文件末尾添加环境变量
export JAVA_HOME=/usr/local/java/jdk export JRE_HOME=/usr/local/java/jdk/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH退出文件编译之后,执行如下命令,让配置文件生效
source /etc/profile执⾏命令 java -version 查看JDK环境变量是否已经搭建好
5.2 Tomcat的安装 ​
#先把tomcat压缩包丢进服务器⾥⾯去
mkdir /usr/local/tomcat
sudo tar -zxvf apache-tomcat-8.5.50.tar.gz
# -R这个参数的意思是 递归赋予文件夹下的所有文件权限
chmod -R 777 *
cd bin
#启动tomcat
./start.sh5.3 Mysql环境搭建 ​
使用apt工具安装mysql
sudo apt update sudo apt install mysql-server #如果是ubuntu 16.04 那么此时会要求你输⼊密码,如果是18.04,那么就直接完成安装了Ubuntu18.04 安装完之后修改mysql密码,我们先使用mysql的一个默认用户名和密码登录,需要先找到这个用户名和密码
sudo cat /etc/mysql/debian.cnf
- 以上一步中得到的用户名和密码登录mysql,修改root用户的密码为我们想要的密码
#登陆mysql
mysql -u debian-sys-maint -p
#修改⽤户名密码
use mysql;#连接到mysql数据库
#修改密码123456是密码
alter user 'root'@'%' identified by '123456';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges
quit- 重启mysql服务
#重启mysql
systemctl restart mysql如果我们需要,远程用navicat基于mysql协议连接,虚拟机中的mysql怎么办呢?
- 修改被连接的mysql服务的配置,进入/etc/mysql/mysql.conf.d目录,用vim打开配置文件


- 在mysql数据库中,增加远程连接的root用户,并赋予其权限
mysql -uroot -p
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
exit;重启MySQL服务
#重启mysql
systemctl restart mysql然后就可以通过navicat,基于mysql协议远程连接mysql服务了

我们还可以基于ssh协议,远程连接Mysql,此时

然后点击测试连接,测试连接是否成功
笔记 ​
- 查看日志命令:tail -f 监听文件尾部的变化
- 压缩解压缩:tar -zcvf xxx.tar.gz 被压缩文件
- tar -zxvf xxx.tar.gz -C 解压目录
- zip -r xxx.zip 被压缩文件
- 设备文件:block块设备文件 char字符文件
- load average load1 load5 load15 上限是cpu核心数
- 内存free -m 磁盘df -h
- ps查看当前进程 ps -ef查看所有进程,显示父进程pid。ps aux包含进程所占用资源信息、
- 查看进程监听的端口netstat -anp | grep 8080