linux系统管理员

一 认识系统服务
二认识与分析登录文件
三启动流程、模组管理与loader
四网络设定与备份策略
五软件的安装  源代码与tarball
六软件的安装rpm   srpm与yum
七 xwindow 设置
八核心编译
 
 
 
 
 
一认识系统服务
daemon    
命令规则   无论如何   这些服务的名称后面都加上一个d   
centos7之前通过init来管理    
服务启动  关闭与观察方式:
/etc/init.d/下   的脚本文件   
语法:/etc/init.d/daemon start
/etc/init.d/daemon stop
/etc/init.d/daemon restart
/etc/init.d/daemon status
服务启动的分类:
stand alone 独立启动   该服务直接常驻在内存中   提供本机或用户的服务行为  反应比较快
super daemon 总管程序    由特殊的哦xinetd或inetd这两个纵观程序提供socket对应或port对应的管理。
服务的相依性
服务的执行等级的分类
init 根据user自定的执行等级  runlevel 来唤醒不同的服务   进入不同的操作界面   共分为7个等级    0 单人 模式   3 文本模式    5图形界面      各个执行等级通过/etc/rc.d/rc[0-6]/sxxdaemon  链接到/etc/init.d/daemon    链接文 件名称功能为S为启动该服务    xx为数字   即启动的顺序   所以在开机时  可以依序执行所有需要的服务,同时也能解 决相依服务的问题。
制定执行等级预设要启动的服务:
开机启动和开机不启动
chkconfig  daemon on
chkconfig daemon off
chkconfig  --list daemon   列表
 
执行等级切换
runlevel 3   切换到5    使用 init 5  命令
 
systemd使用的unit分类     与systemv 的启动服务相比较
平行处理所有服务   
init 启动方式为一项一项的启动  按照顺序    但是systemd是让所有服务同时启动的
有要求就回应的on-demand启动方式
systemd全部就是仅有一只systemd服务搭配systemctl指令来处理    不需要其他的指令,systemd 常驻内存   服务依赖性的自检
b服务启动前  需要先启动a服务   systemd 会自动启动a服务来帮助b服务的成功运行
按照daemon功能分类
unit  服务单位类型分为service  socket  target   path   snapshot   timer 等多种不同的类型  
将多个daemons 集合成为一个群组
如同systemv的init里有个runlevel   systemd将许多的功能集合成为一个target项目   此项目 用在设计操作环境上  所以集合了许多的daemons  所以是执行某个target就是执行多个daemon的意思
向下兼容init
 
systemd  的设置文件目录
上面提到的服务类型包括   系统服务 service     ;    文件监听与交换 socket  ;  储存系统状态快照类型  snapshot;提供不同类型执行等级的环境target等
/usr/lib/systemd/system:每个服务主要的启动脚本设置   最主要的    相当于/etc/init.d   
/run/systemd/system:执行过程中所产生的服务脚本   优先级比上面的高
/etc/systemd/system/根据主机要求   所建立的执行脚本    类似于/etc/rc.d/rc5.d/Sxx   优先级比上面的run中的文件高
systemd的unit类型分类说明
扩展名来区分服务类型
.service     .target
.service     一般类型的服务  主要的系统服务    包括服务器本身需要的本机服务和网络服务  为大多数
.socket 内部程序数据交换  的插槽服务     主要是IPC   inter -process-communication     监控   当有此插槽问及那传递信息需要连接某个服务时,就按照当时的状态将该用户的要求传送到对应的daemon    如果daemon尚未启动  则启动daemon后再传送用户的要求。
.target 执行环境     很多unit的集合   例如multi-user.target    执行此服务就是执行一堆其他的.service和.socket之类的服务
.mount   .automount    为系统挂载服务   例如来自网络的自动挂载    NFS文件系统与文件系统相关性较高的程序管理
.path 目录服务   检测   例如打印
.timer 循环执行的服务   类似anacrontab    
 
