Linux操作系统学习记录

一.常用命令

### 1.查看所在目录

pwd

alt 图片

2.更换用户

su 用户名

su - 用户名

  • 带一杠的是环境也切换,不带的是只切换用户

3.帮助命令

man or--help

4.目录切换命令

cd + 要切换到的目录

5.显示当前目录下得文件

ls 参数: -a -A -c -C -d -l -i

  • -a:显示当前目录的所有文件,包括隐藏文件
  • -A: 显示当前目录下得所有文件和子文件
  • -c:按时间排序显示
  • -C:分成多列显示各行
  • -d:如果参数是目录,只显示目录名称,不显示它的子文件
  • -l:以长格显示文件详细信息
  • -i:在输出的第一列显示文件的i节点

6.显示文件内容

  • cat 参数: -b -n

  • -b:对非空行标注行号

  • -n:对所有行标注行号

  • more 参数: -num +num

  • -num:指定分页时每页的行数

  • +num:指定从文件的第num行开始显示

  • less

  • 还可以使用cat合并文件内容

    cat file1 file2>file3
    #将文件file11和file2的内容覆盖输出到file3
    cat file1 file2>>file3
    #将文件file11和file2的内容追加输出到file3
    

    6.2显示文件的前n行和后n行

    1. 显示前n行

    head 参数 -n

    • -n:显示的行数

    1. 显示最后n行

    tail 参数 -n

    • -n:显示的行数

7.创建目录

mkdir 参数: -p

  • -p:创建时,若父目录不存在,同时创建父目录和子目录

8. 删除目录空目录

rmdir 参数: -p

  • -p:会一起删除父目录,如果父目录没有其他子目录

9.创建文件和更新文件时间

touch 参数: -d yyyymmdd -a -m

  • -d yyyymmdd:将文件的存取时间或修改时间修改为yyyy年mm月dd日

  • -a:将文件的存取时间修改为当前时间

  • -m:将文件的修改时间修改为当前时间

10.目录和文件的复制

cp 参数: -a -R或-r -u 文件名或目录名

  • -a:尽可能将文件的状态、权限等属性按原状复制

  • -R或-r: 复制目录,包括子目录

  • -u:当复制的文件与目标文件存在差异时才会复制

    11.移动目录和目录改名

mv 参数: -i -f 源文件或目录 目标文件或目录

  • -i:如果目标文件或目录存在,则提示是否覆盖

  • -f:无提示,无论目标文件或目录是否存在

12.删除文件或目录

rm参数: -d -i -f -R或-r * 文件名或目录名

  • -d:删除空目录

  • -i:删除时是否提示,不带也提示

  • -f:删除时不提示用户

  • -R或-r:递归删除,删除包括子目录

  • *:删除所有文件

13.创建文件链接

ln 参数 -s 源文件 目标文件

  • -s:创建软链接,不带该参数时创建硬链接

  • 软链接:只是一个文件的指向,不会额外占用磁盘空间

  • 硬链接:在目标目录创建一个一模一样的目录或文件,会额外占用磁盘空间

  • 删除链接和删除文件一样,直接 rm

14.关机和重启

  • 立即关机: shutdown -h now
  • 一分钟后关机: shutdown -h 1
  • 立即重启: reboot shutdown -r now
  • 把内存的数据保存到磁盘: sync,关机和重启默认会先执行该命令

15.查看历史执行命令

history

  • 带上参数10,表示查看最近10条历史命令,不带参数表示参看所以历史命令
  • !10:表示执行编号为10的历史命令

16.查看时间日期命令

参看时间日期

date 参数 +%Y %m %d %H %M %S %s

  • 参数是标准的时间格式化,需要使用引号

  • Y:年

  • m:月

  • d:日

  • H:小时

  • M:分钟

  • S:分钟

  • s:时间戳

查看日期

cal参数

  • 不带参数,显示的是本月的日期
  • 参数可以是年份

17.find,locate,which,grep查找命令

1.find

find 搜索范围 参数 -name -user -size 目标文件

  • -name:按名称查找

  • -user:按文件所有者查找

  • -size:按文件大小查找(+n:表示大于,-n:表示小于,单位有:k,M,G)

2.locate

locate 文件名

  • 用于快速定位文件路径,查找是在它自己的数据库里查找,速度非常快
  • 第一次执行,需要先执行updatedb命令更新数据库

3.which

which命令名称

  • 用于查看一个指令所在的路径

4.grep

grep参数 -n -i|(管道符)

  • grep:过滤查找

  • -n:显示匹配行和行号

  • -i:忽略字母大小写

  • “|”:管道符号表示,将前一个命令的结果传递给后一个指令处理

18.压缩和解压

  • gzip和gunzip是一组命令,通常配合使用
  • zip和unzip是一组命令,通常配合使用

1.gzip压缩

gzip 文件名

  • 用于压缩文件

    2.gunzip解压

gunzip 压缩包名.gz

  • 用于解压文件

3.zip压缩

zip 文件或者目录 参数 -r

  • -r:递归压缩文件,即压缩文件夹(目录)

    zip myhome.zip /home -r

    • 表示将整个home目录压缩,并命名为myhome.zip

4.unzip解压

unzip 压缩包名.zip 参数 -d

  • -d:指定解压后存放文件的目录

    unzip myhome.zip -d /opt/tmp

    • 表示将myhome.zip解压到/opt/tmp目录下

5.tar指令

