速通老韩LINUX

目录

网络连接的三种模式

linux常用文件夹

vi与vim的三种模式

快捷键:

用户:

用户组:

指定运行级别:

指定运行级别:

找回root密码:

帮助指令

文件目录类

pwd指令

ls指令

cd指令

mkdir指令

rmdir指令

touch指令

cp指令

rm指令

mv指令

cat指令

more指令

less指令

echo指令

head指令

tail指令

>指令与>>指令

ln指令

history指令

时间日期类

date指令       

cal指令

搜索查找类

find指令

locate指令

grep指令和管道符 |

压缩与解压类

gzip/gunzip 指令

zip/unzip 指令

tar指令

linux组

权限的基本介绍

crond任务调度

crontab 进行 定时任务的设置

at定时任务

linux分区

如何为虚拟机添加一块硬盘

磁盘情况查询

查看网络ip和网关

进程管理

ps详解

终止进程kill和killall

查看进程树pstree

服务管理

查看服务名

服务的运行级别(runlevel)

指定运行级别

chkconfig指令

firewall指令

动态监控进程

监控网络状态

RPM与YUM

rpm包的管理

卸载rpm包

安装rpm包

yum

搭建JAVAEE环境

安装JDK

tomcat的安装

idea的安装

mysql5.7安装

shell编程

shell的变量

设置环境变量

运算符

if判断

case语句

for循环

while循环

read读取控制台输入

函数介绍

basename基本语法

dirname基本语法

shell编程综合案例

ubuntu

Ubuntu的root用户

apt

Ubuntu软件操作相关命令

远程登录Ubuntu

Centos8.1

日志管理

日志管理服务 rsyslogd

日志轮替

日志轮替机制原理

查看内存日志

定制自己的Linux

升级内核

linux系统恢复与备份

webmin

bt宝塔

linux面试题


网络连接的三种模式

1.桥接模式,虚拟系统可以和外部系统通讯,但是容易造成IP冲突

2.NAT模式,网络地址转换模式,虚拟系统可以与外部系统通讯,而且不造成IP冲突

3.主机模式,独立的系统

linux常用文件夹

/bin:存放最经常使用的命令

/sbin:存放系统管理员使用的系统管理程序

/home:存放普通用户的主目录,每个用户都有自己的一个目录,一般以账号命名

/root:系统管理员,超级用户主目录

/lib:系统开机所需要最基本的动态连接共享库

/lost+found:这个目录一般情况下为空,当系统非法关机,就会存放一些文件

/etc:所有的系统管理所需要的配置文件和子目录 my.conf

/usr:用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录

/boot: 存放的是启动linux时使用的一些核心文件包括一些连接文件以及镜像文件

/proc:这个目录是一个虚拟目录,它是系统内存的映射,访问这个目录来获取系统信息

/srv:service缩写,该目录存放一些服务启动后需要提取的数据

/sys:是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs

/tmp:这个目录存放一些临时文件

/dev:类似于windows的设备管理器,把所有硬件使用文件形式存储

/media:linux系统会自动识别一些设备,例如U盘,光驱等等,识别后会将设备挂载在此目录下

/mnt:系统提供该目录是为了让用户临时挂载别的文件系统,可以将外部存储挂载在/mnt/上

/opt:这是给主机额外安装软件所摆放的目录,默认为空

/usr/local:这是另一个主机额外安装软件所需安装的目录,一般通过编译源码方式安装的程序

/var:这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件

/selinux[security-enhanced linux]:SElinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置

vi与vim的三种模式

正常模式

插入模式:按下i,I,o,O,a,A,r,R任意一个即可,一般按i

点击esc输入:进入命令行模式:可提供相关指令,完成读取等操作

:q(退出)        :wq(保存且退出)        :q!(强制退出不保存)

快捷键:

一般模式下复制:yy        复制3行:3yy         粘贴:p        删除:dd        删除3行:3dd

查找单词:命令行下/关键字,回车进行查找,输入n查找下一个

设置行号:命令行下 :set nu        取消 :set nonu

在一般模式下光标移动至文档最末行输入G    移动至首行输入gg     移动至3行输入3 按下shift+g

用户:

添加用户:useradd 用户名 (-d /目录名称)        包含组:useradd -g 组名 用户名

查询用户信息:        id 用户名

修改用户密码:       passwd 用户名        

查看当前所在目录:        pwd

删除用户:      userdel 用户名(一般保留家目录)        userdel -r 用户名(完全删除需谨慎操作)

切换用户:su - 用户名        权限由高切换到低用户不需要输入密码反之需要,返回原来用户时使用logout/exit

查询登录用户: who am i

用户组:

新增组:groupadd 组名

删除组:groupdel 组名

修改用户组:usermod -g 用户组 用户名

/etc/passwd文件:用户(user)的配置文件,记录用户的各种信息

每行含义:用户名:口令:识别号:组识别号:注释性描述:主目录:登录shell

/etc/shadow文件:口令的配置文件

每行含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

/etc/group文件:组的配置文件,记录linux包含的组信息

每行含义:组名:口令:组标识号:组内用户列表

指定运行级别:

0:关机

1:单用户【找回丢失密码】

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:重启系统

常用运行级别是3和5,也可以指定默认运行级别

使用 init 切换运行级别

指定运行级别:

centos7以前,/etc/inittab文件中

multi-user.target:analogous to runlevel 3

graphical.target:anologous to runlevel 5

查看当前运行级别:systemctl get-default

设置默认运行级别:systemctl set-default TARGET.target

找回root密码:

1,启动系统,进入开机界面,在界面中按“e”进入编辑界面

2,进入编辑界面,使用键盘上下键将光标往下移动,找到“Linux16”开头内容所在的行数,在行的最后键入        init=/bin/sh

3,输入完成后,点击快捷键,ctrl+x 进入单用户模式

4,在光标闪烁的位置输入:mount -o remount,rw /         注意:各个单词间有空格,完成后按enter