通过systemctl来管理服务
 
语法:systemctl   [command]  [unit]
start    stop    restart     reload      enable开机启动     disable开机不启动     status   is-active检测是否正在运行    is-enable 检测开机是否启动

状态注意:  

active(running)   有一个或多个程序正在系统中执行的意思   
active(exited) 仅执行一次就正常结束的服务   当前并没有在系统中执行  并非一直执行  大部分自己写的bash 脚本     
active(waiting) 正在执行当中   不过需要等待其他的事件才能继续处理  
inactive 当前未运行
 
daemon的预设状态有
enabled 开机启动
disabled    开机不启动
static      不能自己启动   需要被其他的enabled的服务来唤醒   想依赖性
mask 注销   非删除  不能启动   用unmask方式改回
练习:1.依赖性   
cups 服务的依赖性
cups.service cups.socket cups.path
通常.socket 负责监听(启动) cups.service和.path(未启动) 此时当有服务请求的时候 socket再唤醒service 和path 所以需要关闭cups服务的时候 需要同时关闭三个服务 不能仅仅关闭service 。
2.mask 强迫注销
上面的例子中可以同时关闭三个服务
但是也可以用mask强制注销的方法 针对.service 来是cups服务不能提供服务
3.通过systemctl观察系统上所有的服务
语法:systemctl [command] [--type=TYPE] [--all]
list-units list-unit-files 更加详细
systemctl list-units --type=service --all 显示unit的某一个类别 service的类别daemon 不管是否启动
4.通过systemctl管理不同的操作环境 target unit
 
graphical.target 文字加图形
multi-user.target 文字
rescue.target root无法登入 时 救援模式
emergency.target root能够登录 的紧急处理系统错误模式
shutdown.target 关机流程设置
getty.target 设置你需要几个tty之类的
 
命令语法systemctl [command]  [unit.target]
get-default 获取当前target
set-default 设置后面的target为预设的操作环境
isolate 切换到后面接的模式
例如:systemctl set-default  mluti-user.target     设定下次开机为文本模式
systemctl isolate graphical.target 切换到图形界面

systemctl   +    poweroff
reboot
suspend    暂停模式将文件保存在内存中  然后关闭大部分硬件
hibernate 休眠模式将状态保存到硬盘中  完毕后  将电脑关机
rescue
emergency
 