tar 目标文件/目标目录 参数 -c -v -f -z -x

  • -c:产生.tar打包文件

  • -v:显示打包或解压过程的详细信息

  • -f:指定压缩后的文件名

  • -z:打包同时压缩

  • -x:解压.tar文件

  • tar即可以压缩也可以解压

  • tar是打包命令

    tar -zcvf ./test.tar.gz ./aa/*

    • 表示将目录aa的所有文件打包到test.tar.gz压缩包

    tar -zxvf ./test.tar.gz -C /tmp

    • 表示将test.tar.gz解压到/tmp目录

二.查看系统信息相关命令

1.查看主机的状态

hostnamectlhostname status

2.修改主机名

hostnamectl set-hostname 新的主机名

  • 也可以修改/etc/hostname文件进行主机名的修改

3.显示系统信息

uname 参数 -a或-all -m或-machin -n或-nodename -r或-release - s或-sysname - v

  • -a或-all:显示全部信息
  • -m或-machin:显示计算机的类型
  • -n或-nodename:显示计算机在网络上的名称
  • -r或-release:显示操作系统的发行编号
  • -v:显示版本信息
  • 还可以通过/proc/version文件获得Linux版本信息

4.查看内存信息

free 参数 -h -t -V

  • -h:以合适的单位显示内存
  • -t:显示内存的总和
  • -V:显示版本的信息

5.查看磁盘的信息

df 参数 -h -T --total

  • -h:以合适的单位显示

  • -T:显示文件系统的形式

  • --total:显示系统中磁盘的使用情况

    查看指定目录的磁盘使用情况

du 参数 -s -h -a --max-depth=1 -c 目录

  • -s:指定目录占用大小汇总
  • -h:以合适的单位显示
  • -a:和文件的大小一起显示
  • --max-depth=n:显示子目录的深度(n)
  • -c:列出明细同时增加汇总值

3.vi和vim

1.常用快捷键

1. 拷贝当前行: `yy` ,拷贝当前向下5行: `5yy` ,按`p`粘贴(在一般模式下执行)
2. 删除当前行: `dd` ,删除当前向下五行: `5dd` (在一般模式下执行)
3. 查找:在命令行模式下输入`/要查找的内容` 
4. 设置显示行号:  `set nu` ,取消显示行号: `set nonu`
5. 快速定位到最首行:`gg`,5. 快速定位到最末行:`G`
5. 快速定位到第n行:先输入要定位到的行号,再输入`Shift + g`
6. 撤销一次:'uu',撤销5次:'5uu'
7. 恢复:'ctrl + r'
8. 选择:'v'

3.用户管理

  • 查看用户信息,用户id,组id,所在组

id 用户名

  • 注销用户

    logout

1.添加用户

useradd 用户名 参数 -c -d -e -f -g -G -m -M -n -p -r -s -u

  • -c :用户的注释信息

  • -d: 指定用户的主目录

  • -e:禁用用户的日期

  • -f:设置账户过期n天后禁用用户,-1 表示永不禁用, 0 表示马上禁用

  • -g:设置用户基本组,添加到指定的用户组,如果没有指定组,就会生成一个和用户名相同的组,并将该用户添加到该组

  • -G:设置用户的附属组

  • -m:若用户主目录不存在则创建

  • -M:不创建用户主目录

  • -n:不为用户创建私人组

  • -p:设置密码

  • -r:创建uid小于1000的不带系统账户的用户

  • -s:指定用户登录的shell

2.修改密码和指定密码

passwd 用户名 参数 -l -u -d -f -n -x -w -i -S

  • -l: 锁定用户

  • -u:口令解锁

  • -d:将口令设置为空,但可以登录,没有设置口令的用户不能登录

  • -f:强制用户下次登录必须修改口令

  • -n:指定口令的最短存活期

  • -x:指定口令的最长存活期

  • -w:口令过期前n天提醒

  • -i:口令过期n天后停用用户

  • -S:显示用户口令的简短信息

  • 不带用户名修改的是当前用户的密码

    修改用户信息

    chage 用户名 参数 -l -m -M W -I -E -d

    • -l: 列出口令属性的各个数值
    • -m:指定密码的最小年龄
    • -M:指定密码的最大年龄
    • -W:密码过期前n天警告
    • -I:密码过期n一天禁用用户
    • -E:用户到期作废的日期
    • -d:设置密码的上一次修改日期

3.删除用户

userdel 用户名 参数 -r

  • -r:和home目录一起删除
  • 不带参数,home目录会保留

4.添加用户组

groupadd 组名

5.删除用户组

groupdel 组名

6.用户组的修改

group 参数 -g -n -o 组名

  • -g:修改gid
  • -n:修改组名
  • -o:强制更改gid为重复的gid(允许重复的gid)

7.修改用户所在的组

usermod 用户名 参数 -c -d -m -g -G -L -U -s -u

  • -c:填写用户的备注信息

  • -d-m:这两个参数一起使用,可以指定新的家目录,并把数据迁移过去

  • -g 组名:将用户所在组修改为指定的组

  • -G:设置用户的拓展组

  • -L:锁定用户

  • -U:解锁用户

  • -s:变更默认终端

  • -u:修改uid

group 组名 参数 -g -n -o

  • -g:修改组的gid
  • -n:修改组的名称
  • -o:强制设置重复的gid

chage命令

chage参数-l -m -M -W -I -E -d 用户名

  • 可以使用chage命令修改年龄等消息
  • 可以不带参数
  • -l:列出账户口令的各个属性值
  • -m:指定最小密码年龄
  • -M:指定最大密码年龄
  • -W:密码过期多少天前警告
  • -I:密码过期多少天后停用用户
  • -E:用户账户到期作废的日期
  • -d:设置上一次密码修改的日期

8.用户和组相关的文件

  • 可以使用pwck命令检查/etc/passwd和/etc/shadow文件的字段的完整性(是否一致)
  • 可以使用grpck命令检查/etc/group和/etc/group文件的字段的完整性(字段是否一致)

用户的默认配置信息文件(etc/login.defs)

  • 新创建用户没有指定的信息都从该文件获取

/etc/passwd

  • 用户的配置文件,记录用户的各种信息
  • 每行的含义:

用户名:口令(密码):用户标识符(uid):组标识符(gid):注释性描述:主目录:登录的shell

/etc/shadow

  • 口令的配置文件
  • 每行的含义

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

/etc/group

  • 组的配置文件
  • 每行的含义

/etc/sudoers

  • 管理员的配置文件

给用户组设置密码(gpasswd命令)

gpasswd 用户 组 参数 -a -d -r -A

  • -a:将用户加入到组
  • -d:将用户从组中删除
  • -r:取消组群的密码
  • -A:给组群指派管理员

4.运行级别

  • 一共有七种运行级别
  • 0(shutdown.target):关机
  • 1( emergency.target):单用户模式(在该模式下可以找回丢失密码),不能远程登陆
  • 2(rescure.target):多用户状态没有网络服务
  • 3(multi-user target):多用户状态有网络服务
  • 4:系统未使用保留给用户
  • 5(graphical.target):图形化界面(多用户的)
  • 6:系统重启

切换运行级别

init 参数

  • 例如:init 5,切换为图形化界面
  • 获得当前的运行级别

systemctl get-default

  • 修改默认的运行级别

    systemctl set-default multi-user.target,默认运行级别修改为多用户有网络模式

  • 开机流程

graph LR;
start[(开机)]--->step1[BIOS];
step1--->step2[&#47boot];
step2--->step3[systemd进程1];
step3--->step4[运行级别];
step4--->result[(运行级别对应的服务)]

5.找回root密码(针对contos7以上的版本)

  1. 重启系统,在此界面按“e”

  2. 找到inux16,并在该行最后添加“init=bin/sh”,然后按” Ctrl + x “进入单用户模式

  1. 输入"mount-o remount,rw/",然后回车

4.输入passwd,设置root密码

  1. 输入“touch /.autorelabel”,再输入“exec /sbin/init”

  2. 等待重启,新密码生效

6.虚拟机的三种网络连接模式

  1. 桥接模式:分配和主机在同一网段的ip,同一网段的主机数量过多时,可能会发生ip冲突,可以访问到外部网络,外部网络也可以访问到虚拟主机
  2. NAT(网络连接转换)模式:和主机建立独立的连接,可以通过主机访问到外部网络,但外部网络不能访问到虚拟主机,不会发生ip冲突
  3. 主机模式:完完全全独立的虚拟主机,不能访问到外部网络,外部网络也不能访问到虚拟主机

7.文件/目录管理,及权限管理

  • 文件信息详解

  • 第0位代表文件的类,l:代表链接,d:代表目录,c:代表字符设备文件,b:代表块设备

  • 2,第1~3位代表所有者拥有的权限(user)

  • 3.第4~6位代表所在组拥有的权限(group)

  • 4第7~9位代表其他组拥有的权限(other)

  • r:表示可读,用数字表示r=4

  • w:代表可写,可以修改文件,如果要删除文件需要对文件所在目录有写的权限,用数字表示w=2

  • x:代表可执行,可以进入目录,用数字表示x=1

  • rwx= 4+2+1=7

1. 修改文件/目录所有者

  • 如果是目录加上参数 -R 可以使子文件/子目录也生效

chown 用户名 文件/目录名

2.修改文件/目录所在组

  • 如果是目录加上参数 -R 可以使子文件/子目录也生效

chgrp 组名 文件/目录名

3.权限的修改

chmod 参数+ - = u g o a 文件/目录名`

  • +:添加权限

  • -:删除权限

  • =:赋予权限

  • u:所有者

  • g:所在组

  • o:其他用户

  • a:所有人(相当于u、g、o的总和)

    chmod u=rwx,g=rw,o=r ./aa.txt

    • 给文件aa.txt的所有者赋予可读、可写、可执行的权限,所在组赋予可读、可写的权限,其他用户赋予可读的权限

    chmod o+w bb.txt

    • 给文件bb.txt的其他用户添加可写的权限

    chmod a-x cc.txt

    • 给文件cc.txt的所有用户删除可执行的权限

8.crond(周期定时任务)

crontab 参数 -e -l -r

  • -e:编辑crondtab定时任务

  • -l:查询crontab任务

  • -r:删除当前用户的所有crontab任务

  • service crond restart 表示重启任务调度

  • cornd任务的执行周期取决于该部分(时间占位符(*))

  • 特殊的符号

    • *:代表任何时间,比如第一个*表示一个小时中的每分钟执行一次

    • ,(逗号):代表不连续的时间,比如0 8,12,16 * * *表示每天的8:00,12:00,16:00执行一次

    • -:表示连续的时间,比如0 5 * * 1-6表示周一到周六的凌晨5:00执行一次

    • */n:表示每隔多久执行一次比如*/1 * * * *表示每一分钟都执行一次

    1. 第一个"*“表示一个小时的第n分钟执行一次(范围:0~59)
    2. 第二个”*"表示一天的第n小时执行一次(0~23】
    3. 第三个“*“表示一个月的第n天执行一次(1~31)
    4. 第四个”*"表示一年的第n个月执行一次(1~12)
    5. 第五个”*"表示一个星期的星期n执行一次(0~7,0和7都代表星期天)
  • 五个部分的和就是一个执行周期