5,在新的一行最后输入:passwd,完成后按键盘的回车键(enter),输入密码,再次确认密码即可,完成后显示passwd。。。。即修改成功

6,在鼠标闪烁的位置中 输入:touch /.autorelabel (注意:couch与/.之间有空格)完成后点enter

7,在鼠标闪烁的位置中 输入:exec /sbin/init (注意:exec与/之间有空格)完成后点enter,随后系统重启,新密码生效

帮助指令

linux的隐藏文件是以 . 开头的选项可以组合使用如 ls - al,ls - al /root(指明文件夹)

man:获得帮助信息        如:man ls

help:获得shell内置命令的帮助信息        如:help cd

文件目录类


pwd指令

基本语法:pwd        描述:显示当前工作目录的绝对路径

ls指令

基本语法:ls [选项] [目录或文件]

常用选项:

-a:显示所有目录和文件包括隐藏的

-l:以列表方式显示信息

cd指令

基本语法:cd [参数]         描述:切换到指定目录

理解:绝对路径与相对路径

cd ~ 或者 cd :        回到用户的家目录

cd..         回到当前目录的上一级目录

mkdir指令

用于创建目录

基本语法:mkdir [选项] 目录名

常用选项

-p        创建多级目录

rmdir指令

用于删除空目录

基本语法:rmdir [选项] 目录名

rmdir删除的是空目录,如果有内容是无法删除的

提示:如果需要删除非空目录,需要使用 rm -rf 目录名

touch指令

用于创建空文件

touch语法:touch 文件名

cp指令

用于拷贝文件到指定目录

基本语法

cp [选项] 被拷贝文件 目标文件夹

常用选项

-r        递归复制整个文件夹

使用细节:强制覆盖不提示的方法       \cp -r /home/bbb/ /opt/

rm指令

用于移除文件或目录

基本语法

rm [选项] 要删除的文件或目录

常用选项

       -r        递归删除整个文件夹

       -f        强制删除不提示


mv指令

用于移动文件与目录或者重命名

基本语法

mv OldNameFile NewNameFile        同一目录下重命名

mv /temp/movefile /targetFolder        移动文件

cat指令

用于查看文件内容

基本语法

cat [选项] 查看的文件

常用选项        -n        显示行号

使用细节

cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 | more

more指令

是一个基于VI编辑器的文本过滤,它以全屏幕的方式按页显示文本文件内容。more指令内置若干快捷键,详看操作说明

速通老韩LINUX_第1张图片

基本语法

more 查看的文件

less指令

less指令用于分屏查看文件内容,它的功能与more指令类似但比more指令强大,支持各种显示终端。less指令在显示文件内容时,并不是一次性将整个文件加载之后再显示,而是根据显示需要加载内容,对于大型文件具有较高效率

速通老韩LINUX_第2张图片

基本语法

less 查看的文件

echo指令

用于输出内容到控制台

基本语法

echo [选项] [输出内容]

head指令

用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行

基本语法

head 文件名        显示前十行内容

head -n 5  文件名      显示前五行内容

tail指令

用于输出文件的尾部内容,默认输出后十行内容

基本语法

1)tail 文件名        查看文尾十行内容

2)tail -n 5 文件名        查看文尾五行内容,5可以是任意行数

3)tail -f 文件名        实时追踪该文档的所有更新

>指令与>>指令

>输出重定向和>>追加

基本语法

1)ls -l >文件        列表的内容写入进a.txt中(覆盖)若文件不存在则会自动创建

2)ls -al >> 文件        列表的内容追加进a.txt的末尾

3)cat 文件1>文件2        将文件1的内容覆盖到文件2

4)echo “内容” >> 文件        追加

cal命令显示日历

ln指令

软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径

基本语法

ln -s [原文件或目录] [软链接名]        给原文件创建一个软链接

删除直接用rm删

history指令

查看已经执行过的指令,也可以执行历史指令

基本语法

history        查看已经执行过的历史指令

history 10        查看最近10条历史指令

输入history后再输入        !5        会再次执行编号为5的指令

时间日期类

date指令       

用于显示当前日期

基本语法

1)date        显示当前时间

2)date+%Y        显示当前年份

3)date+%m        显示当前月份

4)date+%d        显示当前是哪一天

5)date"+%Y-%m-%d %H:%M:%S"        显示年月日时分秒

设置日期

基本语法

date -s 字符串时间

如:date -s "2024-01-06 08:02:01"

cal指令

查看日历命令

基本语法

cal [选项]        不加选项显示本月日历

cal 2024        显示2024所有月份日历

搜索查找类

find指令

find指令将从指定目录下递归遍历其各个子目录,将满足条件的文件或目录显示在终端

基本语法

find [搜索范围] [选项]

选项说明

速通老韩LINUX_第3张图片

文件大小(+n 大于 -n 小于 n等于,单位有K,M,G)

如 find /root -size +200M

locate指令

locate指令可以快速定位文件路径,locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件,locate指令无需遍历整个文件系统,查询速度快,为了保证结果准确度,管理员必须定期更新locate时刻

基本语法

locate 搜索文件

特别说明

由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。

which指令,可以查看某个指令在哪个目录下,比如ls指令在哪个目录        which ls

grep指令和管道符 |

grep过滤查找,管道符,”|“,表示将前一个命令的处理结果输出传递给后面的命令处理

基本语法

grep [选项] 查找内容  源文件

常用选项

速通老韩LINUX_第4张图片

例如:cat /home/hello.txt | grep -n "yes"        显示hello文件中所有yes字符串并显示行号

           grep -n ”yes“ /home/hello.txt

压缩与解压类

gzip/gunzip 指令

gzip用于压缩文件,gunzip用于解压

基本语法

gzip 文件        压缩文件,只能将文件压缩为*.gz文件

gunzip  文件.gz        解压文件

zip/unzip 指令

zip用于压缩,unzip用于解压,项目打包发布中很有用

基本语法

zip [选项] xxx.zip        将要压缩的内容        压缩文件和目录的命令

