Linux系统服务相关笔记

日志

• 系统和程序的“日记本”

记录系统、程序运行中发生的各种事件

通过查看日志,了解及排除故障

信息安全控制的“依据”

• 由系统服务rsyslog统一记录/管理

– 日志消息采用文本格式

– 主要记录事件发生的时间、主机、进程、内容

常见的日志文件

日志文件主要用途
/var/log/messages记录内核消息、各种服务的公共消息
/var/log/dmesg记录系统启动过程的各种消息
/var/log/cron记录与cron计划任务相关的消息
/var/log/maillog记录邮件收发相关的消息
/var/log/secure记录与访问限制相关的安全消息

日志分析

• 通用分析工具

– tail、tailf、less、grep等文本浏览/检索命令

– awk、sed等格式化过滤工具

tailf:实时跟踪日志消息

• users、who、w 命令

– 查看已登录的用户信息,详细度不同

• last、lastb 命令

– 查看最近登录成功/失败的用户信息

Linux内核定义的事件紧急程度

– 分为 0~7 共8种优先级别

– 其数值越小,表示对应事件越紧急/重要

0 EMERG(紧急) 会导致主机系统不可用的情况

1 ALERT(警告) 必须马上采取措施解决的问题

2 CRIT(严重) 比较严重的情况

3 ERR(错误) 运行出现错误

4 WARNING(提醒) 可能会影响系统功能的事件

5 NOTICE(注意) 不会影响系统但值得注意

6 INFO(信息) 一般信息

7 DEBUG(调试) 程序或系统调试信息等

• 提取由 systemd-journal 服务搜集的日志

– 主要包括内核/系统日志、服务日志

• 常见用法

– journalctl | grep 关键词

– journalctl -u 服务名 [-p 优先级]

– journalctl -n 消息条数

SELinux

SELinux的运行模式

– enforcing(强制)、permissive(宽松)

– disabled(彻底禁用)

– 任何模式变成disabled,都需要重启系统

切换运行模式

– 临时切换:setenforce 1|0

– 固定配置:/etc/selinux/config 文件

getenforce  #查看当前系统SELinux模式

setenforce  0  #临时设置当前SELinux模式

vim /etc/selinux/config

SELINUX=permissive

遗忘root的密码(破解系统root的密码)

前提:须是服务器的管理者,涉及重启服务器

破解密码思路

1)重启系统,进入 恢复模式

[root@A ~]# reboot

开启虚拟机A,在此界面按e键

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RVxln4tU-1608640104253)(系统服务.assets/20201116195113.gif)]

找到linux16该行,在该行的最后,空格输入 rd.break console=tty0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q5Erity1-1608640104256)(系统服务.assets/20201116195114.gif)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qnPLfa33-1608640104258)(系统服务.assets/20201116195115.gif)]

ctrl + x 启动,会看到switch_root#

2)以可写方式重新挂载 /,并切换到此环境

switch_root# chroot /sysroot #切换环境,切换到硬盘操作系统的环境

sh-4.4# mount -o remount,rw / #让根目录下所有数据,可以读也可以写入

3)重新设置root的密码

sh-4.4# echo 1 | passwd --stdin root

4)如果SELinux是强制模式,才需要重设SELinux策略(其他模式不需要做此操作)

sh-4.4# vim /etc/selinux/config #查看SELinux开机的运行模式

如果不想改变模式

sh-4.4# touch /.autorelabel #SELinux是强制模式,让SELinux失忆

5)强制重启系统完成修复

sh-4.4# reboot -f

服务管理

防火墙管理firewall

• 管理工具:firewall-cmd(命令)、firewall-config(图形工具)

• 根据所在的网络场所区分,预设保护规则集

• public:仅允许访问本机的ssh、dhcp、ping服务

• trusted:允许任何访问

• block:拒绝任何来访请求,有明确的回应

• drop:丢弃任何来访的数据包,没有明确的回应

• 防火墙判定的规则:

1.查看请求中源IP地址,查看自己所有区域,哪个区域有该源IP地址规则,则进入哪个区域

​ 2.进入默认区域(默认情况下为public)

rpm -q  firewalld 
 
firewall-cmd  --get-default-zone     #查看默认区域
firewall-cmd   --set-default-zone=trusted    #修改默认区域

firewall-cmd  --zone=public   --list-all   #查看区域规则
firewall-cmd  --zone=public   --add-service=http  #添加协议