9.at(一次性定时任务)

at参数-m -I -d -v -c -V -q -f -t 时间(hh:mm) (midnight,noon,teatime) (AM,PM) ()

alt 233

  • Ctrl + D:输入两次Ctrl + D表示结束任务指令的输入

  • -m:当任务结束后,给用户发邮件,即使没有标准输出

  • -I:atq(查询)的别名

  • -d:atrm(删除)的别名

  • -v:显示任务将被执行的时间

  • -c:打印任务的内容到标准输出

  • -V:显示版本信息

  • -q(队列):使用指定队列

  • -f(文件):从指定文件读入任务,而不是从标准输入读入

  • -t(时间参数):以时间参数的形式提交要运行的任务

  • at指定时间的方式

    1. 接受在当天的hh:mm(小时:分钟)式的时间指定,假如该时间已过去,那么就放在第二天执行。例如:
      04:00
    2. 使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指
      定时间,
    3. 采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午,刚如:12pm
    4. 指定命令执行的具体日期,指定格式为month day(月日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 2021-03-1
    5. 使用相对计时法,指定格式为:now+count time-units,now就是当前时间,time-units是时间单位,
      这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期),count是时间的数量,几天,几小时.例知:now+5 minutes(五分钟后执行)
    6. 直接使用tody(今天)、tomorrow(明天)来指定完成命令的时间,
  • 使用at定时任务,一定要启动atd

  • 存在at任务时,atd会定时(60秒)去检测任务,有符合要求的任务就执行,执行后任务就删除了

10.防火墙相关的指令

  • 查看防火墙的状态:firewall-cmd --state

  • 开启防火墙:systemctl start firewall.service

  • 关闭防火墙:systemctl stop firewall.service

  • 防火墙重启:systemctl restart firewall.service

  • 重新加载防火墙:firewall-cmd --reload

  • 添加开放端口:firewall-cmd --zone=public --add-port=443/tcp --permanent

    • --zone=public:表示作用域是公共的
    • --add-port=443/tcp:添加tcp协议的443端口
    • --permanent:表示永久生效,可以不加

  • 关闭端口:firewall-cmd --zone=public --remove-port=8080/tcp --permanent

  • 查看已开启的端口:firewall-cmd --list-ports

11.linux磁盘分区和挂载

  • linux硬盘分为IDE硬盘和SCSI硬盘,基本上使用的是SCSI硬盘

