Linux

1.安装

1.1.center os7安装

image-20220727194413084

image-20220727194533034

image-20220727194600064

image-20220727194654425

image-20220727194834598

image-20220727194844621

image-20220727194912208

image-20220727194930401

image-20220727194945620

image-20220727194953858

image-20220727195010281

image-20220727195035467

image-20220727195110333

image-20220727195128584

image-20220727195212042

image-20220727195430926

回车,等待安装

image-20220727195603431

image-20220727195735597

1.2.vmtools 安装

1)可以直接粘贴命令在 windows 和 centos 系统之间

2)可以设置 windows 和 centos 的共享文件夹

image-20220731150814746

打开vmware软件,点击虚拟机,有个安装VMware Tools

image-20220731151122208

安装成功之后,本机的文件可以直接拖拽到虚拟机的系统里面

image-20220731151347443

1.3.安装图形化管理界面(GNOME 桌面)

安装桌面之前要确保yum list可以正常运行,yum相当于是CentOS的软件商店,yum list 即操作系统中可安装的软件列表。 (保证网络能够正常连接,关于网络无法连接的问题请下面的网络无法连接的解决方法

1.输入yum groups install "GNOME Desktop" 下载GNOME桌面。 过程中遇到选择时,一直输入 y (yes) 完成后会显示 Complete!

安装过程出现上述错误:

Transaction check error:
file /boot/efi/EFI/centos from install of fwupdate-efi-12-5.el7.centos.x86_64 conflicts with file from package grub2-common-1:2.02-0.65.el7.centos.2.noarch

命令行中输入 yum upgrade -y (只会升级所有包)

升级完成后,在输入yum groupinstall “GNOME Desktop” “Graphical Administration Tools”即可。

image-20220731122502701

image-20220731125524084

1
ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target  

重启机器。启动默认进入图形界面。

1
reboot

image-20220731130119230

为了方便,可以将CentOS 7 设置为图形界面登陆。操作为: 单击右键,选择 open terminal 打开终端,输入systemctl set-default graphical.target,然后重启系统。

1.4.网络无法连接

img

安装好CentOS 7系统后,会进入命令行界面,输入用户名和密码后可以登陆系统。(注意:密码输入时是不可见的)。

首先检测一下网络的连通性(例如 ping www.baidu.com)

没有ping通,说明网络异常

image-20220731112005764

进入cd /etc/sysconfig/network-scripts/,再输入dir查看文件列表信息,也可以使用ls命令查看,如图:

image-20220731112223338

第一个文件名为 ifcfg-ens33就是相关文件了,不同的系统名称可能不同,一般都是第一个。然后,进入这个文件并编辑内容,输入vi+文件名,这里我输入的是vi ifcfg-ens33

image-20220731112727467

该文件内容如上图,最后一行的ONBOOT表示开机是否启动网络,需要把no改为yes。
具体方法为:

1.输入i进入编辑状态,把no改为yes。
2.先按ESC键,然后输入:wq保存并退出。

image-20220731112833086

image-20220731112852995

可以用cat命令查看文件是否更改正确,输入cat ifcfg-ens33

image-20220731113028664

最后重启一下网络,systemctl restart network.service
ping www.baidu.com,这时候网络就能正常连接了。

image-20220731113205024

2.Linux 的目录结构

linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。

image-20220719094340797

以下是对这些目录的解释:

  • /bin
    bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

  • /boot:
    这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev :
    dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

  • /etc:
    etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home
    用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。

  • /lib
    lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /media
    linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

  • /mnt
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

  • /opt
    opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc
    proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin
    s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

  • /selinux
    这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

  • /srv
    该目录存放一些服务启动之后需要提取的数据。

  • /sys

    这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

    sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

    该文件系统是内核设备树的一个直观反映。

    当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp
    tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

  • /usr
    usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

  • /usr/bin:
    系统用户使用的应用程序。

  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:
    内核源代码默认的放置目录。

  • /var
    var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /run
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

3.远程登录 Linux 系统

远程登录客户端有 Xshell5, Xftp5 , 我们学习使用 Xshell5 和 Xftp , 其它的远程工具大同小异.

3.1 远程登录 Linux-Xshell5

说明: Xshell 是目前最好的远程登录到 Linux 操作的软件,流畅的速度并且完美解决了中文乱码的问题, 是目前程序员首选的软件。

Xshell 是一个强大的安全终端模拟软件,它支持 SSH1, SSH2, 以及 Microsoft Windows 平台的 TELNET 协议。

Xshell 可以在 Windows 界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。

特别说明:如果希望安装好 XShell 5 就可以远程访问 Linux 系统的话,需要有一个前提,就是Linux 启用了 SSHD 服务,该服务会监听 22号端口

3.2 安装 XShell5 并使用

安装参考网址:https://www.cnblogs.com/bowendown/p/11937159.html

官网地址:https://www.xshell.com/zh/free-for-home-school/

3.2.1. 如何用xshell远程连接linux

打开linux,用下面的命令查看一下IP地址:

1
ip addr

image-20220731161635797

从结果中找到ip地址,然后复制,用于xshell的连接。

注意:斜杠后面的数字不是IP地址,只需要斜杠之前的数字就行了。

3.2.2 打开xshell,点击 文件–>新建

image-20220731161845158

然后选择用户身份验证,输入用户名和密码,这里可以选择root用户。

image-20220731163510118

然后选择确定。

左侧边栏就会出现一个连接,双击它

image-20220731173538012

1、查看是否安装openssh-server,执行命令:

1
yum list installed | grep openssh-server

image-20220731163029032

如果有openssh-server,则是已安装,如果没有则需要安装,执行安装命令:

1
yum install openssh-server

2、打开sshd配置文件sshd_config ,执行命令:

1
vi /etc/ssh/sshd_config

去掉监听端口、地址前的注释:(按i进入编辑状态,)

3、开启远程登录:

4、开启用户密码作为连接验证,最后按esc,输入:wq保存退出

image-20220731163926963

image-20220731164351115

image-20220731164439805

5、开启 sshd 服务,执行命令:

1
2
3
sudo service sshd start
或者下面的这个
sudo systemctl start sshd.service

停止SSH服务命令(service sshd stop)

重启SSH服务命令(service sshd restart)

6、查看22端口是否被监听,执行命令:netstat -nltp|grep 22

image-20220731164652880

查看SSH服务是否正在运行,执行命令:/etc/init.d/sshd status

检查SSHD是否在本运行级别下设置为开机启动
输入命令:chkconfig –list sshd

设置SSH服务为开机启动。
输入命令:chkconfig sshd on即可。
若是chkconfig sshd off则禁止SSH开机启动

4.Linux的常用命令

列出文件列表:ls ll dir

ls(list)是一个非常有用的命令,用来显示当前目录下的内容。配合参数的使用,能以不同的方式显示目录内容。

格式:ls[参数] [路径或文件名]

在linux中以 . 开头的文件都是隐藏的文件

1
2
3
ls	浏览当前文件夹下的文件(不包含隐藏文件)
ls -a 显示所有文件或目录(包含隐藏的文件)
ls -l 缩写成ll(会显示文件夹的具体信息)

蓝色代表文件夹,绿色代表可执行文件,压缩文件

image-20220801141859184

切换目录命令cd:

按Tab键可以补全

1
2
3
4
5
cd app	切换到app目录
cd .. 切换到上一层目录
cd / 切换到系统根目录
cd ~ 切换到用户主目录
cd - 切换到上一个所在目录

创建目录和移除目录:mkdir rmdir

1
2
3
4
5
6
7
8
mkdir(make directory)命令可用来创建子目录。
mkdir app 在当前目录下创建aaa目录
mkdir –p bbb/ccc 级联创建bbb以及ccc目

mkdir --help 查看有关mkdir的使用

rmdir(remove directory)命令可用来删除“空”的子目录:
rmdir aaa 删除aaa目录

浏览文件:cat more less tail

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cat
用于显示文件的内容。
格式:cat[参数]<文件名>

* cat yum.conf

more
一般用于要显示的内容会超过一个画面长度的情况。按空格键显示下一个画面。
回车显示下一行内容。
按 q 键或者ctrl+c退出查看。
* more yum.conf
* 空格显示下一页数据 回车显示下一行的数据

less
用法和more类似,不同的是less可以通过PgUp、PgDn键来控制。
* less yum.conf
* PgUp 和 PgDn 进行上下翻页.
1
2
3
4
5
6
tail命令是在实际使用过程中使用非常多的一个命令,它的功能是:用于显示文件后几行的内容。
用法:
tail -10 /etc/passwd 查看后10行数据
tail -f catalina.log 动态查看日志(*****)

ctrl+c 结束查看

文件操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
rm  删除文件
用法:rm [选项]... 文件...
rm a.txt 删除a.txt文件
删除需要用户确认,y/n

rm 删除不询问
rm -f a.txt 不询问,直接删除

rm 删除目录
rm -r a 递归删除

不询问递归删除(慎用)
rm -rf a 不询问递归删除
rm -rf * 删除所有文件
rm -rf /* 自杀
1
2
3
4
5
6
7
8
cp(copy)命令可以将文件从一处复制到另一处。一般在使用cp命令时将一个文件复制成另一个文件或复制到某目录时,需要指定源文件名与目标文件名或目录。
cp a.txt b.txt 将a.txt复制为b.txt文件
cp a.txt ../ 将a.txt文件复制到上一层目录中


mv 移动或者重命名
mv a.txt ../ 将a.txt文件移动到上一层目录中
mv a.txt b.txt 将a.txt文件重命名为b.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件,再以gzip压缩命令压缩成xxx.tar.gz(或称为xxx.tgz)的文件。

常用参数:
-c:创建一个新tar文件
-v:显示运行过程的信息
-f:指定文件名
-z:调用gzip压缩命令进行压缩
-t:查看压缩文件的内容
-x:解开tar文件

打包:
tar –cvf xxx.tar ./*
打包并且压缩:
tar –zcvf xxx.tar.gz ./*

解压
tar –xvf xxx.tar
tar -xvf xxx.tar.gz -C /usr/aaa
1
2
3
4
5
6
7
find指令用于查找符合条件的文件
示例:
find / -name "ins*" 查找文件名称是以ins开头的文件
find / -name "ins*" -ls
find / -user ep 查找用户ep的文件
find / -user ep -type d -ls 查找用户itcast的目录
find / -perm -777 -type d -ls 查找权限是777的文件

image-20220801154915087

1
2
3
4
5
6
7
查找符合条件的字符串。
用法: grep [选项]... PATTERN [FILE]...
示例:
grep lang anaconda-ks.cfg 在文件中查找lang
grep lang anaconda-ks.cfg –color 高亮显示
grep lang anaconda-ks.cfg –color -A5 并显示查找到的前5行
grep lang anaconda-ks.cfg –color -A5 -B5 显示查找到的内容的前五行和后五行
1
2
3
4
5
6
7
8
9
10
【pwd】
显示当前所在目录
【touch】
创建一个空文件
* touch a.txt
【ll -h】
友好显示文件大小
【wget】
下载资料
* wget http://nginx.org/download/nginx-1.9.12.tar.gz

重定向输出>和>>

1
2
3
4
5
6
7
> 重定向输出,覆盖原有内容;
>> 重定向输出,又追加功能;
示例:
cat /etc/passwd > a.txt 将输出定向到a.txt中
cat /etc/passwd >> a.txt 输出并且追加

ifconfig > ifconfig.txt

系统管理命令:

1
2
3
4
5
ps 正在运行的某个进程的状态
ps -ef 查看所有进程
ps -ef | grep ssh 查找某一进程
kill 2868 杀掉2868编号的进程
kill -9 2868 强制杀死进程

管道:

1
2
3
4
5
6
7
8
管道是Linux命令中重要的一个概念,其作用是将一个命令的输出用作另一个命令的输入。
示例
ls --help | more 分页查询帮助信息
ps –ef | grep java 查询名称中包含java的进程

ifconfig | more
cat index.html | more
ps –ef | grep aio

&&命令执行控制:

1
2
3
4
命令之间使用 && 连接,实现逻辑与的功能。 
只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。 
只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。
mkdir test && cd test

网络通讯命令:

1
2
3
4
5
6
7
8
ifconfig  显示或设置网络设备。
ifconfig 显示网络设备
ifconfig eth0 up 启用eth0网卡
ifconfig eth0 down 停用eth0网卡
ping 探测网络是否通畅。
ping 192.168.0.1
netstat 查看网络端口。
netstat -an | grep 3306 查询3306端口占用情况

系统管理命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
date 显示或设置系统时间
date 显示当前系统时间
date -s “2014-01-01 10:10:10“ 设置系统时间
df 显示磁盘信息
df –h 友好显示大小
free 显示内存状态
free –m 以mb单位显示内存组昂头
top 显示,管理执行中的程序

clear 清屏幕

ps 正在运行的某个进程的状态
ps –ef 查看所有进程
ps –ef | grep ssh 查找某一进程
kill 杀掉某一进程
kill 2868 杀掉2868编号的进程
kill -9 2868 强制杀死进程

du 显示目录或文件的大小。
du –h 显示当前目录的大小

who 显示目前登入系统的用户信息。

hostname 查看当前主机名
修改:vi /etc/sysconfig/network

uname 显示系统信息。
uname -a 显示本机详细信息。
依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称

5.Linux的权限命令

img

image-20220801165855716

image-20220801165938853

Linux三种文件类型:

普通文件: 包括文本文件、数据文件、可执行的二进制程序文件等。

目录文件: Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。

设备文件: Linux系统把每一个设备都看成是一个文件

文件类型标识:

普通文件(-)

目录(d)

符号链接(l)

* 进入etc可以查看,相当于快捷方式

字符设备文件(c)

块设备文件(s)

套接字(s)

命名管道(p)

文件权限管理:

1
2
3
4
5
6
7
chmod 变更文件或目录的权限。
chmod 755 a.txt
chmod u=rwx,g=rx,o=rx a.txt
chmod 000 a.txt / chmod 777 a.txt
chown 变更文件或目录改文件所属用户和组
chown u1:public a.txt :变更当前的目录或文件的所属用户和组
chown -R u1:public dir :变更目录中的所有的子目录及文件的所属用户和组

image-20220801170636412

6.Linux的用户和组

用户的管理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
useradd 添加一个用户
useradd test 添加test用户
useradd test -d /home/t1 指定用户home目录

passwd 设置、修改密码
passwd test 为test用户设置密码

切换登录:
ssh -l test -p 22 192.168.19.128

su – 用户名

userdel 删除一个用户
userdel test 删除test用户(不会删除home目录)
userdel –r test 删除用户以及home目录

组管理:

1
2
3
4
5
6
7
当在创建一个新用户user时,若没有指定他所属于的组,就建立一个和该用户同名的私有组
创建用户时也可以指定所在组
groupadd 创建组
groupadd public 创建一个名为public的组
useradd u1 –g public 创建用户指定组
groupdel 删除组,如果该组有用户成员,必须先删除用户才能删除组。
groupdel public

id,su命令:

【id命令】

1
2
功能:查看一个用户的UID和GID
用法:id [选项]... [用户名]

【su命令】

1
2
3
4
5
功能:切换用户。
用法:su [选项]... [-] [用户 [参数]... ]
示例:
su u1 切换到u1用户
su - u1 切换到u1用户,并且将环境也切换到u1用户的环境(推荐使用)

【账户文件】

1
2
3
/etc/passwd  用户文件
/etc/shadow 密码文件
/etc/group 组信息文件

【用户文件】

1
2
3
4
5
6
7
8
root:x:0:0:root:/root:/bin/bash
账号名称: 在系统中是唯一的
用户密码: 此字段存放加密口令
用户标识码(User ID): 系统内部用它来标示用户
组标识码(Group ID): 系统内部用它来标识用户属性
用户相关信息: 例如用户全名等
用户目录: 用户登录系统后所进入的目录
用户环境: 用户工作的环境

【密码文件】

1
2
3
4
5
6
7
8
9
10
shadow文件中每条记录用冒号间隔的9个字段组成.
用户名:用户登录到系统时使用的名字,而且是惟一的
口令: 存放加密的口令
最后一次修改时间: 标识从某一时刻起到用户最后一次修改时间
最大时间间隔: 口令保持有效的最大天数,即多少天后必须修改口令
最小时间间隔: 再次修改口令之间的最小天数
警告时间:从系统开始警告到口令正式失效的天数
不活动时间: 口令过期少天后,该账号被禁用
失效时间:指示口令失效的绝对天数(从1970年1月1日开始计算)
标志:未使用

【组文件】

1
2
3
4
5
root:x:0:
组名:用户所属组
组口令:一般不用
GID:组ID
用户列表:属于该组的所有用户

7.Linux常用网络操作

主机名配置:

1
2
3
hostname 查看主机名
hostname xxx 修改主机名 重启后无效
如果想要永久生效,可以修改/etc/sysconfig/network文件

ip 地址配置

1
2
3
4
5
6
7
8
9
10
11
12
ifconfig 查看(修改)ip地址(重启后无效)
ifconfig eth0 192.168.12.22 修改ip地址
如果想要永久生效
修改 /etc/sysconfig/network-scripts/ifcfg-eth0文件
DEVICE=eth0 #网卡名称
BOOTPROTO=static #获取ip的方式(static/dhcp/bootp/none)
HWADDR=00:0C:29:B5:B2:69 #MAC地址
IPADDR=12.168.177.129 #IP地址
NETMASK=255.255.255.0 #子网掩码
NETWORK=192.168.177.0 #网络地址
BROADCAST=192.168.0.255 #广播地址
NBOOT=yes #  系统启动时是否设置此网络接口,设置为yes时,系统启动时激活此设备。

域名映射:

1
/etc/hosts文件用于在通过主机名进行访问时做ip地址解析之用,相当于windows系统的C:\Windows\System32\drivers\etc\hosts文件的功能

网络服务管理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
service network status 查看指定服务的状态
service network stop 停止指定服务
service network start 启动指定服务
service network restart 重启指定服务

service --status–all 查看系统中所有后台服务
netstat –nltp 查看系统中网络进程的端口监听情况

防火墙设置
防火墙根据配置文件/etc/sysconfig/iptables来控制本的”出”、”入”网络访问行为。
service iptables status 查看防火墙状态
service iptables stop 关闭防火墙
service iptables start 启动防火墙
chkconfig iptables off 禁止防火墙自启

防火墙

查看Linux防火墙是否打开,如打开,则关闭防火墙
查看是否打开:(not running是未打开,running是打开)

1
firewall-cmd --state

如果是running,则证明是打开的,则关闭防火墙:(开启命令为:service firewalld start)

1
service firewalld stop

再查看状态,如果是 not running 证明关闭成功

1
firewall-cmd --state

如果想关闭防火墙的开机自启:(前提要先关闭防火墙)

1
systemctl disable firewalld

如果想开启防火墙的开机自启:

1
systemctl enable firewalld

开放某个端口(这里开放了3306端口):

1
firewall-cmd --zone=public --add-port=3306/tcp –permanent

开放端口

查看端口
你可以先查看一下,你的机器开放了哪些端口
会发现啥端口都没有

1
firewall-cmd --list-ports

打开需要的端口
那现在我们添加我所需要的80端口

1
firewall-cmd --zone=public --add-port=80/tcp

重启防火墙
注意一定要重启防火墙,不然的话你添加的端口就不生效的,你即使再去查看你的端口,还是不显示的,就像这个样子

重启一下防火墙,再去查看添加的端口就生效了(不重启也可以)

1
firewall-cmd --reload

image-20220802150611033

8.Linux上安装软件

Linux上的软件安装有以下几种常见方式介绍

  1. 二进制发布包

    软件已经针对具体平台编译打包发布,只要解压,修改配置即可

  2. RPM包

    软件已经按照redhat的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用RPM命令进行安装

  3. Yum在线安装

    软件已经以RPM规范打包,但发布在了网络上的一些服务器上,可用yum在线安装服务器上的rpm软件,并且会自动解决软件安装过程中的库依赖问题

  4. 源码编译安装

    软件以源码工程的形式发布,需要获取到源码工程后用相应开发工具进行编译打包部署。

8.1安装jdk

linux会自带jdk,所以可以忽略

image-20220801194339860

1.查看linx版本

1
getconf LONG_BIT

2.下载jdk:https://www.oracle.com/java/technologies/downloads/#java8

【步骤一】:上传JDK到Linux的服务器.

1
2
3
4
5
6
7
8
* 上传JDK
* 卸载open-JDK

java –version
rpm -qa | grep java

rpm -e --nodeps java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.i686
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.i686

【步骤二】:在Linux服务器上安装JDK

1
2
3
* 通常将软件安装到/usr/local
* 直接解压就可以
tar –xvf jdk.tar.gz -C 目标路径

【步骤三】:配置JDK的环境变量.

配置环境变量:

1
2
3
4
5
6
7
8
9
10
① vi /etc/profile

② 在末尾行添加
#set java environment
JAVA_HOME=/usr/local/jdk/jdk1.7.0_71
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出
③source /etc/profile 使更改的配置立即生效

8.2安装mysql

【步骤一】:将mysql的安装文件上传到Linux的服务器.

将mysql的tar解压

https://blog.csdn.net/wangqingjia/article/details/125390817

远程连接不上mysql需要对外开发

配置对外开放端口

1
iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT

8.3安装tomcat

下载之后解压,即可使用

https://tomcat.apache.org/download-10.cgi

1.Tomcat上传到linux上

2.将上传的tomcat解压

3.在tomcat/bin目录下执行 startup.sh(注意防火墙)

4.查看目标 tomcat/logs/catalina.out

8.4安装Redis

【步骤一】安装gcc-c++

redis是C语言开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境。

输入命令:

1
yum install gcc-c++

​ 输入y确认下载,输入y确认安装

image-20220802093249260

【步骤二】安装redis

  1. 下载redis
1
wget http://download.redis.io/releases/redis-7.0.4.tar.gz
  1. 解压
1
tar -xzvf redis-7.0.4.tar.gz
  1. 编译安装、切换至程序目录,并执行make命令编译
1
2
cd redis-7.0.4
make

执行安装命令

1
make PREFIX=/usr/local/redis install 

make install安装完成后,会在/usr/local/redis/bin目录下生成下面几个可执行文件,它们的作用分别是:

redis-server:Redis服务器端启动程序

redis-cli:Redis客户端操作工具。也可以用telnet根据其纯文本协议来操作

redis-benchmark:Redis性能测试工具

redis-check-aof:数据修复工具

redis-check-dump:检查导出工具

image-20220802094638168

【步骤三】配置redis

  1. 复制配置文件到/usr/local/redis/bin目录:
1
2
cd redis-7.0.4
cp redis.conf /usr/local/redis/bin

【步骤四】启动redis

  1. 进入redis/bin目录
1
cd redis/bin

启动redis服务端

1
./redis-server redis.conf
  1. 克隆新窗口,启动redis客户端
1
./redis-cli

8.5部署项目到Linux

  1. 修改pom配置

在pom.xml中添加

img

注意数据库要加characterEncoding=utf-8

  1. 使用package命令打包

    img3. 将travel.war上传到tomcat中的webapps目录

    image-20220802123432650

    4.重启tomcat

    5.到出本地mysql数据,并导入linux中的mysql

    image-20220802123747374

9.Nginx

9.1什么是Nginx

Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。

Nginx 应用场景:

1、http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器

2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。

3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用 nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

9.2Nginx在Linux下的安装

9.2.1环境准备

(1)需要安装 gcc 的环境【此步省略】(因为安装redis时需要安装gcc)

1
yum install gcc-c++

(2)第三方的开发包。

PCRE

PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。

1
yum install -y pcre pcre-devel

注:pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。

zlib

zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。

1
yum install -y zlib zlib-devel

OpenSSL

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。

1
yum install -y openssl openssl-devel

9.2.2 Nginx下载与安装

官方网站下载 nginx:http://nginx.org/

第一步:把 nginx 的源码包nginx-1.23.1.tar.gz上传到 linux 系统

第二步:解压缩

1
tar zxvf nginx-1.23.1.tar.gz

第三步:进入nginx-1.23.1目录 使用 configure 命令创建一 makeFile 文件。

1
2
3
4
5
6
7
8
9
10
11
12
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

image-20220802110113120

执行后可以看到Makefile文件

image-20220802110152000

知识点小贴士

Makefile是一种配置文件,Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
----  知识点小贴士 ----
configure参数
./configure \
--prefix=/usr \                                                        指向安装目录
--sbin-path=/usr/sbin/nginx \                                 指向(执行)程序文件(nginx)
--conf-path=/etc/nginx/nginx.conf \                      指向配置文件
--error-log-path=/var/log/nginx/error.log \              指向log
--http-log-path=/var/log/nginx/access.log \            指向http-log
--pid-path=/var/run/nginx/nginx.pid \                      指向pid
--lock-path=/var/lock/nginx.lock \          (安装文件锁定,防止安装文件被别人利用,或自己误操作。)
--user=nginx \
--group=nginx \
--with-http_ssl_module \          启用ngx_http_ssl_module支持(使支持https请求,需已安装openssl)
--with-http_flv_module \          启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件)
--with-http_stub_status_module \ 启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)
--with-http_gzip_static_module \   启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)
--http-client-body-temp-path=/var/tmp/nginx/client/ \ 设定http客户端请求临时文件路径
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \ 设定http代理临时文件路径
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ 设定http fastcgi临时文件路径
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ 设定http uwsgi临时文件路径
--http-scgi-temp-path=/var/tmp/nginx/scgi \ 设定http scgi临时文件路径
--with-pcre 启用pcre库

第四步:编译

1
make

第五步:安装

1
make install

9.2.3 Nginx启动与访问

注意:启动nginx 之前,上边将临时文件目录指定为/var/temp/nginx/client, 需要在/var 下创建此 目录

1
mkdir /var/temp/nginx/client -p

进入到Nginx目录下的sbin目录

1
cd /usr/local/nginx/sbin

输入命令启动Nginx

1
./nginx

启动后查看进程

1
ps aux|grep nginx

地址栏输入虚拟机的IP即可访问(默认为80端口)

image-20220802111401268

关闭 nginx:

1
./nginx -s stop

或者

1
./nginx -s quit

重启 nginx:

1、先关闭后启动。

2、刷新配置文件:

1
./nginx -s reload

9.3Nginx静态网站部署

9.3.1 静态网站的部署

配置EditPlus(可以连接linux,对配置文件进行修改,简化vim操作)

image-20220802134649859

image-20220802135033726

image-20220802135107330

image-20220802135326839

修改静待资源文件夹位置(直接拖拽index文件到ngix目录下)

image-20220802140318804

image-20220802142049676

9.3.2 配置虚拟主机

虚拟主机,也叫“网站空间”,就是把一台运行在互联网上的物理服务器划分成多个“虚拟”服务器。虚拟主机技术极大的促进了网络技术的应用和普及。同时虚拟主机的租用服务也成了网络时代的一种新型经济形式。

9.3.2.1端口绑定

(1)上传静态网站:

将/资料/静态页面/index目录上传至 /usr/local/nginx/index下

将/资料/静态页面/regist目录上传至 /usr/local/nginx/regist下

(2)修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
server {
listen 80; # 监听的端口
server_name localhost; # 域名或者ip

location / { # 访问路径配置
root index; # 根目录
index index.html index.htm; # 默认首页
}

error_page 500 502 503 504 /50x.html; # 错误页面
location = /50x.html {
root html;
}

}
server {
listen 81; # 监听的端口
server_name localhost; # 域名或者ip

location / { # 访问路径配置
root regist; # 根目录
index regist.html; # 默认首页
}

error_page 500 502 503 504 /50x.html; # 错误页面
location = /50x.html {
root html;
}

}

(3)重启访问测试:

地址栏输入http://localhost:80 可以看到首页面

地址栏输入http://localhost:81 可以看到注册页面

9.3.2.2 域名绑定

什么是域名:

域名([Domain Name](https://baike.baidu.com/item/Domain Name)),是由一串用“点”分隔的字符组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。域名是一个IP地址上有“面具” 。域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。域名作为力所能及难忘的互联网参与者的名称。域名按域名系统(DNS)的规则流程组成。在DNS中注册的任何名称都是域名。域名用于各种网络环境和应用程序特定的命名和寻址目的。通常,域名表示互联网协议(IP)资源,例如用于访问因特网的个人计算机,托管网站的服务器计算机,或网站本身或通过因特网传送的任何其他服务。世界上第一个注册的域名是在1985年1月注册的。

域名与IP绑定:

一个域名对应一个 ip 地址,一个 ip 地址可以被多个域名绑定。

本地测试可以修改 hosts 文件(C:\Windows\System32\drivers\etc)

可以配置域名和 ip 的映射关系,如果 hosts 文件中配置了域名和 ip 的对应关系,不需要走dns 服务器。

192.168.247.130 www.ep.com

192.168.247.130 regist.ep.com

image-20220802150836871

做好域名指向后,修改nginx配置文件

image-20220802145436841

重启nginx服务器:(/usr/local/nginx/sbin)

1
./nginx -s reload

地址栏输入http://www.ep.com/

image-20220802151824262

地址栏输入http://www.regist.ep.com/

image-20220802151842069

9.4.Nginx反向代理与负载均衡

9.4.1 反向代理

9.4.1.1 什么是反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

首先我们先理解正向代理,如下图:(代理客户端)

image-20220802153415618

正向代理是针对你的客户端,而反向代理是针对服务器的,如下图

image-20220802153448788

image-20220802153503329

9.4.1.2 配置反向代理-准备工作

(1) 将travel案例部署到tomcat中(ROOT目录),上传到服务器。(直接打包为ROOT.war)

注意:root要大写

image-20220802153746495

image-20220802154030927

image-20220802154445121

(2)启动TOMCAT,输入网址http://192.168.247.130:8080 可以看到网站首页

9.4.1.3 配置反向代理

(1)在Nginx主机修改 Nginx配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  upstream tomcat-ep {  # 名字随意
server 192.168.247.130:8080; # 配置tomcat的地址
}

server {
listen 80; # 监听的端口
server_name www.ep.com; # 域名或者ip

location / { # 访问路径配置
# root index; # 根目录
proxy_pass http://tomcat-ep; # 配置代理的地址
index index.html index.htm; # 默认首页
}

error_page 500 502 503 504 /50x.html; # 错误页面
location = /50x.html {
root html;
}

}
server {
listen 80; # 监听的端口
server_name regist.ep.com; # 域名或者ip

location / { # 访问路径配置
root regist; # 根目录
index regist.html; # 默认首页
}

error_page 500 502 503 504 /50x.html; # 错误页面
location = /50x.html {
root html;
}

}

image-20220802155310320

(2)重新启动Nginx 然后用浏览器测试:http://www.ep.com (此域名须配置域名指向)

9.4.2 负载均衡

9.4.2.1 什么是负载均衡

​ 负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

​ 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器FTP服务器企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

9.4.2.2 配置负载均衡-准备工作

(1)将刚才的存放工程的tomcat复制三份,修改端口分别为8080 ,8081,8082 (config/sever.xml)。

(2)分别启动这三个tomcat服务。

(3)为了能够区分是访问哪个服务器的网站,可以在首页标题加上标记以便区分。

image-20220802163835073

9.4.2.3 配置负载均衡

修改 Nginx配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
upstream tomcat-ep {  # 名字随意
server 192.168.247.130:8080; # 配置tomcat的地址
server 192.168.247.130:8081;
server 192.168.247.130:8082;
}


server {
listen 80; # 监听的端口
server_name www.ep.com; # 域名或者ip

location / { # 访问路径配置
# root index; # 根目录
proxy_pass http://tomcat-ep; # 配置代理的地址
index index.html index.htm; # 默认首页
}

error_page 500 502 503 504 /50x.html; # 错误页面
location = /50x.html {
root html;
}

}
server {
listen 80; # 监听的端口
server_name regist.ep.com; # 域名或者ip

location / { # 访问路径配置
root regist; # 根目录
index regist.html; # 默认首页
}

error_page 500 502 503 504 /50x.html; # 错误页面
location = /50x.html {
root html;
}

}

地址栏输入http:// www.ep.com / 刷新观察每个网页的标题,看是否不同。

经过测试,三台服务器出现的概率各为33.3333333%,交替显示。

如果其中一台服务器性能比较好,想让其承担更多的压力,可以设置权重。

image-20220802164514740

比如想让8080出现次数是其它服务器的2倍,则修改配置如下:

weight默认会是1

1
2
3
4
5
upstream tomcat-ep {  # 名字随意
server 192.168.247.130:8080 weight=2; # 配置tomcat的地址
server 192.168.247.130:8081;
server 192.168.247.130:8082;
}

nginx启动不了解决方案:

x: [emerg] open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)

1
mkdir /var/run/nginx

image-20220802141129238

在/usr/local/nginx目录下建立logs文件夹,把/var/run/nginx/nginx.pid这里面的这个nginx.pid拷贝到这个logs文件夹下面

image-20220802142526994

然后把logs这个文件夹在conf下也拷贝一份(-r递归)

image-20220802143045972

然后:
[root@localhost ~]# chmod 755 logs
[root@localhost ~]# chmod 755 nginx.pid
[root@localhost ~]# /usr/local/nginx/sbin/ ./nginx
[root@localhost ~]# /usr/local/nginx/sbin/ ./nginx -s reload

7.vi 和 vim 编辑器

4.1 vi 和 vim 的基本介绍

所有的 Linux 系统都会内建 vi 文本编辑器。

Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

4.2 vi 和 vim 的三种常见模式

4.2.1 正常模式

在正常模式下,我们可以使用快捷键。

以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。

4.2.2 插入模式/编辑模式

在模式下,程序员可以输入内容。

按下 i, I, o, O, a, A, r, R 等任何一个字母之后才会进入编辑模式, 一般来说按 i 即可

4.2.3 命令行模式

在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!

Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

基本上 vi/vim 共分为三种模式,分别是命令模式编辑模式一般模式

image-20220719101949849

在Linux下一般使用vi编辑器来编辑文件。vi既可以查看文件也可以编辑文件。三种模式:命令行、插入、底行模式。

切换到命令行模式:按Esc键;

切换到插入模式:按 i 、o、a键;

i 在当前位置生前插入

I 在当前行首插入

a 在当前位置后插入

A 在当前行尾插入

o 在当前行之后插入一行

O 在当前行之前插入一行

切换到底行模式:按 :(冒号);

打开文件:vim file

退出:esc :q

修改文件:输入i进入插入模式

保存并退出:esc:wq

不保存退出:esc:q!

3种进入插入模式:

i:在当前的光标所在处插入

o:在当前光标所在的行的下一行插入

a:在光标所在的下一个字符插入

快捷键:

dd – 快速删除一行

R – 替换

一般模式可用的光标移动、复制粘贴、搜索替换等

移动光标的方法
h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
[Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d] 屏幕『向下』移动半页
[Ctrl] + [u] 屏幕『向上』移动半页
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行
n 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。
0 或功能键[Home] 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End] 移动到这一行的最后面字符处(常用)
H 光标移动到这个屏幕的最上方那一行的第一个字符
M 光标移动到这个屏幕的中央那一行的第一个字符
L 光标移动到这个屏幕的最下方那一行的第一个字符
G 移动到这个档案的最后一行(常用)
nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg 移动到这个档案的第一行,相当于 1G 啊! (常用)
n n 为数字。光标向下移动 n 行(常用)
删除复制
x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd 剪切游标所在的那一整行(常用),用 p/P 可以粘贴。
ndd n 为数字。剪切光标所在的向下 n 行,例如 20dd 则是剪切 20 行(常用),用 p/P 可以粘贴。
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
d$ 删除游标所在处,到该行的最后一个字符
d0 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy 复制游标所在的那一行(常用)
nyy n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
y1G 复制游标所在行到第一行的所有数据
yG 复制游标所在行到最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u 复原前一个动作。(常用)
[Ctrl]+r 重做上一个动作。(常用)
. 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)
搜索替换
/word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word 向光标之上寻找一个字符串名称为 word 的字符串。
n 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则: 『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g:%s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)
:1,$s/word1/word2/gc:%s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)

一般模式切换到指令行模式的可用的按钮说明

指令行的储存、离开等指令
:w 将编辑的数据写入硬盘档案中(常用)
:w! 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
:q 离开 vi (常用)
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ 这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出)
ZQ 不保存,强制退出。效果等同于 **:q!**。
:w [filename] 将编辑的数据储存成另一个档案(类似另存新档)
:r [filename] 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。
:! command 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
vim 环境的变更
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号!

附:基本命令

关机/重启

1
2
3
4
5
6
7
8
9
10
11
# sync 将数据由内存同步到硬盘中。
# shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
# shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。
# shutdown –h now 立马关机
# shutdown –h 20:25 系统会在今天20:25关机
# shutdown –h +10 十分钟后关机
# shutdown –r now 系统立马重启
# shutdown –r +10 系统十分钟后重启
# reboot 就是重启,等同于 shutdown –r now
# halt 关闭系统,等同于shutdown –h now 和 poweroff
# shutdown -c ###要取消即将进行的关机

运行级别相关

运行级别说明:

0 :关机、1 :单用户【找回丢失密码】、2:多用户状态没有网络服务、3:多用户状态有网络服务、4:系统未使用保留给用户、5:图形界面、6:系统重启(常用运行级别是 3 和 5)

  • 修改运行级别:init 级别

帮助指令

  • man:man [命令或配置文件]
  • help:help 命令

文件目录

  • 显示当前目录:pwd

  • 列出目录文件:ls [ 选 项] [目录或是文件]

    • 选项:
      • -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
      • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
      • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
  • 切换目录:cd 目录

  • 创建目录:mkdir [-p] 目录名称

    • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来
  • 删除目录: rmdir [-p] 目录名称(文件必须为空)

    • -p :从该目录起,一次删除多级空目录
  • 复制文件或目录:cp [选项] 即拷贝文件和目录。

    • 选项:
      • -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
      • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
      • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
      • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
      • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
      • -r:递归持续复制,用於目录的复制行为;(常用)
      • -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
  • 移除文件或目录:rm [选项] 文件或目录

    • 选项:
      • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
      • -i :互动模式,在删除前会询问使用者是否动作
      • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
  • 移动文件与目录,或修改名称:mv [-fiu] source destination(-fiu同rm)

  • 创建空文件:touch 文件名

  • 查看文件:cat [-AbEnTv] 文件名或者倒着显示tac 文件名 或者一页页显示more/less 文件名或者取出文件前/后面几行head/tail [-n 10] 文件名

    • 选项:
      • -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
      • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
      • -E :将结尾的断行字节 $ 显示出来;
      • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
      • -T :将 [tab] 按键以 ^I 显示出来;
      • -v :列出一些看不出来的特殊字符
    • more/less的指令
      • 空白键 :向下翻动一页;
      • [pagedown]:向下翻动一页;
      • [pageup] :向上翻动一页;
      • /字串 :向下搜寻『字串』的功能;
      • ?字串 :向上搜寻『字串』的功能;
      • n :重复前一个搜寻 (与 / 或 ? 有关!)
      • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
      • q :离开 less 这个程序;
  • 输出指令:> 和 >>

    • > 输出重定向 : 会将原来的文件的内容覆盖
  • >> 追加: 不会覆盖原来文件的内容,而是追加到文件的尾部

  • 输出内容到控制台:echo 指令

  • 创建软链接:ln -s [原文件或目录] [软链接名]

  • 查看历史指令:history

  • 统计该目录的文件数:ls -l[R(递归包括子文件)] 目录 | grep "^以什么开头" | wc -l

  • 以树形展示该目录的文件:tree

时间日期

  • 展示当前时间
    • date (显示当前时间)
    • date +%Y(显示当前年份)
    • date +%m(显示当前月份)
    • date +%d(显示当前是哪一天)
    • date "+%Y-%m-%d %H:%M:%S"(显示年月日时分秒)
  • 设置日期:date -s 字符串时间
  • 显示日历:cal

搜索查找

  • 查找文件:find [搜索目录范围] [选项]
    • 选项:
      • -name :按照指定文件名查找
      • -user:查找指定用户名所有的文件
      • -size:按照指定文件大小查找
  • 定位文件:locate 搜索文件(第一次运行前,必须使用 updatedb 指令创建 locate 数据库)
  • 查找文件内内容:cat 文件名 | grep [选项] 查询内容
    • 选项:
      • -n:显示行号
      • -i:忽略大小写

压缩解压

  • gzip/gunzip 指令:
    • 压缩:gzip 文件
    • 解压:gunzip 文件.gz
  • zip/unzip指令:
    • 压缩:zip [选项] XXX.zip
    • 解压:unzip [选项] XXX.zip
    • 选项:
      • -r:递归压缩,即压缩目录
      • -d<目录> :指定解压后文件的存放目录
  • tar指令:
    • tar [选项] XXX.tar.gz
    • 选项:
      • -c:产生.tar打包文件
      • -v:显示详细住息
      • -f:指定压缩后的文件名
      • -z:打包同时压缩
      • -x:解包.tar文件
    • 实例:
      • 压缩多个文件或者目录:tar -zcvf a.tar.gz a1.txt a2.txt 或者/home/
      • 解压:tar -zxvf a.tar.gz -C 指定目录

用户登录注销

  • 登录:su 用户名(从权限高的用户切换到权限低的用户,不需要输入密码,反之需要)
  • 切换到原来的用户:exit
  • 注销:logout(如果当前为root用户使用注销回返回普通用户,如果是普通用户则直接退出系统)

logout 注销指令在图形运行级别无效,在 运行级别 3 下有效

用户管理

Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。并且Linux 的用户需要至少要属于一个组。

  • 添加用户:useradd [选项] 用户名
    • 选项:
      • -c comment :指定一段注释性描述。
      • -d 目录 :指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。(默认会在home下创建与用户同名的目录)
      • -g 用户组 指定用户所属的用户组。
      • -G 用户组,用户组 指定用户所属的附加组。
      • -s Shell文件 指定用户的登录Shell。
      • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  • 删除用户:userdel [选项] 用户名
    • 选项:
      • -r :它的作用是把用户的主目录一起删除。
  • 查询用户信息:id 用户名
  • 修改用户信息:usermod 选项 用户名(选项与useradd一样)
  • 管理密码:passwd 选项 用户
    • 选项:
      • -l 锁定密码,即禁用账号。
      • -u 密码解锁。
      • -d 使账号无密码。
      • -f 强迫用户下次登录时修改密码。

用户组管理

类似于角色,系统可以对有共性的多个用户进行统一的管理。

  • 添加用户组:groupadd 选项 用户组
    • 选项:
      • -g GID 指定新用户组的组标识号(GID)。
      • -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
  • 删除用户组:groupdel 用户组
  • 修改用户组:groupmod 选项 用户组
    • 选项:
      • -g GID 为用户组指定新的组标识号。
      • -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
      • -n新用户组 将用户组的名字改为新名字
  • 切换用户组:newgrp 组名(前提是用户同时属于多个用户组,并且用户组确实是该用户的主组或附加组)

文件权限

在 linux 中每个文件有所有者、所在组、其它组的概念。

  • 相关概念
    • 所有者:一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
    • 所在组:所有者所在的用户组
    • 其他组:所有者不在的用户组
  • 修改文件所有者:chown [-R] 用户名 文件名(-R递归)
  • 修改文件所在组:chgrp [-R] 组名 文件名(-R 递归)
  • 文件权限的查看:ls -l如:dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
    • Linux 中第一个字符代表这个文件是目录、文件或链接文件等等
      • 当为 d 则是目录
      • 当为 - 则是文件;
      • 若是 l 则表示为链接文档(link file);
      • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
      • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
    • 接下来的字符中,以三个为一组(所有者、所在组、其他组),且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。如果没有权限,就会出现减号 -
  • 修改文件权限:chmod [-R] 777 文件或目录或者chmod u=rwx,g=rx,o=r

磁盘管理

Linux 磁盘管理常用三个命令为 dfdufdisk

  • 列出文件系统的整体磁盘使用量:df [-ahikHTm] [目录或文件名]
    • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
    • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
    • -i :不用硬盘容量,而以 inode 的数量来显示
    • -k :以 KBytes 的容量显示各文件系统;
    • -H :以 M=1000K 取代 M=1024K 的进位方式;
    • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
    • -m :以 MBytes 的容量显示各文件系统;
  • 检查磁盘空间使用量:du [-ahskm] 文件或目录名称
    • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
    • -h :以人们较易读的容量格式 (G/M) 显示;
    • -s :列出总量而已,而不列出每个各别的目录占用容量;
    • -S :不包括子目录下的总计,与 -s 有点差别。
    • -k :以 KBytes 列出容量显示;
    • -m :以 MBytes 列出容量显示;
  • 用于磁盘分区:fdisk [-l] 装置名称
    • -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

进程管理

  • 查看进程:ps -选项/pstree -p(pstree展示进程树)
    • 常用选项:
      • -A 列出所有的进程
      • -w 显示加宽可以显示较多的资讯
      • -ef:显示父亲pid
      • -au 显示较详细的资讯
      • -aux 显示所有包含其他使用者的进程
    • -aux输出格式:
      • USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
        • USER: 行程拥有者
        • PID: pid
        • %CPU: 占用的 CPU 使用率
        • %MEM: 占用的记忆体使用率
        • VSZ: 占用的虚拟记忆体大小
        • RSS: 占用的记忆体大小
        • TTY: 终端的次要装置号码 (minor device number of tty)
        • STAT: 该行程的状态:
          • D: 无法中断的休眠状态 (通常 IO 的进程)
          • R: 正在执行中
          • S: 静止状态
          • T: 暂停执行
          • Z: 不存在但暂时无法消除
          • W: 没有足够的记忆体分页可分配
          • <: 高优先序的行程
          • N: 低优先序的行程
          • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
        • START: 行程开始时间
        • TIME: 执行的时间
        • COMMAND:所执行的指令
  • 杀掉进程:kill [<信息名称或编号>][程序]/killall [选项] name(killall 与 kill 不同的是它会杀死指定名字的所有进程。)
    • 最常用的信号是:
      • 1 (HUP):重新加载进程。
      • 9 (KILL):杀死一个进程。
      • 15 (TERM):正常停止一个进程。
    • killall的选项
      • -e | –exact : 进程需要和名字完全相符
      • -I | –ignore-case :忽略大小写
      • -g | –process-group :结束进程组
      • -i | –interactive :结束之前询问
      • -l | –list :列出所有的信号名称
      • -q | –quite :进程没有结束时,不输出任何信息
      • -r | –regexp :将进程名模式解释为扩展的正则表达式。
      • -s | –signal :发送指定信号
      • -u | –user :结束指定用户的进程
      • -v | –verbose :显示详细执行过程
      • -w | –wait :等待所有的进程都结束
      • -V |–version :显示版本信息
      • –help :显示帮助信息
  • 动态监控进程:top [选项](可以进入之后输入u/k来显示某个用户的进程/杀死某个进程)
    • d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
    • q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
    • c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
    • S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
    • s : 安全模式,将交谈式指令取消, 避免潜在的危机
    • i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
    • n : 更新的次数,完成后将会退出 top
    • b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内

服务管理

  • 查看服务:chkconfig [--level 运行级别][服务名] --list

  • 启动服务:systemctl start 服务名

  • 停止服务:systemctl stop 服务名

  • 重启服务:systemctl restart 服务名

  • 重新加载:systemctl reload 服务名

  • 查看服务状态:systemctl status 服务名

管理网络状态

  • 查看网络状态:netstat [选项]
    • -an 按一定顺序排列输出
    • -p 显示哪个进程在调用

YUM

  • 列出所有可更新的软件清单命令:yum check-update
  • 更新所有软件命令:yum update
  • 仅安装指定的软件命令:yum install <package_name>
  • 仅更新指定的软件命令:yum update <package_name>
  • 列出所有可安裝的软件清单命令:yum list
  • 删除软件包命令:yum remove <package_name>
  • 查找软件包命令:yum search <keyword>

Linux
http://example.com/2022/08/09/Linux/
作者
Deng ErPu
发布于
2022年8月9日
许可协议