#拒绝192.168.4.207的访问
firewall-cmd --zone=block    --add-source=192.168.4.207

#--permanent 永久
firewall-cmd --permanent --zone=public --add-service=http
success
firewall-cmd  --reload  #重新加载防火墙所有永久配置

上帝进程systemd

•Linux系统和服务管理器

–是内核引导之后加载的第一个初始化进程(PID=1)

–负责掌控整个Linux的运行/服务资源组合

•一个更高效的系统&服务管理器

–开机服务并行启动,各系统服务间的精确依赖

–配置目录:/etc/systemd/system/

–服务目录:/lib/systemd/system/

–主要管理工具:systemctl

systemctl  -t  service  --all  #列出所有的服务

systemctl  restart  服务名 	  #重起服务
systemctl  start   服务名 		#开启服务 
systemctl  stop   服务名 		#停止服务
systemctl  status  服务名		 #查看服务当前的状态

systemctl  enable  服务名 		#设置服务开机自启动
systemctl  disable  服务名 		#设置服务禁止开机自启动
systemctl  is-enabled  服务名	  #查看服务是否开机自启

管理运行级别

RHEL6:运行级别  300
0:关机      0个服务
1:单用户模式(基本功能的实现,破解Linux密码)      50个服务
2:多用户字符界面(不支持网络)       80个服务
3:多用户字符界面(支持网络)服务器默认的运行级别    100个服务
4:未定义        0个服务
5:图形界面      300个服务
6:重起          0个服务
切换运行级别:init  数字 



RHEL7:运行模式(运行级别)   
字符模式:multi-user.target
图形模式:graphical.target

当前直接切换到字符模式 
[root@svr7 /]# systemctl  isolate  multi-user.target    #相当于原来的init  3
	当前直接切换到图形模式
[root@svr7 /]# systemctl  isolate  graphical.target     #相当于原来的init  5



查看每次开机默认进入模式
[root@svr7 /]# systemctl   get-default
#设置永久策略,每次开机自动进入multi-user.target 
[root@svr7 /]# systemctl  set-default   multi-user.target 
[root@svr7 /]# reboot 

KVM

前期准备(VMware平台下虚拟机开启虚拟机)

内存调大

开启虚拟化

添加硬盘

扩展根设备的空间,把新加的硬盘加进来