查看所有设备的挂载情况

lsblk或者lsblk -f

硬盘分区(fdisk)

fdisk 要分区的硬盘

  • m:参看菜单
  • p:显示磁盘分区
  • n:新增分区
  • d:删除分区
  • w:写入磁盘分区的修改,保存,退出

硬盘格式化,创建文件系统(mkfs)

mkfs -t ext4 /dev/sdb1

磁盘挂载(mount)

mount 要挂载的磁盘分区 挂载的位置

磁盘的卸载(umount)

umount 磁盘的名称

磁盘的自动挂载

  • 修改/etc/fstab文件实现自动挂载

检查硬盘的完整性(fsck)

fsck参数-t硬盘的位置

  • -t:检查的文件系统类型

磁盘情况查看-工作中实用指令、

  1. 统计/etc目录下的文件个数

    ls -l /etc |grep '^- |wc -l'

    • 使用ls查询所有目录
    • 使用grep搭配正则表达式过滤文件
    • 使用wc统计数量

  2. 统计/etc目录下文件夹的数量

    ls -l /etc |grep '^d' |wc -l

  3. 统计/etc目录下的文件个数,包括子文件夹的文件

    ls -lR /etc |grep '^-' |wc -l

  4. 统计/etc目录下文件夹的数量,包括子文件夹

    ls -lR /etc |grep '^d' |wc -l

  5. 以树状显示/etc目录结构

tree /etc