unzip [选项] xxx.zip        解压缩文件

zip常用选项

-r        递归压缩,即压缩目录

unzip常用选项

-d<目录>指定解压后文件的存放目录

例如:zip -r myhome.zip /home/        将home及之下的所有子目录进行压缩为myhome.zip

 mkdir /opt/tmp      unzip -d /opt/tmp /home/myhome.zip       将myhome.zip解压到/opt/tmp目录下

tar指令

tar指令是打包指令,最后打包的文件是.tar.gz的文件、

基本语法

tar [选项] XXX.tar.gz 打包内容         打包目录,压缩后的文件格式.tar.gz

选项说明

速通老韩LINUX_第5张图片

例如:tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt        压缩多个文件为pc.tar.gz

           tar -zxvf pc.tar.gz  -c /opt/tmp2       解压到/opt/tmp2    

linux组

在linux中每个用户都必须属于一个组,不能独立于组外。linux中每个文件都有所有者,所在组,其他组的概念

文件/目录所有者

一般为文件的创建者,谁创建了文件,就自然的成为该文件的所有者

查看文件所有者        ls -ahl 

修改文件所有者        chown 用户名 文件名

组的创建

groupadd 组名

创建一个monster组

groupadd monster

创建一个用户fox,并放入monster组中

useradd -g monster fox

文件/目录所在组

当某个用户创建了一个文件后,这个文件的所在组就是该用户的所在组

查看文件/目录所在组

ls -ahl

修改文件所在组

chgrp 组名 文件名

其他组

除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组

改变用户所在组

在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组

usermod -g 组名 用户名

usermod -d 目录名 用户名 改变该用户登陆的初始目录. 特别说明:用户需要有进入到新目录的权限

权限的基本介绍

在ls -l 中显示

-rw-------. 1 root root 1881 9月  27 19:43 anaconda-ks.cfg

0-9说明:

1)第0位确定文件类型(d,-,l,c,b)

l是链接,相当于windows的快捷方式

d是目录,相当于windows的文件夹

c是字符设备文件,鼠标,键盘

b是块设备,如硬盘

2)第1-3位确定所有者(该文件的所有者)拥有该文件的权限。---User

3)第4-6位确定所属组(同用户组的)拥有该文件的权限。---Group

4)第7-9位确定其他用户拥有文件的权限。---Other

rwx作用到文件

r:可读

w:可写,但不代表可以删除文件,删除一个文件的前提是对该文件所在目录有写权限,才能删除

x:可执行

rwx作用到目录

r:可读,ls查看目录内容,将目录的内容显示出来

w:可写,可以修改,对目录内创建+删除+重命名目录,

x:可执行,可以进入该目录

-rw-------. 1 root root 1881 9月  27 19:43 anaconda-ks.cfg

1        文件:硬链接数或 目录:子目录数+文件数

root        用户

root        组

1881        文件大小(字节),如果是文件夹,

9月  27 19:43        最后修改日期

anaconda-ks.cfg        文件名

修改权限 chmod

通过chmod指令,可以修改文件或目录的权限

第一种方式:+,-,=变更权限

u:所有者        g:所在组        o:其他人        a:所有人(u,g,o的总和)

chmod u=rwx,g=rx,o=x        文件/目录名

chmod o+w        文件/目录名

chmod a-w        文件/目录名

第二种方式:通过数字变更

r=4 w=2 x=1        rwx=7

              chmod u=rwx,g=rx,o=x 文件目录名

相当于   chmod 751  文件目录名

修改文件所有者 chown

基本介绍

chown newowner 文件/目录         改变所有者

chown newowner:newgroup 文件/目录         改变所有者和所在组

-R 如果是目录 则使其下所有子文件或目录递归生效

chown -R tom /home/test        将/home/test 目录下的所有文件和目录的所有者都改为tom

修改文件所在组 chgrp

基本介绍

chgrp newgroup 文件/目录         改变所在组

chgrp -R ...        递归生效

如果要对目录内的文件进行操作,需要现有对该目录的相应权限

crond任务调度

crontab 进行 定时任务的设置

概述

任务调度:是指系统在某个时间执行的特定的命令或程序

任务调度分类:1,系统工作:有些重要的工作必须周而复始的进行,如病毒扫描

2,个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份

基本语法

crontab [选项]

常用选项

速通老韩LINUX_第6张图片

设置任务调度文件:/etc/crontab

设置个人任务调度。执行        crontab -e        命令

接着输入任务到调度文件

如: */1 * * * * ls -l /etc/ > /tmp/to.txt        每小时的每分钟执行ls -l /etc/ > /tmp/to.txt命令

五个占位符说明

速通老韩LINUX_第7张图片

特殊符号的说明

速通老韩LINUX_第8张图片

例如:

速通老韩LINUX_第9张图片

任务调度步骤:

每隔一分钟,将当前日期和日历都追加到/home/mycal中

1)vim /home/my.sh        写入操作        date >> /home/mycal 和 cal >> /home/mycal

2)给my.sh追加执行权限,chmod u+x /home/my.sh

2)执行 crontab -e  增加  */1 * * * *  /home/my.sh

备份数据库

mysqldump -u root -p密码 数据库 >>/home/db.bak

相关指令

crontab -r        终止任务调度

crontab -l        列出当前有哪些任务调度

service crond restart        重启任务调度

at定时任务

基本介绍:

1.at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行

2.默认情况下,atd守护进程每六十秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业

3,at命令是一次性定时计划任务,执行完一个任务后不再执行此任务

4.在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看

ps -ef        监测当前正在运行的进程

ps -ef | grep atd        监测atd是否在运行

at命令格式

at [选项] [时间]

at命令选项

速通老韩LINUX_第10张图片

at时间指定方法:

1.接受在当天的hh:mm(小时:分钟)式的时间指定,假如该时间已过去,那么就放在第二天执行,例如:04:00

2,使用midnight,noon,teatime(一般为下午四点)等比较模糊的词语来指定时间

