Liunx笔记2(网络配置,进程管理,rpm和yum,javaee搭建,shell,日志管理)

1.网络配置

 一般我们使用的是nat,网络地址转换的连接模式

电脑中虚拟机会分配一个ip,然后须有一个类似于虚拟网卡的vmnet8(相当于网关)。这两个处在同一个网段中可以网络互通,同时这个vmnet8可以和电脑主机通信,然后电脑和局域网网关联通,连接到互联网。

查看网络IP和网关

 编辑》虚拟网络编辑器

 查看windows的vmnet8

 查看linux的网络配置ifconfig

 linux网络环境配置

 第一种该方式,自动获取

登录后通过界面自动获取ip,这样每次获取的ip可能都不一样

第二种方式,指定ip地址

直接修改配置文件指定ip地址

 vi /etc/sysconfig/network-scripts/ifcfg-ens33

首选需要修改这里的ip,网关,网络连接方式等信息

然后再虚拟网络编辑里面修改网关信息,然后ip就改变了。

设置主机名和hosts映射

 可以使用hostname查看linux的主机名

修改主机名的文件在/etc/hostname

修改后需要重启生效

(1)设置Windows的hosts映射

设置hosts映射,在windows的C:\Windows\System32\drivers\etc\hosts中指定一个ip对应的名称映射。这里就相当于设定一个变量,变量的值是ip地址。ping的之后直接ping变量就行。

192.168.200.130 liu

(2)设置linux的映射

修改文件/etc/hosts     192.168.200.1ThinkPad-PC

主机名解析过程分析

 hosts是一个文本文件,用来记录ip和hostname(主机名称)的映射关系

dns:域名解析系统,是和互联网上作为域名和ip地址互相映射的一种分布式数据库。

用户在浏览器中输入了网址:浏览器会首先检查浏览器本身的缓存有没有该ip地址的解析,然后检查本地的dns解析器缓存,然后再检查本地的hosts映射文件,最后检查全球的域名服务dns。一级一级的查找,有就直接用,没有就返回不存在。

一般来说,第一次访问某一网站成功之后,浏览器和操作系统会缓存网址的ip地址映射。

可以在cmd中使用ipconfig/displaydns  查看。使用ipconfig/flushdns清理。

2.进程管理(重点)

基本介绍

 1)在LINUX中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)。=>windows=>linux

2)每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。

3)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

显示系统执行的进程 

 ps 【选项】

-a:显示当前进程所有信息

-u:以用户的形式显示进程

-x:显示后台运行进程的参数

 VSZ:进程占用的虚拟内存大小(单位:KB)

RSS:进程占用的物理内存大小(单位:KB)

以全格式显示当前所有进程,查看进程的父进程

ps-ef是以全格式显示当前所有的进程

-e显示所有进程。-f全格式

 是BSD风格

UID:用户ID

PID:进程ID

PPID:父进程ID

C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高

STIME:进程启动的时间

TTY:完整的终端名称

TIME:CPU时间

CMD:启动进程所用的命令和参数

 终止进程kill和killall

 kill 【选项】 进程号

killall 进程名称

-9:表示强迫进程立即停止

(1)比如踢掉某个非法登录用户。首先,远程登录的进程是sshd。先查询这个进程所对应的进程号,就可以看出有一个用户登录,分为两个进程,上面那个是下面的父进程。直接踢掉就可以。或者使用killall

 (2)直接终止sshd这个远程登录服务

kill 1198

恢复指令/bin/systemctl  start  sshd.service

(3)kill -9 bash对应的进程号:强制杀掉终端。因为如果不加-9,系统会觉得终端重要,然后不执行。

(4)查看进程树:pstree

pstree 【选项】

p:显示进程的PID

-u:显示进程的所属用户

 服务(service)管理

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld,sshd防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。

(1)service管理指令

1)service服务名[start|stop|restart|reload|status]

2)在CentOS7.0后很多服务不再使用service,而是systemctl(后面专门讲)

3)service指令管理的服务在/etc/init.d查看

 请使用service指令,查看,关闭,启动network[注意:在虚拟系统演示,因为网络连接会关闭]指令:

service network status

service network stop

service network start

(2)查看服务名

方式1:使用setup->系统服务就可以看到全部。setup

方式2:/etc/init.d看到service指令管理的服务

ls -l  /etc/init.d

(3)服务的运行级别(runlevel):

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

运行级别2:多用户状态(没有NFS),不支持网络

运行级别3:完全的多用户状态(有NFS),无界面,登陆后进入控制台命令行模式

运行级别4:系统未使用,保留

运行级别5:X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

开机的流程

 (4)centos7后的运行级别

在/etc/initab进行了简化,如下:

multi-user.target:analogoustorunlevel3

graphical.target:analogoustorunlevel5

init0

#Toviewcurrentdefaulttarget,run:

systemctlget-default

#Tosetadefaulttarget,run:

systemctlset-defaultTARGET.target

 查看模式,切换,重启生效

(5)chkconfig指令

通过chkconfig命令可以给服务的各个运行级别设置自启动/关闭chkconfig指令管理的服务在/etc/init.d查看

 列出服务列表,改变服务开关,单独查询一个服务信息。改变之后需要重启才能生效。

(6)systemctl管理指令

基本语法:systemctl[start|stop|restart|status] 服务名

systemctl指令管理的服务在/usr/lib/systemd/system查看

systemctl list-unit-files [|grep服务名](查看服务开机启动状态,grep可以进行过滤)

systemctl  enable  服务名(设置服务开机启动)

systemctl  disable  服务名(关闭服务开机启动)

systemctl is-enabled服务名(查询某个服务是否是自启动的)

查看防火墙状况,开关防火墙

 查看防火墙自启动状态:开启;开启防火墙;关闭防火墙;关闭防火墙自启;开启防火墙自启;查询防火墙状态:开启;

打开或关闭某个指定端口

 首先防火墙的作用就是类似于一个拦截器,会打开一部分系统端口,关闭一部分系统端口。开启的端口会被转发到系统,关闭的则不行。可以使用telnet来访问端口测试。

在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯。这时,需要打开指定的端口。比如80、22、8080等、

telnet 192.168.200.130 111访问111端口。一般会被挡住,这时候就需要开启端口。

1)打开端口:firewall-cmd--permanent --add-port=端口号/协议

2)关闭端口:firewall-cmd--permanent --remove-port=端口号/协议

3)重新载入,才能生效:firewall-cmd --reload

4)查询端口是否开放:firewall-cmd --query-port=端口/协议

动态监控进程

 top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。

 第一行:当前时间;系统已经运行时间;登录用户数;负载值

第二行:总进程数;在运行;休眠;停止;僵死进程。

剩下的就是cpu占用信息,内存占用信息等。

top 【选项】

 进入top之后可以通过交互操作来对信息排序

 案例1.监视特定用户,比如我们监控tom用户top:

输入此命令,按回车键,查看执行的进程。u:然后输入“u”回车,再输入用户名,即可,

案例2:终止指定的进程,比如我们要结束tom登录top:

输入此命令,按回车键,查看执行的进程。k:然后输入“k”回车,再输入要结束的进程ID号

案例3:指定系统状态更新的时间(每隔10秒自动更新),默认是3秒top-d10

查看系统网络情况netstat

netstat 【选项】 

-an按一定顺序输出

-p显示哪个进程在调动

该指令可以看到linux那个端口和外界通信,双方的端口号是什么

 就比如这里,虚拟机和xshell有两个远程登录的连接。xshell是在本机上使用的。远程登录用的是ssdh(22)端口。所以本机显示192.168.200.130:22 windows主机是另一个端口。

 3.Linux实操篇-RPM与YUM

rpm包的管理

pm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHatPackageManager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。

 (1)rpm包简单的查询指令

          rpm -qa | grep xxx

(2)rpm包的其他指令

rpm -qa 查询所有的rpm安装包,可以同时使用管道过滤或者more等指令

rpm -q 软件包名:查询软件包是否安装

rpm -qi 软件包名:查询寻软件包的信息

rpm -ql 软件包名:查询软件包中的文件