LVM磁盘管理

  • LVM(Logical Volume Manager)逻辑卷管理,是在硬盘分区和文件系统之间添加的一个逻辑层,为文件系统屏蔽下层硬盘分区布局,并提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在硬盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越物理硬盘。当服务器添加了新的硬盘后,管理员不必将原有的文件移动到新的硬盘上,而是通过LVM直接扩展文件系统来跨越物理硬盘。
  • 物理存储介质(The physical media):LVM存储介质,可以是硬盘分区、整个硬盘、raid阵列或SAN硬盘。设备必须初始化为LVM物理卷,才能与LVM结合使用。
  • 物理卷PV(physical volume):物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质比较却包含与LVM相关的管理参数,创建物理卷可以用硬盘分区,也可以用硬盘本身。
  • 卷组VG(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,一个卷组VG由一个或多个物理卷PV组成。可以在卷组VG上建立逻辑卷LV。
  • 逻辑卷LV(logical volume):类似于非LVM系统中的硬盘分区,逻辑卷LV建立在卷组VG之上。在逻辑卷LV之上建立文件系统。
  • 物理块PE(physical Extent):物理卷PV中可以分配的最小存储单元,PE的大小可以指定,默认为4MB
  • 逻辑块LE(Logical Extent):逻辑卷LV中可以分配的最小存储单元,在同一卷组VG中LE的大小和PE是相同的,并且一一相对。
  • 卷组(VG)是LVM中使用的最高级别的抽象。 它将逻辑卷和物理卷集合在一起成为一个管理单元
graph TB;
subgraph VG[卷组:VG];
subgraph PV[物理卷:PV];
subgraph LV[逻辑卷:LV];
subgraph PE[物理块:PE];
subgraph LE[逻辑块:LE];
end
end
end
end
end

LVM常用命令

[root@centos7 ~]$ pv                                                   # 使用tab按键获取pv相关命令
pvchange   pvck       pvcreate   pvdisplay  pvmove     pvremove   pvresize   pvs        pvscan
[root@centos7 ~]$ vg                                                   # 使用tabl按键获取vg相关的命令
vgcfgbackup    vgck           vgdisplay      vgimport       vgmknodes      vgrename       vgsplit
vgcfgrestore   vgconvert      vgexport       vgimportclone  vgreduce       vgs            
vgchange       vgcreate       vgextend       vgmerge        vgremove       vgscan         
[root@centos7 ~]$ lv                                                   # 使用tabl按键获取lv先关的命令
lvchange     lvdisplay    lvmconf      lvmdump      lvmsadc      lvremove     lvs          
lvconvert    lvextend     lvmconfig    lvmetad      lvmsar       lvrename     lvscan       
lvcreate     lvm          lvmdiskscan  lvmpolld     lvreduce     lvresize
  • pv打头的:代表pv相关的命令
  • vg带头的:代表vg相关的命令
  • lv带头的: 代表lv相关的命令
  • create:创建相关
  • remove:移除相关
  • display:显示相关
  • import:导入 相关
  • export:导出相关
  • rename:重命名
  • vgchange:改变状态相关
  • extend:扩展相关(扩容)
  • reduce:缩进相关(缩容)

LVM的使用演示

  • 创建(使用pvcreate命令)物理卷(PV),关联到LVM磁盘管理系统

111

  • 创建(使用vgcreate命令)一个卷组(VG)

  • 创建(使用lvcreate命令)一个逻辑卷(LV),指定大小使用"-L"参数,指定名称使用"-n"参数

  • 给逻辑卷(LV)扩容(使用lvextend命令)

  • 查看磁盘文件系统的类型

mount |grep root

  • 刷新文件系统

    • resize2fs:针对的是ext2、ext3、ext4文件系统
    • xfs_growfs:针对的是xfs文件系统

  • 挂载

  • 自动挂载,将挂载写入/etc/fstab

网络

  • ifconfig:查看网络的IP相关信息,在Linux下是ifconfig,在Windows下是ipconfig

配置静态ip

  • 编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件,设置静态ip
  • 将HDCP改为static
  • 添加静态ip地址和网关

杨逸

  • 使用service network restart命令重启网络服务,使配置生效
  • 修改虚拟网卡,使虚拟机能访问到外网

杨逸

设置主机名和host的映射

  • 就是将ip地址与域名映射起来,通过hosts文件配置ip与域名的关系
  • window系统的hosts文件在C:\Windows\System32\drivers\etc\hosts路径下
  • linux系统的hosts文件在/etc/hosts路径下
  • 对windows系统的hosts文件进行修改

  • 对Linux系统下的hosts文件进行修改

  • 对域名解析的流程
    1. 先到系统或浏览器缓存中查询,如果没有查询到
    2. 再到hosts文件中查询,如果也没有查询到
    3. 最后到DNS域名解析服务器中查询,如果还没有,就返回错误信息
  • windows系统中,查看DNS(域名)解析缓存的命令ipconfig /displaydns,清除DSN缓存的命令ipconfig flushdns

杨逸

graph TB;
start[(访问一个域名)]--查询-->step1{系统或浏览器中的域名解析缓存是否存在对应的解析};
step1--是-->result[(返回域名对应的ip)];
step2--是-->result;
step3--是-->result;
result-.返回ip.->start;
step1--否-->step2{继续查询hosts文件是否存在对应的解析};
step2--否-->step3{查询DNS域名解析服务器是否存在对应的解析};
step3-.在DNS域名解析服务器也没有对应的解析,返回错误信息.->start;

进程管理

查看进程

  • ps参数-a -x -u -e -f
  • -a:显示当前的所有进程
  • -u:以用户的格式显示进程信息
  • -x:显示后台进程运行的参数
  • -e:显示所有进程
  • -f:显示进程的父进程

杨逸

杨逸

  • 进程字段的含义:
    • USER:该进程所属的用户
    • PID:进程的id编号
    • PPID:父进程的进程id编号
    • C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表
      明进程是I/O密集型运算,执行优先级会提高
    • %CPU:占用cpu的百分比
    • %MEM:占用物理内存的百分比
    • VSZ:进程占用的虚拟内存大小(单位:KB)
    • RSS:进程占用的物理内存大小(单位:KB)
    • TTY:终端名称,缩写
    • STAT:进程状态,其中S-睡眠,S-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z僵死进程,T被跟踪或者被停止等等
    • STIME:进程启动的时间
    • STARTED:进程的启动时间
    • TIME:CPU时间,即进程使用CPU的总时间
    • COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
    • CMD:启动进程所用的命令和参数

终止进程

  • kill参数-9进程号(进程id)
  • -9:表示强制终止进程,有些时候系统会忽视kill命令,使用参数-9可以阻止系统的忽视,强制终止进程
  • kill命令是通过进程号终止进程的
  • killall进程名
  • killall是通过进程名称终止进程的,支持通配符,会终止与该进程相关的进程,包括子进程

杨逸

查看进程树(pstree)

  • pstree参数-p -u
  • -u:以用户树的形式显示
  • -p:以进程号的形式显示

杨逸

服务(Service)管理

  • 一个服务就是一个进程
  • service服务名 参数start stop restart status reload
  • start:表示启动服务
  • stop:表示停止服务
  • restart:表示重启服务
  • status:表示查看服务的状态
  • reload:表示重新加载服务

杨逸

  • 在Centos7.0版本后,很多服务不再使用service命令进行管理,而是使用servicectl命令进行管理
  • 使用setup可以查看所有的服务,服务分为两部分,一部分是使用service命令管理的,另一部分是使用servicectl命令进行管理的,带*的服务表示开机自启

杨逸

chkconfig命令

  • chkconfig --list:可以查看各个服务在不同运行级别的自启情况

杨逸

  • chkconfig --level运行级别 服务名 off 或者 on
  • 将运行级别3的网络服务自启设置为关,然后在设置为开

杨逸

使用systemctl管理服务

systemctl服务管理命令

  • systemctl 参数 start stop restart status 服务名
    • start:启动服务
    • stop:停止服务
    • restart:重启服务
    • status:查看服务的状态

杨逸

  • /usr/lib/systemd/system目录下可以查看所有服务的名称

杨逸

systemctl服务自启管理

  • systemctl list-unit-files:查看所有服务是否可以开机自启
  • systemctl enable 服务名:设置服务开机可以自启(同时设置运行级别3和5)
  • systemctl disable 服务名: 设置服务不能开机自启(同时设置运行级别3和5)
  • systemctl is-enabled 服务名:查询服务是否能开机自启

杨逸

firewall防火墙命令

  • firewall-cmd --permanent --add-prot=端口号/协议:防火墙开放端口
  • firewall-cmd --permanent --remove-prot=端口号/协议:防火墙关闭端口
  • firewall-cmd --reload:重新载入防火墙
  • firewall-cmd --query-prot=端口号/协议:查询防火墙是否开发该端口

杨逸

  • netstat -anp:查看系统网络的状态

杨逸

进程监控

  • top 参数 -d -i -p交互参数(进入监控状态后使用)P M N u k q R
    • -d:指定监控更新的间隔时间,默认是三秒
    • -i:不显示任何闲置或僵死进程
    • -p:指定监控的进程的id,用于仅监控某个进程
  • 交互参数
    • P:以cpu的使用率排序进程
    • M:以内存的使用率排序进程
    • N:以进程id(PID)排序进程
    • u:输入"u",然后输入用户名,查看属于某个用户的进程
    • k:输入"k",然后输入进程的id,终止某个进程
    • q:退出进程监控
    • R:颠倒当前排序的顺序
  • 进程监控字段的含义:

杨逸

网络监控

  • netstat参数-a -n -p
  • -a:显示所有的网络连接
  • -n:显示网络连接的ip地址,而不是域名
  • -p:显示连接的关联进程id和进程名

杨逸

linux的包管理

rpm包管理工具

  • rpm软件包的后缀为.rpm
  • 使用rpm安装软件包不会处理软件包之间的依赖关系,需要注意安装的顺序,否则会安装失败
  • rpm参数-q -qa -qi -ql -qf -e -i -v -h
    • -q:查询已安装的软件包
    • -qa:查询所有已经安装的软件包
    • -qi:查询软件包的详细信息
    • -ql:查询软件包含有什么文件
    • -qf:查询一个文件属于哪个软件包
    • -e:卸载软件包,卸载某些是其他软件包依赖的软件包时,会出现警告(不给卸载),再加一个--nodeps参数强制卸载
    • -i:安装软件包,参数后加软件包的路径和软件包名
    • -v:显示提示信息
    • -h:显示命令操作的进度
    • 一般使用-ivh安装软件包
  • 卸载和安装firefox

杨逸

yum包管理工具

  • yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包
  • yum list:查询指定服务器中所有可用的yum软件包.或显示软件包的信息

杨逸

  • yum install:安装软件包
  • yum update:更新软件包
  • yum check-update:检查软件包是否可以更新
  • yum remoove:删除软件包
  • yum localinstall:显示本地安装的yum软件包
  • yum resolvedep:显示软件包的依赖关系
  • yum deplist:显示所有软件包的依赖关系

Linux下的javaee环境搭建

安装jdk

  • 使用xftp将jdk的压缩包上传到Linux系统
  • 使用tar -zxvf命令解压压缩包
  • 编辑/etc/profile文件,配置环境变量
  • 使用source /etc/profile命令使配置生效

杨逸

安装tomcat

  • 将tomcat压缩包上传到/opt/tomcat/目录
  • 解压tomcat的压缩包
  • 使用tomcat的bin目录下的startup.sh脚本文件启动tomcat

安装mysql

  • 使用wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar命令获取mysql的压缩包

  • 将mysql的压缩包解压

  • 删除linux自带的mariadb数据库,centos7.6自带的类mysql数据库是mariadb,会跟mysql冲突,要先删除

    • 使用rpm -qa|grep mariadb查询mariadb数据库是否存在

    杨逸

  • 使用rpm -e命令卸载mariadb数据库,将习惯的软件包都卸载,必要是使用--nodeps参数强制删除

杨逸

  • 使用rpm -ivh命令正式安装mysql,依次安装mysql的软件包
    1. common软件包
    2. libs软件包
    3. client软件包
    4. service软件包
      • 多条命令写在一行时使用分号";"区别,一行写不下时使用反斜杠\换行

杨逸

  • 使用systemctl start mysqld.service启动MySQL数据库
  • 设置root用户的密码,系统会给root用户设置一个随机的密码,使用grep "password" /var/log/mysqld.log查看系统设置的初始密码

杨逸

  • 使用set global validate_password_policy=0;将密码策略设为0,默认为1,最高为2

杨逸

  • 使用set password for root@localhost = password('MIMA2004@mysql')将root用户的密码设为"MIMA2004@mysql"
  • 使用flush privileges刷新密码配置

杨逸

安装idea

  • 将idea的压缩包上传到/opt/idea目录
  • 将idea的压缩包解压
  • 运行idea的bin/idea.sh脚本运行idea,需要图形化界面环境运行,远程登陆运行会报错

shell脚本

  • shell脚本的后缀是.sh
  • shell脚本中使用$美元符号引用变量,变量的赋值与其他编程语言一样,如var=1,将1赋值给var变量

shell脚本快速入门

  • 在shell文件的第一行指定shell脚本的解释器,#!/bin/bash
  • 使用echo打印变量信息或字符

杨逸

  • shell脚本需要可执行权限才能运行,没有可执行权限也可以使用sh hello.sh命令运行

杨逸

shell编程中的注释

  • #注释内容:单行注释,以井号开头
  • :<<! 注释内容 !:多行注释,以冒号开头,接两个小于号,然后接一对感叹号,在感叹号中写注释内容,注意空格间隔
  • 案例
#我是单行注释

:<<! 我是多行注释 
注释一
注释二
... !

shell编程的变量

  • Linux中shell变量有两种:系统变量和自定义变量
  • 系统变量有:$HOME $PWD $SHELL $USER等等

杨逸

  • 使用set命令可以查看当前shell的所有变量

杨逸

变量的和常量定义

  • 变量名=值:变量的定义,等号两边不能有空格
  • unset 变量名:撤销变量
  • readonly 常量名=值:常量的定义,常量不能被unset
  • $变量名:变量的使用,用一个美元符号加变量名引用一个变量
  • 案例
#!/bin/bash
#定义一个变量
A=1;
#输出变量的值,使用美元符号引用变量
echo A=$A;
echo "A=$A";
#撤销一个变量
unset A;
#尝试输出撤销的变量
echo A=$A;
echo "A=$A";
#定义一个常量
readonly B=2;
#输出常量的值
echo "B=$B";
  • 结果

杨逸

返回命令的结果给变量

  • 语法:
#使用反引号将命令括起来
变量名=`命令`;
#使用美元符号加小括号
变量名=$(命令);
  • 案例
#!/bin/bash
#使用变量接受命令的返回
A=`date`;
B=$(date);
C=$(cal);
#输出变量的值
echo "使用反引号接受的值=$A";
echo "使用美元符号接受的值=$B";
echo "$C";
  • 结果

杨逸

位置参数变量

  • 位置参数就是执行shell脚本时传进来的参数,比如./position.sh 100 200,
  • 第一个位置参数变量就是100,在shell脚本中使用${1}表示,第二个位置参数变量就是200,使用${2}表示

杨逸

  • ${0}:表示命令本身
  • ${n}:表示第n个位置参数变量,n为各位数时可以省略大括号,直接用数字
  • $*:表示所有的位置参数变量,把所有位置参数变量当作一个整体
  • $@:也是表示所有位置参数变量,不过不是把所有参数当作一个整体,而是有区别的
  • $#:表示位置参数变量的个数
  • 代码
#!/bin/bash
echo "第一个位置参数=$1,第二个位置参数=$2";
echo "\$\*所有的位置参数=$*";
echo "\$\@所有的位置参数=$@";
echo "位置参数的个数=$#";
  • 截图

杨逸

设置环境变量

  • 环境变量一般配置在/etc/profile文件中

  • export 变量名=值:将一个变量设置为环境变量

  • source 配置文件:重新加载环境变量的配置文件,使新加入的环境变量生效

  • echo $变量名:查看环境变量的值

  • 案例:

# 添加java的环境变量
export JAVA_HOME=/usr/local/java/
#添加tomcat的环境变量
export TOMCAT_HOME=/opt/tomcat/apache-tomcat-8.5.89
# 使用冒号(":")将两个环境变量关联在一起
export PATH=$JAVA_HOME/bin:$PATH
  • 结果

杨逸

预定义变量

  • 预定义变量是shell设计者预先定义的变量,可以直接在shell脚本中使用
  • $$:表示当前进程的进程号pid
  • $!:表示最后一个后台进程的进程号pid
  • $?:表示当前最后一次命令执行的状态,零(0)表示正常执行成功,非零表示没有执行成功
#!/bin/bash
echo "当前进程号=$$";
#运行一个后台脚本,并获取它的进程号
/root/shcode/hello.sh &
echo "当前最后一个后台进程的pid=$!";
echo "当前最后一个命令的执行结果=$?";

杨逸

运算式

  • 有三种运算式的写法,第一种:$((运算式)),第二种:$[运算式],第三种:expr 运算式,使用第三种运算式要返回结果时,需要使用反引号括("`")起来,运算式的每个元素还需要使用空格间隔
  • +:加法运算符
  • -:减法运算符
  • *:乘法运算符,注意使用第三种运算式时,乘法需要使用反斜杠("\")转义
  • /:乘法运算符
#!/bin/bash
#案例一:求(2+3)*4的结果
#运算式一
RES1=$(((2+3)*4));
#使用"$"符号引用变量
echo "运算式一:(2+3)*4=$RES1";
#运算式二
RES2=$[(2+3)*4];
echo "运算式二:(2+3)*4=$RES2";
#运算式三,注意乘法需要使用反斜杠,运算元素之间还需要空格间隔
TEMP=`expr 2 + 3`;
RES3=`expr $TEMP \* 4`;
echo "运算式三:(2+3)*4=$RES3";
#案例二:使用位置参数变量求和(20+50)
RES4=$[$1+$2];
echo "位置参数变量求和=$RES4";

杨逸

条件判断

  • 逻辑表达式的语法:[ 逻辑表达式 ],在中括号写逻辑表达式,开始和结束都要有空格
  • 逻辑表达式非空返回真,0也是真,其他的数值都是假,空串是假
  • 支持与(&&)和或(||)运算
  • 常用的判断条件
    • =:判断字符串是否相等
    • !:判断取反
    • 按数值判断
      • -lt:小于
      • -le:小于等于
      • -eq:等于
      • -gt:大于
      • -ge:大于等于
      • -ne:不等于
    • 按文件权限判断
      • -r是否有读的权限
      • -w:是否有写的权限
      • -x:是否有可执行的权限
    • 按文件类型判断
      • -f:文件存在,且文件是一个常规文件
      • -e:文件存在
      • -d:文件存在,且文件是一个目录
  • 单分支判断的语法:以if标志开头,以fi标志结束,then表示程序体的开始,else后不用跟then
if [ 逻辑表达式 ]
then
	程序体;
else
	程序体;    
fi
  • 案例
#!/bin/nash
#案例一:判断"ok"等于"ok"
if [ "ok" = "ok" ]
then
        echo "ok=ok";
fi
#案例二:判断23大于22
if [ 23 -ge 22 ]
then
        echo "23大于22";
fi
#案例三:判断文件/root/shcode/aaa.text文件是否存在
if [ -f /root/shcode/aaa.text ]
then
        echo "存在";
fi
  • 结果

杨逸

  • 多分支判断语法:多分支使用elif标志下一个逻辑判断,还是以iffi标志开始和结束,以then标志程序体的开始
if [ 逻辑表达式 ]
then 
	程序体;
elif [ 逻辑表达式 ]
then
	程序体;
else
	程序体
fi
  • 案例
#!/bin/bash
if [ $1 -ge 60 ]
then
        echo "及格了";
elif [ $1 -lt 60 ]
then
        echo "不及格";
else
        echo "数据不合法";
fi
  • 结果

杨逸

流程控制(case语句)

  • 与java的switch语句很像
  • 语法:case标志开始,esac(以case反过来写)标志结束,以;;两个分号表示一个流程块的结束
  • 值n):一个值加右小括号表示与变量进行匹配的值,只能匹配字符串
  • *):星号加右小括号表示没有匹配上的其他情况