3.采用12小时计时制,即在时间后面加上AM或PM来说明是上午还是下午,例如:12pm

4,指定命令执行时间的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 2024-01-12

5.使用相对计时法。指定格式为:now + count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes,hours,days,weeks。count是时间的数量,几天,几小时例如:      now + 5 minutes

6,直接使用today,tomorrow来指定完成命令的时间

ctrl+d        结束at命令的输入(需要输入两次)

例如:两天后的下午五点执行 /bin/ls /home

利用atq命令来查看系统中有没有执行的工作任务

明天17点钟,输出时间到 /root/date100.log

两分钟后,输出时间到 /root/date200.log

删除已经设置的任务,atrm 编号

linux分区

原理介绍

1.对linux来说无论有几个分区,分区给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,linux中每个分区都是用来组成整个文件系统的一部分

2.linux采用了一种叫“载入”的处理方式,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得

查看所有设备挂载情况

命令:        lsblk        或者        lsblk -f

硬盘说明

1)linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘

2)对于IDE硬盘,驱动盘标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例如:hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区

3)对于SCSI硬盘则标识为”sdx~“,SCSI硬盘是用”sd“来表示分区所在设备类型的,其余则和IDE硬盘的表示方法一样

速通老韩LINUX_第11张图片

如何为虚拟机添加一块硬盘

1.虚拟机添加硬盘

在虚拟机菜单中,选择设置,然后选择添加硬盘,修改添加硬盘的大小,然后设置完成重启系统

2.分区

分区命令        fdisk /dev/sdx(对哪个分就写哪个如sdb)

开始对/sdb分区

m        显示命令列表

p        显示磁盘分区 同 fdisk -I

n        新增分区

d        删除分区

w        写入并退出

说明:开始写入分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q

3.格式化

格式化磁盘

格式化命令:        mkfs -t ext4 /dev/sdb1(sdbx)

其中ext4是分区类型

4.挂载

将一个分区与一个目录联系起来

mount 设备名称 挂载目录

例如:mount /dev/sdb1 /newdisk

unmount 设备名称 或者 挂载目录

例如:unmount /dev/sdb1 或者 umount /newdisk

注意:用命令行挂载后重启会失效

5.设置可以自动挂载

永久挂载:通过修改/etc/fstab实现挂载

添加完成后 执行 mount -a 即刻生效

磁盘情况查询

基本语法        df -h

查询指定目录的磁盘占用情况

基本语法        du -h /目录        默认为当前目录

-s        指定目录占用大小汇总

-h        带计量单位

-a        含文件

--max-depth=1        子目录深度

-c        列出明细的同时,增加汇总值

例如:查询/opt目录的磁盘占用情况,深度为1

速通老韩LINUX_第12张图片

练习:

统计/opt文件夹下文件的个数

ls -l /opt | grep "^-" | wc -l

统计/opt文件夹下目录的个数

ls -l /opt | grep "^d" | wc -l

统计/opt文件夹下文件的个数,包括子文件夹里的

ls -lR /opt | grep "^-" | wc -l

统计/opt文件夹下目录的个数,包括子文件夹里的

ls -lR /opt | grep "^d" | wc -l

以树状显示目录结构

tree 目录名(如果没有tree,则使用 yum install tree 进行安装)

查看网络ip和网关

查看虚拟网络编辑器和修改ip地址

查看window的网络配置使用ipconfig

查看虚拟机的网络配置使用ifconfig

ping测试主机之间网络连通性

基本语法

ping 目的主机(功能描述:测试当前服务器是否可以连接目的主机)

第一种方法(自动获取)

说明:登陆后,通过界面的来设置自动获取ip,特点:linux启动后会自动获取ip,缺点是每次自动获取的ip地址可能不一样

第二种方法(指定ip)

说明:直接修改配置文件来指定ip,并可以连接到外网(程序员推荐)

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

要求:将ip地址配置为静态的,比如:ip地址为192.168.200.130

文件说明

TYPE="Ethernet"                                网络类型
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"                          需修改

none        |static        |bootp        |dhcp     引导时不使用协议   |静态分配ip|     bootp协议  |dhcp协议


DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="60900378-7174-4741-81aa-04717379083f"                随机id
DEVICE="ens33"                                接口名
ONBOOT="yes"                                  系统启动时网络接口是否有效

需要添加部分:

IP地址

IPADDR=192.168.200.130

网关

GATEWAY=192.168.200.2

域名解析器

DNS1=192.168.200.2

重启网络服务或重启系统生效

service network restart        reboot

设置主机名和hosts映射

设置主机名

1)为了方便记忆,可以给linux系统设置主机名,也可以根据需要修改主机名

2)指令hostname :查看主机名

3)修改文件在 /etc/hostname 指定

4)修改后,重启生效

设置hosts映射

windows系统中

在C:\Windows\System32\drivers\etc\hosts 文件中指定

IP地址 主机名

linux系统中

在/etc/hosts 文件中指定

IP地址 主机名

主机名解析过程(Hosts、DNS)

hosts是什么?

一个文本文件用来记录IP和Hostname(主机名)的映射关系

DNS?

1.DNS,就是Domain Name System的缩写,翻译过来就是域名系统

2.是互联网上作为域名和IP地址互相映射的一个分布式数据库

浏览器访问域名流程

速通老韩LINUX_第13张图片

进程管理

基本介绍:

1.在linux中,每个执行的程序都被称为一个进程,每一个进程都分配一个ID号(pid,进程号)

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

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

显示系统执行的进程

ps命令是用来查看目前系统中,有哪些正在执行,以及它们的执行情况,可以不加任何参数

速通老韩LINUX_第14张图片

 速通老韩LINUX_第15张图片

ps详解

1.指令 ps - aux | grep xxx 

2.指令说明

System V        展示风格

USER         用户名称

PID         进程号

%CPU        进程占用cpu百分比

%MEM        进程占用物理内存的百分比

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

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

TTY        终端名称,缩写

STAT        进程状态,其中S-睡眠,s-表示该进程是会话先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等

