Linux
# 1.安装
# 1.1.center os7安装
回车,等待安装
# 1.2.vmtools 安装
1)可以直接粘贴命令在 windows 和 centos 系统之间
2)可以设置 windows 和 centos 的共享文件夹
打开vmware软件,点击虚拟机,有个安装VMware Tools
安装成功之后,本机的文件可以直接拖拽到虚拟机的系统里面
# 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
在命令行 (opens new window)中输入 yum upgrade -y (只会升级所有包)
升级完成后,在输入yum (opens new window) groupinstall "GNOME Desktop" "Graphical Administration Tools"即可。
ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
重启机器。启动默认进入图形界面。
reboot
为了方便,可以将CentOS 7 设置为图形界面登陆。操作为: 单击右键,选择 open terminal 打开终端,输入systemctl set-default graphical.target
,然后重启系统。
# 1.4.网络无法连接
安装好CentOS 7系统后,会进入命令行 (opens new window)界面,输入用户名和密码后可以登陆系统。(注意:密码输入时是不可见的)。
首先检测一下网络的连通性(例如 ping www.baidu.com
)
没有ping通,说明网络异常
进入cd /etc/sysconfig/network-scripts/
,再输入dir
查看文件列表信息,也可以使用ls
命令查看,如图:
第一个文件名为 ifcfg-ens33就是相关文件了,不同的系统名称可能不同,一般都是第一个。然后,进入这个文件并编辑内容,输入vi+文件名
,这里我输入的是vi ifcfg-ens33
该文件内容如上图,最后一行的ONBOOT表示开机是否启动网络,需要把no改为yes。 具体方法为:
1.输入i
进入编辑状态,把no改为yes。
2.先按ESC键,然后输入:wq
保存并退出。
可以用cat命令查看文件是否更改正确,输入cat ifcfg-ens33
最后重启一下网络,systemctl restart network.service
ping www.baidu.com
,这时候网络就能正常连接了。
# 2.Linux 的目录结构
linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。
以下是对这些目录的解释:
/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地址:
ip addr
从结果中找到ip地址,然后复制,用于xshell的连接。
注意:斜杠后面的数字不是IP地址,只需要斜杠之前的数字就行了。
# 3.2.2 打开xshell,点击 文件-->新建
然后选择用户身份验证,输入用户名和密码,这里可以选择root用户。
然后选择确定。
左侧边栏就会出现一个连接,双击它
1、查看是否安装openssh-server,执行命令:
yum list installed | grep openssh-server
如果有openssh-server,则是已安装,如果没有则需要安装,执行安装命令:
yum install openssh-server
2、打开sshd配置文件sshd_config ,执行命令:
vi /etc/ssh/sshd_config
去掉监听端口、地址前的注释:(按i进入编辑状态,)
3、开启远程登录:
4、开启用户密码作为连接验证,最后按esc,输入:wq保存退出
5、开启 sshd 服务,执行命令:
sudo service sshd start
或者下面的这个
sudo systemctl start sshd.service
2
3
停止SSH服务命令(service sshd stop)
重启SSH服务命令(service sshd restart)
6、查看22端口是否被监听,执行命令:netstat -nltp|grep 22
查看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中以 . 开头的文件都是隐藏的文件
ls 浏览当前文件夹下的文件(不包含隐藏文件)
ls -a 显示所有文件或目录(包含隐藏的文件)
ls -l 缩写成ll(会显示文件夹的具体信息)
2
3
蓝色代表文件夹,绿色代表可执行文件,压缩文件
# 切换目录命令cd:
按Tab键可以补全
cd app 切换到app目录
cd .. 切换到上一层目录
cd / 切换到系统根目录
cd ~ 切换到用户主目录
cd - 切换到上一个所在目录
2
3
4
5
# 创建目录和移除目录:mkdir rmdir
mkdir(make directory)命令可用来创建子目录。
mkdir app 在当前目录下创建aaa目录
mkdir –p bbb/ccc 级联创建bbb以及ccc目
mkdir --help 查看有关mkdir的使用
rmdir(remove directory)命令可用来删除“空”的子目录:
rmdir aaa 删除aaa目录
2
3
4
5
6
7
8
# 浏览文件:cat more less tail
cat
用于显示文件的内容。
格式:cat[参数]<文件名>
* cat yum.conf
more
一般用于要显示的内容会超过一个画面长度的情况。按空格键显示下一个画面。
回车显示下一行内容。
按 q 键或者ctrl+c退出查看。
* more yum.conf
* 空格显示下一页数据 回车显示下一行的数据
less
用法和more类似,不同的是less可以通过PgUp、PgDn键来控制。
* less yum.conf
* PgUp 和 PgDn 进行上下翻页.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
tail命令是在实际使用过程中使用非常多的一个命令,它的功能是:用于显示文件后几行的内容。
用法:
tail -10 /etc/passwd 查看后10行数据
tail -f catalina.log 动态查看日志(*****)
ctrl+c 结束查看
2
3
4
5
6
# 文件操作:
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 /* 自杀
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
2
3
4
5
6
7
8
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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的文件
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 显示查找到的内容的前五行和后五行
2
3
4
5
6
7
【pwd】
显示当前所在目录
【touch】
创建一个空文件
* touch a.txt
【ll -h】
友好显示文件大小
【wget】
下载资料
* wget http://nginx.org/download/nginx-1.9.12.tar.gz
2
3
4
5
6
7
8
9
10
# 重定向输出>和>>
> 重定向输出,覆盖原有内容;
>> 重定向输出,又追加功能;
示例:
cat /etc/passwd > a.txt 将输出定向到a.txt中
cat /etc/passwd >> a.txt 输出并且追加
ifconfig > ifconfig.txt
2
3
4
5
6
7
# 系统管理命令:
ps 正在运行的某个进程的状态
ps -ef 查看所有进程
ps -ef | grep ssh 查找某一进程
kill 2868 杀掉2868编号的进程
kill -9 2868 强制杀死进程
2
3
4
5
# 管道:
管道是Linux命令中重要的一个概念,其作用是将一个命令的输出用作另一个命令的输入。
示例
ls --help | more 分页查询帮助信息
ps –ef | grep java 查询名称中包含java的进程
ifconfig | more
cat index.html | more
ps –ef | grep aio
2
3
4
5
6
7
8
# &&命令执行控制:
命令之间使用 && 连接,实现逻辑与的功能。
只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。
mkdir test && cd test
2
3
4
# 网络通讯命令:
ifconfig 显示或设置网络设备。
ifconfig 显示网络设备
ifconfig eth0 up 启用eth0网卡
ifconfig eth0 down 停用eth0网卡
ping 探测网络是否通畅。
ping 192.168.0.1
netstat 查看网络端口。
netstat -an | grep 3306 查询3306端口占用情况
2
3
4
5
6
7
8
# 系统管理命令:
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 显示本机详细信息。
依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称
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
# 5.Linux的权限命令
Linux三种文件类型:
普通文件: 包括文本文件、数据文件、可执行的二进制程序文件等。
目录文件: Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。
设备文件: Linux系统把每一个设备都看成是一个文件
文件类型标识:
普通文件(-)
目录(d)
符号链接(l)
* 进入etc可以查看,相当于快捷方式
字符设备文件(c)
块设备文件(s)
套接字(s)
命名管道(p)
文件权限管理:
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 :变更目录中的所有的子目录及文件的所属用户和组
2
3
4
5
6
7
# 6.Linux的用户和组
用户的管理:
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目录
2
3
4
5
6
7
8
9
10
11
12
13
14
15
组管理:
当在创建一个新用户user时,若没有指定他所属于的组,就建立一个和该用户同名的私有组
创建用户时也可以指定所在组
groupadd 创建组
groupadd public 创建一个名为public的组
useradd u1 –g public 创建用户指定组
groupdel 删除组,如果该组有用户成员,必须先删除用户才能删除组。
groupdel public
2
3
4
5
6
7
id,su命令:
【id命令】
功能:查看一个用户的UID和GID
用法:id [选项]... [用户名]
2
【su命令】
功能:切换用户。
用法:su [选项]... [-] [用户 [参数]... ]
示例:
su u1 切换到u1用户
su - u1 切换到u1用户,并且将环境也切换到u1用户的环境(推荐使用)
2
3
4
5
【账户文件】
/etc/passwd 用户文件
/etc/shadow 密码文件
/etc/group 组信息文件
2
3
【用户文件】
root:x:0:0:root:/root:/bin/bash
账号名称: 在系统中是唯一的
用户密码: 此字段存放加密口令
用户标识码(User ID): 系统内部用它来标示用户
组标识码(Group ID): 系统内部用它来标识用户属性
用户相关信息: 例如用户全名等
用户目录: 用户登录系统后所进入的目录
用户环境: 用户工作的环境
2
3
4
5
6
7
8
【密码文件】
shadow文件中每条记录用冒号间隔的9个字段组成.
用户名:用户登录到系统时使用的名字,而且是惟一的
口令: 存放加密的口令
最后一次修改时间: 标识从某一时刻起到用户最后一次修改时间
最大时间间隔: 口令保持有效的最大天数,即多少天后必须修改口令
最小时间间隔: 再次修改口令之间的最小天数
警告时间:从系统开始警告到口令正式失效的天数
不活动时间: 口令过期少天后,该账号被禁用
失效时间:指示口令失效的绝对天数(从1970年1月1日开始计算)
标志:未使用
2
3
4
5
6
7
8
9
10
【组文件】
root:x:0:
组名:用户所属组
组口令:一般不用
GID:组ID
用户列表:属于该组的所有用户
2
3
4
5
# 7.Linux常用网络操作
# 主机名配置:
hostname 查看主机名
hostname xxx 修改主机名 重启后无效
如果想要永久生效,可以修改/etc/sysconfig/network文件
2
3
# ip 地址配置
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时,系统启动时激活此设备。
2
3
4
5
6
7
8
9
10
11
12
# 域名映射:
/etc/hosts文件用于在通过主机名进行访问时做ip地址解析之用,相当于windows系统的C:\Windows\System32\drivers\etc\hosts文件的功能
# 网络服务管理:
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 禁止防火墙自启
2
3
4
5
6
7
8
9
10
11
12
13
14
# 防火墙
查看Linux防火墙是否打开,如打开,则关闭防火墙 查看是否打开:(not running是未打开,running是打开)
firewall-cmd --state
如果是running,则证明是打开的,则关闭防火墙:(开启命令为:service firewalld start)
service firewalld stop
再查看状态,如果是 not running 证明关闭成功
firewall-cmd --state
如果想关闭防火墙的开机自启:(前提要先关闭防火墙)
systemctl disable firewalld
如果想开启防火墙的开机自启:
systemctl enable firewalld
开放某个端口(这里开放了3306端口):
firewall-cmd --zone=public --add-port=3306/tcp –permanent
# 开放端口
查看端口 你可以先查看一下,你的机器开放了哪些端口 会发现啥端口都没有
firewall-cmd --list-ports
打开需要的端口 那现在我们添加我所需要的80端口
firewall-cmd --zone=public --add-port=80/tcp
重启防火墙 注意一定要重启防火墙,不然的话你添加的端口就不生效的,你即使再去查看你的端口,还是不显示的,就像这个样子
重启一下防火墙,再去查看添加的端口就生效了(不重启也可以)
firewall-cmd --reload
# 8.Linux上安装软件
Linux上的软件安装有以下几种常见方式介绍
二进制发布包
软件已经针对具体平台编译打包发布,只要解压,修改配置即可
RPM包
软件已经按照redhat的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用RPM命令进行安装
Yum在线安装
软件已经以RPM规范打包,但发布在了网络上的一些服务器上,可用yum在线安装服务器上的rpm软件,并且会自动解决软件安装过程中的库依赖问题
源码编译安装
软件以源码工程的形式发布,需要获取到源码工程后用相应开发工具进行编译打包部署。
# 8.1安装jdk
linux会自带jdk,所以可以忽略
1.查看linx版本
getconf LONG_BIT
2.下载jdk:https://www.oracle.com/java/technologies/downloads/#java8
【步骤一】:上传JDK到Linux的服务器.
* 上传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
2
3
4
5
6
7
8
【步骤二】:在Linux服务器上安装JDK
* 通常将软件安装到/usr/local
* 直接解压就可以
tar –xvf jdk.tar.gz -C 目标路径
2
3
【步骤三】:配置JDK的环境变量.
配置环境变量:
① 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 使更改的配置立即生效
2
3
4
5
6
7
8
9
10
# 8.2安装mysql
【步骤一】:将mysql的安装文件上传到Linux的服务器.
将mysql的tar解压
https://blog.csdn.net/wangqingjia/article/details/125390817
远程连接不上mysql需要对外开发
配置对外开放端口
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环境。
输入命令:
yum install gcc-c++
输入y确认下载,输入y确认安装
【步骤二】安装redis
- 下载redis
wget http://download.redis.io/releases/redis-7.0.4.tar.gz
- 解压
tar -xzvf redis-7.0.4.tar.gz
- 编译安装、切换至程序目录,并执行make命令编译
cd redis-7.0.4
make
2
执行安装命令
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:检查导出工具
【步骤三】配置redis
- 复制配置文件到/usr/local/redis/bin目录:
cd redis-7.0.4
cp redis.conf /usr/local/redis/bin
2
【步骤四】启动redis
- 进入redis/bin目录
cd redis/bin
启动redis服务端
./redis-server redis.conf
- 克隆新窗口,启动redis客户端
./redis-cli
# 8.5部署项目到Linux
- 修改pom配置
在pom.xml中添加
注意数据库要加characterEncoding=utf-8
使用package命令打包
3. 将travel.war上传到tomcat中的webapps目录
4.重启tomcat
5.到出本地mysql数据,并导入linux中的mysql
# 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)
yum install gcc-c++
(2)第三方的开发包。
PCRE
PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。
yum install -y pcre pcre-devel
注:pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。
zlib
zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。
yum install -y zlib zlib-devel
OpenSSL
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。
yum install -y openssl openssl-devel
# 9.2.2 Nginx下载与安装
官方网站下载 nginx:http://nginx.org/
第一步:把 nginx 的源码包nginx-1.23.1.tar.gz上传到 linux 系统
第二步:解压缩
tar zxvf nginx-1.23.1.tar.gz
第三步:进入nginx-1.23.1目录 使用 configure 命令创建一 makeFile 文件。
./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
2
3
4
5
6
7
8
9
10
11
12
执行后可以看到Makefile文件
知识点小贴士
Makefile是一种配置文件,Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
---- 知识点小贴士 ----
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库
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
第四步:编译
make
第五步:安装
make install
# 9.2.3 Nginx启动与访问
注意:启动nginx 之前,上边将临时文件目录指定为/var/temp/nginx/client, 需要在/var 下创建此 目录
mkdir /var/temp/nginx/client -p
进入到Nginx目录下的sbin目录
cd /usr/local/nginx/sbin
输入命令启动Nginx
./nginx
启动后查看进程
ps aux|grep nginx
地址栏输入虚拟机的IP即可访问(默认为80端口)
关闭 nginx:
./nginx -s stop
或者
./nginx -s quit
重启 nginx:
1、先关闭后启动。
2、刷新配置文件:
./nginx -s reload
# 9.3Nginx静态网站部署
# 9.3.1 静态网站的部署
配置EditPlus(可以连接linux,对配置文件进行修改,简化vim操作)
修改静待资源文件夹位置(直接拖拽index文件到ngix目录下)
# 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
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;
}
}
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
(3)重启访问测试:
地址栏输入http://localhost:80 可以看到首页面
地址栏输入http://localhost:81 可以看到注册页面
# 9.3.2.2 域名绑定
什么是域名:
域名 (opens new window)([Domain Name](https://baike.baidu.com/item/Domain Name)),是由一串用“点”分隔的字符 (opens new window)组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。域名是一个IP地址 (opens new window)上有“面具” 。域名的目的是便于记忆和沟通的一组服务器的地址(网站 (opens new window),电子邮件,FTP (opens new window)等)。域名作为力所能及难忘的互联网参与者的名称。域名按域名系统 (opens new window)(DNS)的规则流程组成。在DNS (opens new window)中注册的任何名称都是域名。域名用于各种网络环境和应用程序特定的命名和寻址目的。通常,域名表示互联网协议 (opens new window)(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
做好域名指向后,修改nginx配置文件
重启nginx服务器:(/usr/local/nginx/sbin)
./nginx -s reload
地址栏输入http://www.ep.com/
地址栏输入http://www.regist.ep.com/
# 9.4.Nginx反向代理与负载均衡
# 9.4.1 反向代理
# 9.4.1.1 什么是反向代理
反向代理(Reverse Proxy)方式是指以代理服务器 (opens new window)来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
首先我们先理解正向代理,如下图:(代理客户端)
正向代理是针对你的客户端,而反向代理是针对服务器的,如下图
# 9.4.1.2 配置反向代理-准备工作
(1) 将travel案例部署到tomcat中(ROOT目录),上传到服务器。(直接打包为ROOT.war)
注意:root要大写
(2)启动TOMCAT,输入网址http://192.168.247.130:8080 可以看到网站首页
# 9.4.1.3 配置反向代理
(1)在Nginx主机修改 Nginx配置文件
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;
}
}
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
(2)重新启动Nginx 然后用浏览器测试:http://www.ep.com (此域名须配置域名指向)
# 9.4.2 负载均衡
# 9.4.2.1 什么是负载均衡
负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备 (opens new window)和服务器 (opens new window)的带宽、增加吞吐量 (opens new window)、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器 (opens new window)、FTP服务器 (opens new window)、企业 (opens new window)关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
# 9.4.2.2 配置负载均衡-准备工作
(1)将刚才的存放工程的tomcat复制三份,修改端口分别为8080 ,8081,8082 (config/sever.xml)。
(2)分别启动这三个tomcat服务。
(3)为了能够区分是访问哪个服务器的网站,可以在首页标题加上标记以便区分。
# 9.4.2.3 配置负载均衡
修改 Nginx配置文件
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;
}
}
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
地址栏输入http:// www.ep.com / 刷新观察每个网页的标题,看是否不同。
经过测试,三台服务器出现的概率各为33.3333333%,交替显示。
如果其中一台服务器性能比较好,想让其承担更多的压力,可以设置权重。
比如想让8080出现次数是其它服务器的2倍,则修改配置如下:
weight默认会是1
upstream tomcat-ep { # 名字随意
server 192.168.247.130:8080 weight=2; # 配置tomcat的地址
server 192.168.247.130:8081;
server 192.168.247.130:8082;
}
2
3
4
5
# nginx启动不了解决方案:
x: [emerg] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)
mkdir /var/run/nginx
在/usr/local/nginx目录下建立logs文件夹,把/var/run/nginx/nginx.pid这里面的这个nginx.pid拷贝到这个logs文件夹下面
然后把logs这个文件夹在conf下也拷贝一份(-r递归)
然后: [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 共分为三种模式,分别是命令模式,编辑模式和一般模式。
在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 |
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 相反,为取消行号! |
# 附:基本命令
# 关机/重启
# 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 ###要取消即将进行的关机
2
3
4
5
6
7
8
9
10
11
# 运行级别相关
运行级别说明:
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)。如果没有权限,就会出现减号 -
- Linux 中第一个字符代表这个文件是目录、文件或链接文件等等
- 修改文件权限:
chmod [-R] 777 文件或目录
或者chmod u=rwx,g=rx,o=r
# 磁盘管理
Linux 磁盘管理常用三个命令为 df
、du
和 fdisk
。
- 列出文件系统的整体磁盘使用量:
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>