case 变量 in
值一)
	程序体
;;
值二)
	程序体
;;
*)
	程序体
esac    
  • 案例:根据输入的数字输出对应的星期几
#!/bin/bash
case $1 in
'1')
        echo '星期一';;
'2')
        echo '星期二';;
'3')
        echo '星期三';;
*)
        echo 'other...';;
esac
  • 结果

杨逸

for循环

  • 语法:do标志程序体的开始,done标志程序体的结束
  • 语法一:使用in关键字,循环的是具体的值,与Python的for循环类似
  • 语法二:使用两层小括号,注意空格分割,循环是数值,与Java的for循环类似
# 语法一:
for 变量 in 值1 值2 ...
do
	程序体;
done
# 语法二:
for(( 初始值;循环条件;循环变量的变化 ))
do
	程序体;
done
  • 案例一:使用语法一,输出传进去的参数,可以看到$*$@的区别
#!/bin/bash
#使用$*输出
for i in "$*"
do
        echo $i;
done
echo '===================';
#使用$@输出
for j in $@
do
        echo $j;
done
echo '===================';
#输出事先准备好的数组
for k in '1' '2' '3'
do
        echo $k;
done
  • 结果

yangyi

  • 案例二:使用语法二,实现从1累加到100
#!/bin/bash
#从1累加到n
SUM=0;
for(( i=1; i<=$1; i++))
do
        SUM=$[$SUM+$i];