STARTED        进程启动时间

TIME        cpu时间,即进程使用cpu总时间

COMMAND        启动进程所用的命令和参数,如果过长会被截断显示

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

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

ps -ef|grep xxx        是BSD风格

UID:用户ID

PID:进程ID

PPID:父进程ID

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

STIME:进程启动时间

TTY:完整的终端名

TIME:CPU时间

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

终止进程kill和killall

介绍:

若是某个进程执行一半需要停止时,或是已消耗了很大的系统资源时,此时可以考虑停止该进程,使用kill命令来完成此项任务

基本语法

kill [选项] 进程号        功能描述:通过进程号终止进程

killall 进程名称            功能描述:通过进程名称终止进程,也支持通配符,这在系统因负载过大而变得缓慢时很有用

常用选项

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

例如:

终止远程登录服务sshd,在适当的时候再次重启sshd服务

kill sshd对应的进程号;/bin/systemctl start sshd.service        

查看进程树pstree

基本语法

pstree [选项],可以更加直观的来看进程信息

常用选项:

-p        显示进程pid

-u        显示进程的所属用户

服务管理

介绍:

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

service管理指令

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

2.在CentOS7.0后,很多服务不在使用service,而是systemctl

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

查看服务名

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

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

服务的运行级别(runlevel)

linux系统有七种运行级别(runlevel):常用的级别是3和5

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

1:单用户工作状态,root权限,用于系统维护,禁止远程登录

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

3:完全多用户状态(有NFS),登陆后进入控制台命令模式

4:系统未使用,保留

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

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

开机流程:

指定运行级别

centos7以前,/etc/inittab文件中

multi-user.target:analogous to runlevel 3

graphical.target:anologous to runlevel 5

查看当前运行级别:systemctl get-default

设置默认运行级别:systemctl set-default TARGET.target

chkconfig指令

介绍:

1.通过chkconfig 命令可以给服务的各个运行级别设置自启动/关闭

2.chkconfig 指令管理的服务在 /etc/init.d 查看

3.注意:Centos7.0后,很多服务使用systemctl 管理

chkconfig 基本语法

查看服务 chkconfig --list [|grep xxx]

chkconfig 服务名 --list

chkconfig --level 5 服务名 on/off        指定某个级别服务设置为自启动或关闭

使用细节:chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效

systemctl指令管理

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

2)system指令管理的服务在 /user/lib/systemd/system 查看

systemctl设置服务的自启动状态

1.systemctl list-unit-files [ | grep 服务名]        查看服务开机启动状态,使用grep进行过滤

2.systemctl enable 服务名        设置服务开机启动

3.systemctl disable 服务名        关闭服务开机启动

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

细节:

a:关闭或启用防火墙后,立即生效

b:这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置

c:如果希望某个服务自启动或关闭永久生效,要使用 systemctl [ enable | disable] 服务名

打开或者关闭指定端口

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

firewall指令

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

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

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

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

动态监控进程

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

基本语法        top [选项]

选项说明        速通老韩LINUX_第16张图片

交互操作说明:

速通老韩LINUX_第17张图片

实例:

监控特定用户:

输入top后,再键入 u 输入用户名后回车即可显示

终止指定的进程:

输入top后,再键入 k 输入要结束的进程ID号回车(输入信号量)再键入9即可

监控网络状态

查看系统网络情况netstat

基本语法:

netstat [选项]

选项说明

-an        按一定顺序排列输出

-p        显示哪个进程在调用

检测主机连接命令ping:

是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的网线或网卡故障

ping ip地址

RPM与YUM

rpm包的管理

介绍:

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

Linux的分布版本都有采用(suse,redhat,centos等等)可以算是公认的标准

rpm包的简单指令

查询已安装的rpm列表        rpm -qa | grep xxx

rpm包名基本格式

一个rpm包名:firefox-60.2.2-1.el7.centos.x86_64

名称:firefox

版本号:60.2.2-1

适用操作系统:el7.centos

表示centos7.x的64位系统

如果是i686、i386表示32位系统,noarch表示通用

rpm包的其他查询指令

rpm -qa        查询所安装的所有rpm软件包

rpm -qa | more

rpm -qa | grep xx

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

如:rpm -q firefox

rpm -qi 软件包名        查询软件包信息

如:rpm -qi firefox

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

如:rpm -ql firefox

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

rpm -qf /etc/passwd

rpm -qf /root/install.log

卸载rpm包

基本语法:rpm -e RPM包名称        //erase

细节:

1.如果其他软件包依赖与所要卸载的软件包,卸载时则会产生错误信息

2.如果我们要硬要删除这种软件包,可以增加参数 --nodeps,就可以强制删除,但一般不推荐,这样做后,依赖与被删除的查询可能会无法执行

安装rpm包

基本语法:rpm -ivh RPM包全路径名称

参数说明:

i = install        安装

v = verbose        提示

h = hash        进度条

yum

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

yum的基本指令

查询yum服务器是否有需要安装的软件

yum list | grep xx软件列表

安装指定的yum包

yum install xxx 下载安装

搭建JAVAEE环境

安装JDK

步骤:

1.mkdir /opt/jdk

2.通过xftp 传到 /opt/jdk 下

3.cd /opt/jdk

4.解压 tar -zxvf jdk-8u261-linux-x64.tar.gz

5.mkdir /user/local/java

6.mv /opt/jdk/jdk1.8.0_261 /user/local/java

7.配置环境变量的配置文件 vim /etc/profile

8.export JAVA_HOME=/user/local/java/jdk1.8.0_261

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

10.sorce /etc/profile [让文件生效]

tomcat的安装

步骤:

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

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

3)开放端口 8080

测试安装是否成功:访问 http://linuxip:8080

idea的安装

1.下载安装包

2.解压缩到 /opt/idea

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

mysql5.7安装

a:新建文件夹/opt/mysql,并cd进去

b:运行 wget https://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar         下载mysql安装包        PS:centos7.6自带mysql 数据库 是 mariadb,会跟mysql冲突,要先删除