[root@svr7 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   50G  0 disk 
sr0              11:0    1  9.6G  0 rom  /mnt/cdrom
[root@svr7 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 
[root@svr7 ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g                                             
  
[root@svr7 ~]# vgextend centos /dev/sdb
  Physical volume "/dev/sdb" successfully created.
  Volume group "centos" successfully extended
[root@svr7 ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree  
  centos   2   2   0 wz--n- 68.99g <50.00g


[root@svr7 ~]# lvextend -L 40G /dev/centos/root
  Size of logical volume centos/root changed from <17.00 GiB (4351 extents) to 40.00 GiB (10240 extents).
  Logical volume centos/root successfully resized.
[root@svr7 ~]# lvs
  LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- 40.00g                                                    
  swap centos -wi-ao----  2.00g                                                    
[root@svr7 ~]# df -h | grep root
/dev/mapper/centos-root   17G  6.0G   12G   35% /
[root@svr7 ~]# blkid /dev/centos/root
/dev/centos/root: UUID="e8cb8aba-6ba6-4d27-b0c7-fda8d6b0dc52" TYPE="xfs" 
[root@svr7 ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=1113856 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=4455424, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 4455424 to 10485760

部署安装KVM

• KVM虚拟化主要软件包

– qemu-kvm :为 kvm 提供底层仿真支持

– libvirt-daemon :libvirtd 守护进程,管理虚拟机

– libvirt-client :用户端软件,提供客户端管理命令

– libvirt-daemon-driver-qemu :libvirtd 连接 qemu 的驱动

– virt-manager :图形管理工具

[root@svr7 ~]# yum -y install qemu-kvm
[root@svr7 ~]# yum -y install libvirt-daemon
[root@svr7 ~]# yum -y install libvirt-client
[root@svr7 ~]# yum -y install libvirt-daemon-driver-qemu
[root@svr7 ~]# yum -y install virt-manager

virsh

virsh list #列出现在正在运行的虚拟机

virsh list --all #列出所有虚拟机

virsh  dominfo  xxxx #查看指定虚拟机xxxx的信息

virsh  nodeinfo #查看KVM节点(服务器)信息,即安装虚拟机软件的机子

virsh  shutdown xxxx #关机,可能失败
virsh  destory  xxxx#强制关机,百分百成功

virsh  start xxxx #开机

virsh autostart  xxxx    #设置开机自启动

virsh autostart  xxxx  --disable   #禁止开启自启动

KVM虚拟机的组成

xml配置文件:

定义虚拟机的名称,UUID,CPU,内存,虚拟磁盘,网卡等各种参数设置

xml文件默认存放路径: /etc/libvirt/qemu/

磁盘镜像文件:

保存虚拟机的操作系统及文档数据,镜像路径取决于xml配置文件中的定义

磁盘镜像文件默认存放路径: /var/lib/libvirt/images

命令行手动克隆虚拟机

复制配置文件(简单修改)和磁盘镜像文件即可

建立新的磁盘镜像文件

[root@svr7 ~]# cd /var/lib/libvirt/images/
[root@svr7 images]# ls
nsd2010.qcow2
[root@svr7 images]# cp nsd2010.qcow2 stu01.qcow2
[root@svr7 images]# ls
nsd2010.qcow2  stu01.qcow2

建立新的xml文件

[root@svr7 libvirt]# cd /etc/libvirt/qemu
[root@svr7 qemu]# ls
networks  nsd2010.xml
[root@svr7 qemu]# cp nsd2010.xml stu01.xml
[root@svr7 qemu]# ls
networks  nsd2010.xml  stu01.xml

修改xml

1.name
2.uuid 随便改或者删除
建议删除 linux识别时没有uuid会自动生成
3.虚拟机文件,source file对应虚拟机的
4.网卡mac address地址 建议删除自动生成

导入新的xml文件

virsh define 目录/xxx.xml

删除

取消定义
virsh undefine xxx
删除磁盘镜像文件
rm -rf /var/lib/libvirt/images/xxx.qcow2

三合一做法:

先复制磁盘镜像文件
virsh edit nsd2010(模版虚拟机)
编辑了域 dc01 XML 配置。
编辑完成即完成了
查看:
[root@svr7 images]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     dc01                           关闭
 -     nsd2010                        关闭
 -     stu01                          关闭

离线访问虚拟机

yum provides */guestmount #查看仓库中那个包产生

yum -y install libguestfs-tools-c

离线访问虚拟机

• 使用 guestmount 工具

– 支持离线挂载 raw、qcow2 格式虚拟机磁盘

– 可以在虚拟机关机的情况下,直接修改磁盘中的文档

– 方便对虚拟机定制、修复、脚本维护

​ 需要注意 SELinux 机制的影响 切换为permissive

基本用法

guestmount -a 虚拟机磁盘路径 -i  /挂载点

如:guestmount  -a  /var/lib/libvirt/images/tc01.qcow2  -i  /mnt/



ls   /mnt
umount    /mnt    #卸载

systemd Unit

配置Unit文件实现自定义systemctl控制的服务

在linux系统中,有些程序无法利用systemctl控制,就需要添加Unit文件

Unit文件语法格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aqy9vnQJ-1608640104262)(系统服务.assets/table004.png)]

Unit文件语法格式

[root@web1 ~]# systemctl                             #列出所有启动的服务
[root@web1 ~]# systemctl status   <服务名称>            #查看服务状态
[root@web1 ~]# systemctl start     <服务名称>        #启动服务状态
[root@web1 ~]# systemctl stop      <服务名称>        #关闭服务状态
[root@web1 ~]# systemctl restart  <服务名称>        #重启服务状态
[root@web1 ~]# systemctl enable  <服务名称>            #设置开机自启
[root@web1 ~]# systemctl enable --now  <服务名称>    #设置开机自启并启动
[root@web1 ~]# systemctl disable  <服务名称>        #禁止开机自启
[root@web1 ~]# systemctl enable  <服务名称>            #设置开机自启
[root@web1 ~]# systemctl is-active <服务名称>        #查看是否激活
[root@web1 ~]# systemctl is-enabled  <服务名称>        #查看是否开启自启
[root@web1 ~]# systemctl reboot                    #重启计算机
[root@web1 ~]# systemctl poweroff                     #关闭计算机

案例:编写一个nginx管理服务

[root@web1 ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The Nginx HTTP Server        #描述信息
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
#仅启动一个主进程的服务为simple,需要启动若干子进程的服务为forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT ${MAINPID}
[Install]
WantedBy=multi-user.target
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值