done
echo "结果=$SUM";
  • 结果

杨逸

while循环

  • 语法:注意while与逻辑表达式的空格
while [ 逻辑表达式 ]
do
	程序体;
done
  • 案例:从1累加到100
#!/bin/bash
#1累加到100
i=0;
SUM=0;
while [ $i -le 100 ]
do
        SUM=$[$SUM+$i];
        i=$[$i+1];
done
echo "结果=$SUM";
  • 结果

杨逸

read输入

  • read 参数 -p -t 变量
  • -p:指定获取输入时的提示信息
  • -t:指定获取输入时的超时时间
  • 使用read可以从键盘获取用户的输入
  • 案例:
#!/bin/bash
#获取用户输入的数值
read  -p "请输入一个数字=" NUM1;
echo "用户输入的unm1=$NUM1";
#获取用户输入的num2,设置超时时长
read  -t 10 -p "请输入num2=" NUM2;
echo "用户输入的num2=$NUM2";
  • 结果

杨逸

函数

系统函数

  • basename:常用于获取文件名,它有两个参数,一个是文件的绝对路径,另一个是文件的后缀名
    • 当传一个文件的绝对路径时,会返回文件的完整名称,包括后缀
    • 当即传了文件的绝对路径又传了文件的后缀名,只返回文件的名称,不包含后缀

杨逸

  • dirname:常用于获取文件的所在的目录,它需要一个参数,文件的绝对路径

杨逸

自定义函数

  • 语法:
function 函数名 (形参列表)
{
	程序体;
	return 返回值;
}
  • 案例:
#!/bin/bash
#编写一个求和函数
function sum1 ()
{
#通过位置参数变量,获取传进来的参数
#也可以直接通过变量名获取穿进来的参数
	RESULT=$[$n1+$n2];
	return  $RESULT;
}

# function关键字也可以省略
sum2 ()
{
	RESULT=$[$n1+$n2];
	return $RESULT;
}