c:运行 tar -zxvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar 

d:运行 rpm -qa | grep mari,查询 mariadb 相关安装包

e:运行 rpm -e --nodeps mariadb-libs,卸载

f:然后真正开始装 mysql ,依次运行以下命令

rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm 

rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm

 rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm 

rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm 

g:运行 systemctl start mysqld.service        启动mysql

h:然后开始设置root用户密码

Mysql 自动给 root 用户设置随即密码,运行 grep "password" /var/log/mysqld.log        可以看到当前密码

i:运行 mysql -uroot -p,用root用户登录,提示输入密码可用上述的,可以成功登录进入 mysql 命令行

j:设置root密码,对于个人开发环境,如果要设比较简单的密码,可以运行    

set global validate_password_policy=0;设置密码策略, validate_password_policy默认为1

set global validate_password_length=1;

速通老韩LINUX_第18张图片

k:set password for ‘root’ @‘localhost’=password('xxxx');

发现报错:需要使用alter句子 alter user 'root'@'localhost' identified by 'xxxx';

l:运行 flush privileges;使密码生效

shell编程

为什么学:

1)linux运维工程师在进行服务器集群管理时,需要编写shell程序来进行服务器管理

2)对于JavaEE和Python程序员来说,工作的需要,你的上司会要求你编写一些shell脚本进行程序或者对服务器的维护,比如编写一个定时备份数据库的脚本

3)对于大数据程序员来说,需要编写shell程序来管理集群

什么是shell

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

shell脚本执行方式

格式要求:

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

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

脚本的常用执行方式

方式一:输入脚本的绝对路径或相对路径

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

例如: ./hello.sh  或者使用绝对路径 /root/shcode/hello.sh

方式二(sh脚本):不用赋予权限,直接执行即可        

例如:sh hello.sh,也可以使用绝对路径

shell的变量

介绍:

1)linux shell 中变量分为,系统变量和用户自定义变量

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

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

shell变量的定义

基本语法

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

2.撤销变量:unset 变量

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

速通老韩LINUX_第19张图片

shell变量的定义

规则:

1)变量名称可以又字母、数字、和下划线组成,但是不能以数字开头。4A=200(这是非法的)

2)等号两边不能有空格

3)变量名称一般习惯大写

将命令的返回值赋给变量

1.A=`date`反引号,运行里面的命令,并将结果返回给变量A

2.A=$(date)等价反引号

设置环境变量

基本语法

a:export 变量名=变量值        将shell变量输出为环境变量/全局变量

b:source 配置文件        让修改后的配置信息立即生效

c:echo $变量名        查询环境变量的值

注意:在输出TOMCAT_HOME 环境变量前,需要让其生效        source /etc/profile

shell脚本的多行注释

:<

内容

!

位置参数变量

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

基本语法:

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

$*        这个变量代表命令行中所有参数,$*将所有的参数看成一个整体

$@        这个变量也代表命令行中所有参数,不过把$@把每个参数区别对待

$!        这个变量代表命令行中所有参数个数

预定义变量

介绍:就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用

基本语法

$$        当前进程的进程号

$!        后台运行的最后一个进程的进程号

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

以后台运行一个脚本,在绝对路径后加&

运算符

基本语法:

1."$((运算式))" 或 "$[运算式]" 或者 expr m + n        expression    x

2.注意expr运算符见要有空格,如果希望将 expr 的结果赋给某个变量,必须使用反引号将其包裹住

3.expr m - n

4.expr \*,/,%        乘,除,取余

条件判断

基本语法:

[ condition ](注意condition前后要有空格)

#非空返回true,可使用$?验证(0为true,>1为false)

例如:[ ak ]        返回true                                                [ ]        返回false       

[ condition ] && echo OK || echo notok        条件满足,执行后面的语句

判断语句

1)=        字符串比较

2)两个整数比较

-It        小于little

-el        小于等于

-eq        等于

-gt        大于grater

-ge        大于等于

-ne        不等于

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

-r        读

-w        写

-x        执行

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

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

-e        文件存在exist

-d        文件是一个目录

细节,if 后面又空格,[]中前后也需要空格,即便内部没有表达式也需要空格

速通老韩LINUX_第20张图片

流程控制

if判断

基本语法

if [ 条件式判断 ]        注意条件式在中括号内前后需要空格

then

        代码

fi

或者        多分支

if [ 条件判断式 ]

then

        代码

elif [ 条件判断式 ]

then

        代码

fi

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

case语句

基本语法:

case $变量名 in

"值1")

如果变量的值等于值1,则执行程序1

;;

"值2")

如果变量的值等于值2,则执行程序2

;;

.........

*)

如果变量的值都不是以上的值,则执行此程序

;;

esac

例如:

速通老韩LINUX_第21张图片

细节:注意结尾的esac!!!

for循环

基本语法1

for 变量 in 值1 值2 值3 。。。

do

        程序

done

例子打印命令行输入的参数        可以看出 $* 与 $@的区别

速通老韩LINUX_第22张图片

基本语法2

for((初始值;循环控制条件;变量变化))

do 

        程序

done

例子:定义一个变量,从1加到100的值输出展示

速通老韩LINUX_第23张图片

while循环

基本语法

while [ 条件判断式 ]

do

        程序

done