5.通过systemctl分析各个服务之间的依赖关系
语法:systemctl     list-dependencies     [unit]    [--reverse]
reverse   反向追踪谁使用此unit的意思
树的形式列出想依赖关系   正向为根节点用到下面的各个服务  向下
reverse反向:为根节点被下面的叶子节点用到
6.与systemd的daemon运行过程相关的目录简介
除了/usr/lib/systemd/system/和/etc/systemd/system/目录下   还有与daemon相关的文件
/usr/lib/systemd/system/   发行版 预设的启动脚本原始位置   尽量不修改   如果需要修改用/etc/systemd/system
/run/systemd/system/       系统执行过程中产生的服务脚本   优先级比上面的高
/etc/systemd/system/       根据主机要求自定义的执行脚本 
/etc/sysconfig/* 几乎所有的系统服务都会初始化的选项放在此目录下  例如网络的设定目录为network- scripts
/var/lib/ 产生数据的服务都会讲数据写入/var/lib的目录中   例如数据库管理系统mariadb的数据 默认写入/var/lib/mysql中
/run/ 放置很多的daemon的缓存文件    包括lock file以及PID file等等
7. 网络服务与端口对应
/etc/services    此文件列出了每个协议服务的端口
观察网络服务的端口      netstat -tlunp    
例如ssh的服务应该加上防火墙   有些则可以不用    有些不了解的监听网络服务  可以关闭
systemctl针对service类型的设定文件
1.目录简介
/usr/lib/systemd/system/vsftpd.service   发行版 给出的原始默认设置文件   建议不动
/etc/systemd/system/vsftpd.service.d/custom.conf
 在/etc/systemd/system底下建立与配置文件相同名的目录  然后加上.d的扩展名   然后在该目录下建立配置文件即 可,配置文件最好文件名取名为.comf    此目录下的文件设置会追加到/usr/lib/systemd/system/vsftpd.service 里
 /etc/systemd/system/vsftpd.service.wants/*  此目录内的文件为链接文件   设置相依赖服务的链接,意思是启动了 vsftpd.service之后,最好再加上这个目录下的建议的服务
 /etc/systemd/system/vsftpd.service.requires/  链接文件,设置相依性服务的链接      意思是启动vsftpd.service之前   需要先启动哪些服务     
2.systemctl配置文件的项目简介
大约有一下几个项目
unit unit本身的说明  以及与其他想依赖的daemon的设定
service  socket timer mount path不同的unit type就得要使用相对应的设定   
install 此unit安装到哪个target里面
重复设置的项目  后面会覆盖前面
布尔值判定  可以使用1    yes   true    on来代表启动
0 no false off代表关闭
空白航   开头为#或者;的哪一行  代表注解
execstart   实际执行此daemon的指令或脚本   也可以使用execstartpre之前以及execstartpost之后两个设定项目来实际启动服务前,进行额外的指令行为
 
实例
3.举例两个vsftpd服务    两个端口一个555另一个21
先建立需要的配置文件
cd /etc/vsftpd
cp vsftpd.conf vsftpd2.conf
讲第一个监听的端口改为555
diff vsftpd.conf vsftpd2.conf  检测不同内容
开始处理启动脚本
cd /etc/systemd/system
cp /usr/lib/systemd/system/vsftpd.service     vsftpd2.service
vim vsftpd2.service
更改描述的信息  
description=.....
execstart=/usr/sbin/vsftpd   /etc/vsftpd/vsftpd2.conf
重新载入systemd的脚本配置文件
systemctl daemon-reload
systemctl list-unit-files  --all | grep vsftpd
systemctl restart vsftpd.service  vsftpd2.service
systemctl enable vsftpd.service  vsftpd2.service
systemctl status vsftpd.service  vsftpd2.service
netstat -tlnp
4.多重的重复设置方式   getty  为例
agetty 程序管控 getty
主要管理文件为getty.target   这个unit    实际产生的tty1~tty6的则是由getty@.service 所提供的
先查看/usr/lib/systemd/system/getty@.service
其中重要的信息为
execstart=-/sbin/agetty  --noclear  %I    $TERM
其中的@原因需要看   getty@.service上面的文件   getty.target  
systemctl show  getty.target
文中会有显示:after=getty@tty1.service  getty@tty2.service ......
在启动完getty.target服务之后会要求持续启动getty1.target    getty2.target   getty3.target...
所以可以判断   systemd的运行方式
a 先看/usr/lib/systemd/system/     /etc/systemd/system/   下面有没有getty@tty1.service的设置 ,如有就 执行,如过没有就执行下一步
b 找getty@.service  的设置   如过有就将@后面的资料带入成%I的变量    进入getty@.service 执行。
原始文件:执行服务名@.service
执行文件:执行服务名@范例名称.service
5.更改tty数量
vim /etc/systemd/logind.conf
NAutoVTs=4
ReserveVT=0
之后重启    systemctl stop  getty@tty5.service    getty@tty6.service
systemctl restart systemd-logind.service
 
        6.重新打开一个全新的终端
systemctl start getty@tty8.service
7.新增vsftpd到新的端口2121
cat /usr/lib/systemd/system/vsftpd@.service
其中  execstart=/usr/sbin/vsftpd     /etc/vsftpd/%i.conf       %i或者%I  代表@后面接的范例文件的名称
a 建立vsftpd3.conf文件    通过此文件来启动新服务
cd /etc/vsftpd
cp vsftpd.conf vsftpd3.conf
vim vsftpd3.conf
listen_port=2121
b 暂时启动这个服务  不要永久启动
systemctl start   vsftpd@vsftpd3.service
systemctl status vsftpd@vsftpd3.service
netstat -tlunp
所以vsftpd@vsftpd3.service    代表要使用的配置文件在/etc/vsftpd/vsftpd3.conf  的意思
*****注意在增加的端口小于1024的时候  需要root的权限     如过端口大于1024则   不需要root的权限  但是 同样危险
8.自己的服务自己作 模拟一个可以备份自己系统的服务
a 服务文件放在/backups 文件夹下
vim /backups/backup.sh
 
#!/bin/bash
source="/etc    /home    /root   /var/lib    /var/spool/{cron,at,mail} "
target="/backups/backup-system-$(date +%Y-%m-%d).tar.gz"
[! -d /backups ] && mkdir /backups
tar -zcvf ${target} ${source} &> /backups/backup.log
 
chmod a+x /backups/backup.sh
ll /backups/backup.sh
 接下来   需要设计一只名称为backup.service的启动脚本
 
vim /etc/systemd/system/backup.service
 
[unit]
description=backup my server
requires=atd.service
 
[service]
type=simple
execstart=/bin/bash -c "echo /backups/backup.sh | at now"
 
[install]
wantedby=multi-user.target    因为需要at这个命令   所以  atd.service  是必须启动的服务
 
测试命令
systemctl daemon-reload
systemctl start backup.service
systemctl status backup.service
 
再出现的结果显示中   出现的inactive   原因是执行完成就完毕了    不会继续存在内存当中
 
systemctl针对timer的配置
原来的at和crond这个服务
systemd.timer 的优点
所有systemd服务产生的信息都会被记录 log 所以比crond在debug上面更清楚
各个timer的工作可以跟systemd的服务相结合
各个timer的工作可以跟control group (cgroup 用来取代/etc/secure/limit.conf 结合)来限制该工作的资源利用
缺点timer没有email的功能 但是可以自己写脚本   时间单位可以精确到ms
   任务需求
必要条件
系统的timer.target   一定要启动
需要sname.service的服务存在   sname是自定义的名称
需要sname.timer的时间启动服务存在
sname.timer的设定值
你可以到/etc/systemd/system底下去建立这个*.timer文件   
onactivesec timer.target启动多久之后才执行此unit
onbootsec 开机完成多久之后才执行
onstartupsec systemd第一次启动之后多久才执行
onunitactivesec 此timer设定文件所管理的那个unit服务在最后一次启动后,隔多久后再执行一次的意思
onunitinactivesec 此timer设定文件所管理的那个unit服务在最后一次停止后,隔多久后再执行一次的意思
oncalendar 用实际时间启动服务
unit 名称
persistent 使用oncalendar设定时,指定该功能不需要持续进行
 
如何使用oncalendar的时间
如果想要从crontab转成这个timer功能    需要了解timer的时间格式
语法:英文周名     YYYY-MM-DD   HH:MM:SS
范例:THU 2015-08-13 13:40:00
英语口语:now     today     tomorrow     hourly     daily      weekly   monthly      +3h10m         2015-08-16
实例:
需求:开机后2小时开始执行一次这个backup.service
   自从第一次执行后,未来我每两天要执行一次  backup.service
vim /etc/systemd/system/backup.timer
 
[unit]
description=backup my server timer
 
[timer]
onbootsec=2hrs
onunitactivesec=2days
 
[install]
wantedby=multi-user.target
 
systemctl daemon-reload
systemctl enable backup.timer
systemctl restart backup.timer
systemctl list-unit-files | grep backup
 
systemctl show timers.target
systemctl show backup.service
systemctl show backup.timer
一个固定日期运行的案例
需求  星期天凌晨2点运行这个备份程序一遍    名称为backup2.timer
vim /etc/systemd/system/backup2.timer
[unit]
description=backup my server timer2
[timer]
oncalendar=sun *-*-* 02:00:00
persistent=true
unit=backup.service
[install ]
wantedby=multi-user.target
 
systemctl daemon-reload
systemctl enable backup2.timer
systemctl start backup2.timer
systemctl show bakcup2.timer
 
出现的执行时间nextelapseusecrealtime是与unix标准时间的比较值   1970-01-01  00:00:00
 
centos 7.x预设启动的服务简易说明
常见的服务  daemon
abrtd    登录出错时的机制  根据此服务进行错误克服
 
accounts-daemon 可关闭 使用accountsservice计划 账号管理,  可关闭
alsa-x可关闭      音效  不开图形界面  可关闭
atd 单一的例行性工作排程 at服务
     auditd selinux相关
avahi-daemon 可关闭 用户端服务通过zeroconf自动的分析与管理网络   常用在笔记本电脑上
brandbot rhel-* 大多数用于开机过程中需要的各种侦测环境的脚本   同时也提供界面的启动与关闭
chronyd
ntpd
ntpdate 网络校正时间的服务
cpupower cpu运行情况
crond 定时服务  与at类似   周期性
cups 可关闭 打印机服务
dbus d-bus的方式在不同的应用程序之间传送信息 应用程序之间的信息传递,每个使用者登录时提供的信息 资料等
dm-event multipathd 系统监控对应表  device mapper的主要服务   不能关
dmraid-activation     mdmonitor 用来启动软raid的重要服务   尽量不关闭
dracut-shutdown 处理initramfs的相关行为    与开机流程相关性较高
ebtables 系统或网络服务类似iptables的防火墙规则  设定如果没有使用虚拟化或者使用了firewalld 此服务可禁用
emergency 
rescue 进入紧急模式或者是救援模式的服务
firewalld 系统或网络   此为防火墙    替代以前的iptables等的防火墙机制   搭配firewall-cmd指令   可以快 速的建制好防火墙系统

gdm gnome的登入管理员   就是图形界面上一个很重要的登录管理服务
getty@ 本机系统产生文字界面  tty登入的服务
hyper*
ksm*
libvirt*
vmtoolsd   跟虚拟机相关的服务     如果不用虚拟机  可以关闭
irqbalance 如果硬件为多核心的硬件    则需要启动    可以自动分配系统终端IRQ 之类的硬件资源
iscsi 网络磁盘服务    如果没有挂载   则可以关闭
kdump 可关闭    主要用在  linux核心出错的时候  ,用来记录内存数据的服务    可以关闭
lvm2-* 跟lvm相关性较高的许多服务     不可关闭
microcode intel的cpu指令集   如果没有下载intel的相关指令文件  则可以不启动
modemmanager
network
networkmanager*    数据,网络设定等服务   建议使用networkmanager搭配nmcli指令来处理网络设置
quotaon  启动quota要用到的服务
rc-local /etc/rc.d/rc.local   需要具有x的执行权限 
  rsyslog 记录系统产生的日志信息  包括/var/log/messages内的几个重要的登录文件
smartd 自动检测硬盘状态   报告管理员
sysstat sar的指令记录 某时间点  系统的资源使用情况  包括cpu  io输入出等   当此服务启动后   这些记录的数 据会写入log中   
sysstemd-* 系统运行过程中需要的服务
plymount*
upower      与图形界面相关的服务   可关闭
 
上面的服务为centos7中默认启动的
 
注意管理员应该使用man systemd.unit    man systemd.service    man systemd.timer查询/etc/systemd/system/目录下设定文件的语法     然后使用systemctl daemon-reload载入后  再自行编写服务于管理服务
posted on 2017-11-27 09:11  学习记录园  阅读(1975)  评论(0编辑  收藏  举报