rpm-qf 文件全路径名:查询文件所属的软件包

 

 rpm -e 包的名称:删除某个软件

 删除之后就会警告,然后就删掉了。

可以使用rpm -vih 安装包全路径名称

比如这里rpm安装包可以在linux中找到。centos7》package,然后搜索。将安装包复制到opt(约定在这)

 i=install安装    v=verbose提示     h=hash进度条

yum

 Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

yum  install  xxx下载安装

4.搭建JavaEE环境

安装javaee环境需要,idea,jdk,tomcat,mysql。

安装步骤jdk

1)mkdir/opt/jdk                                                              //创建存放jdk压缩包的目录

2)通过xftp6上传到/opt/jdk下                                        //将jdk压缩包传到这里,也可以用其他方式

3)cd/opt/jdk                                                                 

4)解压tar-zxvfjdk-8u261-linux-x64.tar.gz              //解压,然后这时候就相当于windows的安装完成

5)mkdir/usr/local/java                                          //约定来说,最好放在特定的位置

6)mv/opt/jdk/jdk1.8.0_261/usr/local/java             //所以移动一下

7)配置环境变量的配置文件vim/etc/profile          //配置环境变量,和windows一样,让命令在其他                                                                                地方也可以使用

8)export JAVA_HOME=/usr/local/java/jdk1.8.0_261    //配置过程和windows类似

9)export PATH=$JAVA_HOME/bin:$PATH

10)source/etc/profile[让新的环境变量生效]                 //刷新一样

linux和windows不太一样的地方在于,jdk的解压之后不需要安装。直接就可以使用。

tomcat安装

步骤和jdk类似。 

1)上传安装文件,并解压缩到/opt/tomcat

2)进入解压目录/bin,启动tomcat./startup.sh

3)开放端口8080,回顾firewall-cmd16.3.2

测试是否安装成功:在windows、Linux下访问http://linuxip:8080

idea的安装

1)下载地址:https://www.jetbrains.com/idea/download/#section=windows

2)解压缩到/opt/idea

3)启动ideabin目录下./idea.sh,配置jdk

4)编写Helloworld程序并测试成功!

mysql的安装是最麻烦的, 他的压缩包无法直接解压。需要解压rpm形式。然后linux有一个数据库和mysql冲突,所以需要先卸载之后才能安装mysql。需要安装四个mysql的rpm。然后就会自动给root用户分配一个密码。可以更改。具体过程略。

5.Shell编程

Shell是什么

 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

shell脚本的执行方式

1. 脚本格式要求

1)脚本以#!/bin/bash开头

2)脚本需要有可执行权限

编写一个shell脚本,输出hello word

vim hello.sh

#!/bin/bash

echo "hello,world~"

2.脚本执行方式

方式1(输入脚本的绝对路径或相对路径)

说明:首先要赋予helloworld.sh脚本的+x权限,

再执行脚本比如./hello.sh或者使用绝对路径/root/shcode/hello.sh

方式2(sh+脚本)

说明:不用赋予脚本+x权限,直接执行即可。

比如shhello.sh,也可以使用绝对路径

3.shell变量的定义

1)Linux Shell中的变量分为,系统变量和用户自定义变量。

2)系统变量:$HOME、$PWD、$SHELL、$USER等等,比如:echo$HOME等等..

3)显示当前shell中所有变量:set

基本语法

1)定义变量:变量名=值

2)撤销变量:unset变量

3)声明静态变量:readonly变量,注意:不能unset

注意指令的返回结果复制给变量C=`date` 这里的反引号是tab上面的那个。不是单引号。

4.定义变量的规则

 1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头。5A=200(×)

2)等号两侧不能有空格

3)变量名称一般习惯为大写,这是一个规范,我们遵守即可

5.定义环境变量

将一个变量提升为全局都可以使用的变量,也就是配置的环境变量。(配置方法参照之前)

1)export变量名=变量值(功能描述:将shell变量输出为环境变量/全局变量)

2)source配置文件(功能描述:让修改后的配置信息立即生效)

3)echo$变量名(功能描述:查询环境变量的值)