注意:while 和 [ 有空格,条件判断式 和 [ 也有空格

例子:从命令行输入一个数n,统计从1+。。。+n的值为多少

速通老韩LINUX_第24张图片

read读取控制台输入

基本语法

read(选项)(参数)

选项:

-p        指定读取值式的提示符

-t        指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待

参数:

变量:指定读取值的变量名

速通老韩LINUX_第25张图片

函数介绍

shell编程和其他编程语言一样,有系统函数,也可以自定义函数。介绍两个系统函数

系统函数

basename基本语法

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

basename [pathname] [suffix]

basename [string] [suffix]        besename命令会删掉所有的前缀包括最后一个(’/‘)字符,然后将字符串显示出来

选项:

suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。

例如:请返回/home/aaa/test.txt的“test.txt”部分        basename /home/aaa/test.txt 

如果 basename /home/aaa/test.txt .txt        则只会返回 test

dirname基本语法

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

dirname 文件绝对路径        从给定的包含绝对路径的文件名中去除文件名(非目录部分),返回剩下的路径(目录部分)

例如:请返回/home/aaa/test.txt的“/home/aaa”        dirname /home/aaa/test.txt

自定义函数

基本语法

[function] funname[()]

{

        Action;

        [return int;]

}

调用直接写函数名:funame [值]

例如:计算输入两个参数的和(动态的获取),getSum

速通老韩LINUX_第26张图片

shell编程综合案例

需求分析

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

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

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

4.在备份的同时,检查是否有10天前的备份数据库文件,如果有则进行删除

速通老韩LINUX_第27张图片

最后使用 crontab -e 添加任务调度加入        30 2 * * * /usr/sbin/mysql_db_backup.sh

ubuntu

介绍

Ubuntu 是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu基于GNU/Linux,支持x86、amd64(即x64)和ppc架构,由全球化的专业开发团队(Canonical Ltd)打造

专业的Python开发者一般会选择Ubuntu 这款Linux系统作为生产平台

温馨提示:

Ubuntu和Centos 都是基于 GNU/Linux 内核的,因此基本使用和Centos一样,他们的各种指令可以通用,只是界面和预先安装的软件有所差别

安装Ubuntu

1.查询 BIOS 虚拟化支持

2.新建虚拟机

3.选择安装镜像文件

4.创建用户

5.选择安装位置

6.指定空间大小

7.指定内存大小

8.分配cpu内核

9.配置网络适配器

10.点击完成,开始进行 Ubuntu 的安装,安装过程可能较长

11.进入登录界面

12.下一步

Ubuntu的root用户

介绍:

安装Ubuntu成功后,都是普通用户权限,并没有最高的root用户权限,如果需要使用root权限,通常会在命令前加上 sudo,有时候感觉很麻烦

我们一般会使用su命令来直接切换到root用户,但如果没有给root设置初始密码,就会抛出 su:Authentication failure 这样的问题,所以,我们只要给root用户设置一个初始密码就好

给root用户设置密码并使用

1.输入 sudo passwd 命令,输入一般用户密码并设定root用户密码

2.设定root密码成功后,输入su命令,并输入刚才设定的root密码,就可以切换成root了,提示符$代表一般用户,提示符#代表root用户

3.以后就可以使用root用户了

4.输入exit命令,退出root用户并返回一般用户

在Ubuntu下开发一个python程序(需要使用root用户)

1)vi hello.py        

2)python3 hello.py

apt

apt是Advanced Packaging Tool 的简称,是一款安装包管理工具。在Ubuntu下,我们可以使用apt命令进行安装包的安装,删除,清理了等。类似于Windows中的软件管理工具

Ubuntu软件操作相关命令

sudo apt-get update        更新源

sudo apt-get install package        安装包

sudo apt-get remove package        删除包

sudo apt-cache research package        搜索软件包

sudo apt-cache show package        获取包的相关信息,如说明,大小以及版本号

sudo apt-get install package --reinstall        重新安装包

sudo apt-get -f install        修复安装

sudo apt-get remove package --purge        删除包,包括环境配置文件等

sudo apt-get build-dep package        安装相关的编译环境

sudo apt-get upgrade        更新已安装的包

sudo apt-get dist-upgrade        升级系统

sudo apt-cache depends package        了解使用该包的依赖

sudo apt-cache rdepends package        查看该包被那些包依赖

sudo apt-get source package        下载该包源代码

备份Ubuntu默认的源地址

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

更新源服务器列表

先清空 sources.list 文件复制镜像网站的地址

echo ‘’ > sources.list

复制镜像网站的地址,拷贝到 sources.list 文件

更新源

sudo apt-get update

实例:

sudo apt-get remove vim        删除

sudo apt-get install vim        安装

sudo apt-cache show vim        显示软件信息

远程登录Ubuntu

ssh介绍:

SSH为Secure Shell缩写,由IETF的网络小组所制定,SSH为建立在应用层和传输层基础上的传输协议,

SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,常用于远程登陆,几乎所有 UNIX/LINUX 平台都可以运行SSH

使用SSH服务,需要安装相应的服务器和客户端。服务器与客户端关系:如果,A机器想被B机器远程登录,那么A机器需要安装SSH服务器,B机器需要安装SSH客户端

和Centos不一样,Ubuntu 默认没有安装SSHD服务(使用netstat 指令查看:apt install net-tools),因此,我们不能进行远程登录

安装SSH与启用

sudo apt-get install openssh-server

执行上面指令后,在当前这台linux上就安装了ssh服务端和客户端

service sshd restart

执行上面命令,就启动了 sshd服务,会监听端口22

从一台linux系统远程登录到另一台linux系统

在创建服务集群时,会用到该技术

基本语法

ssh 用户名@IP

例如:ssh [email protected]

使用ssh访问,如果访问出现错误,可以查看是否有该文件

/.ssh/konwn_ssh 尝试删除该文件解决

登出:exit或logout

Centos8.1

Centos下载

速通老韩LINUX_第28张图片

日志管理

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

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

3.可以这样理解,日志是用来记录重大事件的工具

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

系统中常用的日志

速通老韩LINUX_第29张图片

日志管理服务 rsyslogd

CentOS7.6日志服务 rsyslogd ,CentOS6.x 日志服务是syslogd,rsyslogd功能更强大,rsyslogd 的使用,日志文件的格式,和syslogd服务兼容

查询linux中的rsyslogd 服务是否自启动

ps -aux | grep “rsyslogd” | grep -v “grep”        反向匹配:显示不包含grep的服务

查询 rsyslogd 服务的自启动状态

systemctl list-unit-files | grep rsyslog

配置文件:/etc/rsyslog.conf