#接受用户的输入
read -p "请输入第一个数:" n1;
read -p "请输入第二个数:" n2;
#调用函数sum1
sum1;
#通过$?获取函数的返回值,返回值只能是0-255之间的数值
res1=$?;
#调用函数sum1
sum2 $n1 $n2;
#通过$?获取函数的返回值,返回值只能是0-255之间的数值
res2=$?;

echo "sum1结果是=$res1";
echo "sum2结果是=$res2";
  • 结果

杨逸

shell编程定时备份数据库

  • 编写一个备份数据库的shell脚本
#!/bin/bash
echo "开始备份数据库";
#备份目录
BACKUP=/data/backup/db
#获取当前时间,年月日时分秒
TIME=$(date +%Y-%m-%d_%H%M%S);
echo "$TIME";
#数据库地址
HOST=localhost;
#数据库用户名
DB_USER=root;
#数据库密码
DB_PASSWD=MIMA2004@mysql;
#备份的数据库名
DB_NAME=my_test
#创建备份目录
[ ! -d "${BACKUP}/${TIME}" ] && mkdir -p "${BACKUP}/${TIME}";

#登陆数据库开始备份
mysqldump -u${DB_USER} -p${DB_PASSWD} --host=${HOST} -q -R --databases ${DB_NAME} | gzip > ${BACKUP}/${TIME}/${TIME}.sql.gz;

#将备份文件打包成tar.gz格式
cd ${BACKUP};
tar -zcvf ${TIME}.tar.gz ${TIME};
#删除对应的备份目录
rm -rf ${BACJUP}/${TIME};
#删除10天前的备份文件
find ${BACKUP} -name "*.tar.gz" -atime +10 -exec rm -rf {} \;
echo "数据库${DB_NAME}备份完成,${TIME}"; 
  • 结果

杨逸

  • 使用crond周期定时任务调用数据库备份脚本
30 2 * * * /root/shcode/dbbackup.sh

杨逸

Linux系统-Ubuntu

  • Python开发者中流行的Linux系统是Ubuntu
  • Ubuntu默认安装了Python的开发环境
  • 输入python3进入Python的开发环境
  • 在Python的开发环境中输入quit()退出开发环境,回到终端

杨逸

在Ubuntu中设置root用户的密码,并切换到root用户

  • Ubuntu中默认登陆的是普通用户,想执行一些只有root用户才能执行的命令需要才命令前加上sudo
  • sudo password:给root用户设置密码
  • su root:切换为root用户,使用exit返回普通用户

杨逸

Ubuntu下的软件包管理工具(apt)

apt软件包管理工具换源

  • /etc/apt/source.list:apt软件包管理工具的源配置文件,记录了软件包的源地址
  • 使用sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup命令将源配置文件备份
  • 使用echo '' > ./sources.list命令将源配置文件清空,然后将清华源的配置拷贝进去
  • 阿里源的配置内容(Ubuntu 20.04LTS版本的配置)
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

# deb https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
  • 换源成功后,使用sudo apt-get update命令更新软件列表,检测配置是否修改成功

apt软件包管理的常用命令

  • sudo apt-get update:更新软件源和软件包列表

  • sudo apt-get install 软件包名:安装软件包

  • sudo apt-get remove 软件包名:删除软件包,但不删除配置文件,如要删除配置文件,需要带上参数--purge

  • sudo apt-cache show 软件包名:查看软件包的详细信息

  • sudo apt-get upgrade:更新所有已经安装的软件包

  • 案例:安装和卸载vim编辑器

    • 卸载

    杨逸

    • 安装

    杨逸

    • 查看详细信息

    杨逸

Ubuntu远程登陆使用SSH

  • Ubuntu默认没有安装sshd服务
  • 使用sudo apt-get install openssh.server命令安装sshd服务
  • 使用systemctl enable sshd命令设置sshd服务开机自启
  • 使用systemctl start sshd启动sshd服务
  • Ubuntu默认也没有安装网络监控工具,使用netstat命令时会报错
  • 使用sudo apt-get install net-tools命令安装网络监控工具

在Linux中一样ssh远程连接另一台linux机器

  • 需要目标机器开启sshd服务
  • 使用ssh 用户名@IP地址命令连接到另一台Linux机器

杨逸

  • 使用exitlogout退出远程连接的机器

杨逸

Ubuntu中配置静态ip

  • 编辑/etc/netplan/01-network-manager-all.yaml配置文件

杨逸

日志管理

  • 日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统
    的安全信息、邮件相关信息、各种服务相关信息等。
  • 日志对于安全来说也很重要,它记录了系统每天发生的各种事情,通过日志来检查错误发生的原因,或者受到攻击
    时攻击者留下的痕迹。
  • 可以这样理解日志是用来记录重大事件的工具
  • 日志一般保存在/var/log/目录下

系统常用的日志

杨逸

日志管理服务(rsyslogd)

  • centos7使用的日志管理服务是rsyslogd服务,centos6使用的日志管理服务是syslogd服务,两者是兼容的
  • /etc/rsyslog.conf文件是日志服务管理的配置文件
  • *.*:是日志服务管理配置文件的格式,第一个*表示日志的类型,第二个*表示日志的级别
    • 日志的类型:
      • auth:pam产生的日志
      • authpriv:ssh、fp等登录信息的验证信息
      • corn:时间任务相关
      • kern:内核相关
      • Ipr:打印相关
      • mail:邮件相关
      • mark(syslog)-rsyslog:服务内部的信息,时间标识
      • news:新闻组
      • user:用户程序产生的相关信息
      • uucp:unix to nuix copy主机之间相关的通信
      • local 1-7:自定义的日志设备
    • 日志的级别(越下面的级别越高,记录的信息越少):
      1. debug:有调试信息的,日志通信最多
      2. info:一般信息日志,最常用
      3. notice:最具有重要性的普通条件的信息
      4. warning:警告级别
      5. err:错误级别,阻止某个功能或者模块不能正常工作的信息
      6. crit:严重级别,阻止整个系统或者整个软件不能正常工作的信息
      7. alert:需要立刻修改的信息
      8. emerg:内核崩溃等重要信息
      9. none:什么都不记录
  • 日志信息的格式:事件发生的时间 发生事件的服务器主机名 发生事件的服务或进程:事件的详细信息

杨逸

  • 配置自己的日志记录

    • 编辑/etc/rsyslog.conf配置文件

    杨逸

日志轮替