6.定义位置变量

当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量比如:./myshell.sh100200,这个就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息

$n(功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})

$*(功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)

$@(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)

$#(功能描述:这个变量代表命令行中所有参数的个数)

7.预定义变量

1)$$(功能描述:当前进程的进程号(PID))

2)$!(功能描述:后台运行的最后一个进程的进程号(PID))

3)$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

 8.运算符

1)“$((运算式))”或“$[运算式]”或者exprm+n//expression表达式

2)注意expr运算符间要有空格,如果希望将expr的结果赋给某个变量,使用``

3)exprm-n4)expr\*,/,%乘,除,取余

 

 9.条件判断

if [ 条件 ]

then

语句

fi

1)=字符串比较

2)两个整数的比较

-lt小于

-le小于等于little equal

-eq等于

-gt大于

-ge大于等于

-ne不等于

3)按照文件权限进行判断

-r有读的权限-w有写的权限-x有执行的权限

4)按照文件类型进行判断

-f文件存在并且是一个常规的文件

-e文件存在

-d文件存在并是一个目录

注意条件判断的空格,[  ]中条件的前后都需要空格。

 10.流程控制

if [ 条件 ]

then

语句

elif [ 条件 ]

then

代码

fi

注意事项:[条件判断式],中括号和条件判断式之间必须有空格

 11.case语句

 

 12.for循环

for 变量 in 值1,2,3

do

代码

done

 

 $*:获取输入脚本的所有参数当做一个整体

$@:获取输入脚本的所有参数当做不同的,分别输出

13.while

 14.read读取控制台输入

read(选项)(参数)

选项:

-p:指定读取值时的提示符;

-t:指定读取值时等待的时间(秒),

如果没有在指定的时间内输入,就不再等待了。。参数变量:指定读取值的变量名

15. shell编程系统函数(例子)

basename基本语法

功能:返回完整路径最后/的部分,常用于获取文件名

basename [pathname] [suffix]

basename [string] [suffix]

(功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。选项:suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。

案例1:请返回/home/aaa/test.txt的"test.txt"部分

basename  /home/aaa/test.txt  .txt

>test

dirname基本语法

功能:返回完整路径最后/的前面的部分,常用于返回路径部分dirname文件绝对路径

(功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

案例1:请返回/home/aaa/test.txt的/home/aaa

dirname  /home/aaa/test.txt

16.自定义函数

[function] funname [()]{

Action;

[returnint;]

}

 17.shell编程综合案例

1)每天凌晨2:30备份数据库hspedu到/data/backup/db

2)备份开始和备份结束能够给出相应的提示信息

3)备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如:2021-03-12_230201.tar.gz

4)在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除。

5)画一个思路分析图

 

 6.日志管理

基本介绍

1)日志文件爱你是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关的信息、各种服务相关信息等。

2)日志对于安全来说也很重要,它记录了系统每天发生的各种事情,通过日志来检查错误发生的原因,或者受到攻击者留下的痕迹。

1.系统常用的日志 

/var/log 目录就是系统日志文件存放的位置

 系统常用日志

 使用root用户通过远程登录,输入一次错误的密码。然后查看secure日志。

 2.日志管理服务rsyslogd

CentOS7.6 日志服务是rsyslogs,rsyslogs功能更强大。

/etc/rsyslog.config这个配置文件管理了所有日志配置。

 查询Linux中的rsyslogd服务是否启动

ps aux|grep"rsyslog" | grep-v"grep"

查询rsyslogd服务的自启动状态

systemctl list-unit-files|grep rsyslog

配置文件:/etc/rsyslog.conf

编辑文件时的格式为:*.*存放日志文件其中第一个*代表日志类型,第二个*代表日志级别

 这里就配置了所有的日志文件输出。

比如mail.*就是记录邮件日志的信息。后面的*代表所有级别。最后面的路径是保存路径。

1)日志类型分为:

auth                               ##pam产生的日志

authpriv                         ##ssh、ftp等登录信息的验证信息

corn                              ##时间任务相关

kern                              ##内核

lpr                                 ##打印

mail                              ##邮件