编辑文件的格式为: *.*        存放日志文件

第一个 * 代表日志类型,第二个 * 代表日志级别

1.日志类型分为:

auth        ##pam产生的日志

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

corn        ##时间任务相关

kern        ##内核

Ipr          ##打印

mail        ##邮件

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

news        ##新闻组

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

uucp        ##unix        to        nuix        copy主机直接相关的通信

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

2.日志级别分为:

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

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

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

warning        ##警告级别

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

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

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

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

none        ##什么都不记录

注意:从上到下,级别从低到高,记录信息越来越少

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

1)事件产生的时间

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

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

4)事件的具体信息

日志轮替

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

日志轮替文件命名

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

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

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

logrotate 配置文件

/etc/logrotate.conf        为logrotate的全局配置文件

说明:也可以把某个日志文件的轮替规则写到 /etc/logrotate.d 目录,比如/var/log/boot.log

参数说明:

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

速通老韩LINUX_第30张图片

日志轮替机制原理

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

查看内存日志

journalctl        可以查看内存日志

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

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

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

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

或 journalctl | grep sshd

注意:journalctl        查看的是内存日志,重启清空

定制自己的Linux

Linux启动原理:

1)首先Linux要通过自检,检查硬件设备有没有故障

2)如果有多块启动盘的话,需要在BIOS中选择启动磁盘

3)启动MBR中的bootloader引导程序

4)启动内核文件

5)执行所有进程父进程、老祖宗systemd

6)欢迎界面

在linux启动流程中,加载内核文件时关键文件:

1.kernel文件:vmlinuz-3.10.0-957.el7.x86_64

2.initrd文件:initramfs-3.10.0-957.el7.x86_64.img

自定义linux系统思路

速通老韩LINUX_第31张图片

操作步骤:

1)首先,给现有的inux添加一块大小为20G的硬盘,选择scsi类型并存为单个文件

2)添加完成后,点击确定,然后启动现有的linux,通过fdisk来给/dev/sdb 进行分区

3)对/dev/sdb 分区进行格式化 mkfs ext4 /dev/sdb1

4)创建目录,并挂载新磁盘

5)安装 grub,内核文件拷贝至磁盘

6)修改 grub2/grub.cfg 文件,添加 selinux=0 init=/bin/bash

7)创建目标主机根文件系统

8)拷贝需要的bash(也可以拷贝你需要的指令)和库文件给新的系统使用

9)现在就可以创建一个新的虚拟机,然后将默认分配的硬盘 移除掉,指向刚刚创建的磁盘即可

10)这时,很多指令没法用,比如ls,reboot等,可以将需要的指令拷贝到对应的目录即可

11)如果要拷贝指令,重新进入到原来的linux系统拷贝相应的指令即可,

12)再重启新的linux系统,就可以使用指令了

升级内核

uname -a        查看当前内核版本

yum info kernel -q        检测内核版本,显示可以升级的内核

yum update kernel        升级内核

yum list-kernel -q        查看已经安装的内核

linux系统恢复与备份

1.把需要的文件(或分区)用tar进行打包,下次需要恢复的时候,再解压覆盖即可

2.使用dump命令和restore命令

如果系统上没有两个指令,先进行安装

yum -y install dump

yum -y install restore

使用dump进行备份

速通老韩LINUX_第32张图片

速通老韩LINUX_第33张图片

速通老韩LINUX_第34张图片

使用restore进行恢复

速通老韩LINUX_第35张图片

速通老韩LINUX_第36张图片

速通老韩LINUX_第37张图片

速通老韩LINUX_第38张图片

webmin

速通老韩LINUX_第39张图片

6666端口可能无法使用,切换至8010端口可使用

速通老韩LINUX_第40张图片

webmin简单使用

语言设置:

webmin中点击configue进行配置language

IP访问控制

webmin中点击configue进行配置IP访问控制

查看进程

system中最后一个选项进程管理器

修改密码

system中点击change passwords

任务调度

system中cron任务调度

mysql

server 中点击mysql

bt宝塔

速通老韩LINUX_第41张图片

浏览器打开显示不是私密连接,可以强制打开

忘记密码:

速通老韩LINUX_第42张图片

linux面试题

速通老韩LINUX_第43张图片

1) cat t.txt | cut -d '/' -f 3 | sort | uniq -c | sort -nr

2)netstat -an | grep ESTABLISHED | awk -F " " '{print $5}' | awk -F ":" '{print $1}' | sort | uniq -c | sort -nr

速通老韩LINUX_第44张图片

1.a:vim /etc/my.cnf        b:在末尾加入skip-grant-tables        c:service mysqld restart        

 d:空密码进入        e:update user set authentication_string=password("xxx") where user="root";

f:flush privileges;        g:vim /etc/my.cnf        h:注释掉刚刚加上的skip。。。并保存退出

i:service mysqld restart

2.cat access.log | awk -F " " '{print $1}' | sort | uniq -c | sort -nr | head -2

3.tcpdump -i ens33 host 192.168.200.1 and port 22 >> /opt/interview/tcpdump.log

4.常用的Nginx模块,用来做什么?

rewrite 模块        实现重写功能

access模块        来源控制

ssl模块        安全加密

ngx_http_gzip_module        网络传输压缩模块

ngx_http_proxy_module        模块实现代理

ngx_http_upstream_module        模块实现定义后端服务器列表

ngx_cache_purge        实现清除缓存功能

速通老韩LINUX_第45张图片

速通老韩LINUX_第46张图片

速通老韩LINUX_第47张图片

速通老韩LINUX_第48张图片

速通老韩LINUX_第49张图片

速通老韩LINUX_第50张图片

速通老韩LINUX_第51张图片

速通老韩LINUX_第52张图片

速通老韩LINUX_第53张图片

速通老韩LINUX_第54张图片

速通老韩LINUX_第55张图片

速通老韩LINUX_第56张图片

速通完了,路也越迷茫了

你可能感兴趣的:(服务器,网络,运维)