mark(syslog)-rsyslog   ##服务内部的信息,时间标识

news                            ##新闻组

user                             ##用户程序产生的相关信息

uucp                            ##unixtonuixcopy主机之间相关的通信

local1-7                       ##自定义的日志设备

2)日志级别分为:

debug                         ##有调试信息的,日志通信最多

info                             ##一般信息日志,最常用

notice                        ##最具有重要性的普通条件的信息

warning                     ##警告级别

err                             ##错误级别,阻止某个功能或者模块不能正常工作的信息

crit                            ##严重级别,阻止整个系统或者整个软件不能正常工作的信息

alert                         ##需要立刻修改的信息

emerg                      ##内核崩溃等重要信息

none                        ##什么都不记录

由日志服务rsyslogd记录的日志文件,日志文件的格式包含以下4列:

1)事件产生的时间

2)产生事件的服务器的主机名

3)产生事件的服务名或程序名

4)事件的具体信息

 日志管理服务应用实例。

在/etc/rsyslog.conf中添加一个日志文件/var/log/hsp.log,当有事件发送时(比如sshd服务相关事件),该文件会接收到信息并保存.给小伙伴演示重启,登录的情况,看看是否有日志保存

 

 3.日志轮替

日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除

日志轮替文件命名

 1)centos7使用logrotate进行日志轮替管理,要想改变日志轮替文件名字,通过/etc/logrotate.conf配置文件中“dateext”参数:

2)如果配置文件中有“dateext”参数,那么日志会用日期来作为日志文件的后缀,例如“secure-20201010”。这样日志文件名不会重叠,也就不需要日志文件的改名,只需要指定保存日志个数,删除多余的日志文件即可。

3)如果配置文件中没有“dateext”参数,日志文件就需要进行改名了。当第一次进行日志轮替时,当前的“secure”日志会自动改名为“secure.1”,然后新建“secure”日志,用来保存新的日志。当第二次进行日志轮替时,“secure.1”会自动改名为“secure.2”,当前的“secure”日志会自动改名为“secure.1”,然后也会新建“secure”日志,用来保存新的日志,以此类推。

日志轮替规则参数说明:

daily                                日志的轮替周期是每天

weekly                             日志的轮替周期是每周

monthly                           日志的轮替周期是每月

rotate                               数字保留的日志文件的个数。0指没有备份

compress                         日志轮替时,旧的日志进行压缩

createmodeownergroup                  建立新日志,同时指定新日志的权限与所有者和所属组。

mailaddress                          当日志轮替时,输出内容通过邮件发送到指定的邮件地址。

missingok                         如果日志不存在,则忽略该日志的警告信息

notifempty                        如果日志为空文件,则不进行日志轮替

minsize                           大小日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替size大小日志只有大于指定大小才进行日志轮替,而不是按照时间轮替。

dateext                    使用日期作为日志轮替文件的后缀。

为自己的日志加入日志轮替

1)第一种方法是直接在/etc/logrotate.conf配置文件中写入该日志的轮替策略

 

2)第二种方法是在/etc/logrotate.d/目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被“include”到主配置文件中,所以也可以把日志加入轮替。

 

3)推荐使用第二种方法,因为系统中需要轮替的日志非常多,如果全都直接写入/etc/logrotate.conf配置文件,那么这个文件的可管理性就会非常差,不利于此文件的维护

日志轮替的机制原理

 日志轮替之所以可以在指定的时间备份日志,是依赖系统定时任务。在/etc/cron.daily/目录,就会发现这个目录中是有logrotate文件(可执行),logrotate通过这个文件依赖定时任务执行的。通过crond后台程序。

 查看日志内存

 journalctl        可以查看内存日志,这里我们看看常用的指令

journalctl            ##查看全部

journalctl   -n 3   ##查看最新3条

journalctl  --since19:00  --until19:10:10#查看起始时间到结束时间的日志可加日期

journalctl  -p  err##报错日志 

journalctl -o verbose##日志详细内容

journalctl_PID=1245  _COMM=sshd##查看包含这些参数的日志(在详细日志查看)

或者  journalctl | grep sshd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值