做投票网站的,龙岗网站建设培训,企业网站的cms,360搜索网址是多少【BASH】回顾与知识点梳理 三十五 三十五. 二十七至三十四章知识点总结及练习35.1 总结35.2 练习RAIDLVMsystemd 35.3 简答题 该系列目录 -- 【BASH】回顾与知识点梳理#xff08;目录#xff09;
三十五. 二十七至三十四章知识点总结及练习
35.1 总结 Quota 可公平的分… 【BASH】回顾与知识点梳理 三十五 三十五. 二十七至三十四章知识点总结及练习35.1 总结35.2 练习RAIDLVMsystemd 35.3 简答题 该系列目录 -- 【BASH】回顾与知识点梳理目录
三十五. 二十七至三十四章知识点总结及练习
35.1 总结 Quota 可公平的分配系统上面的磁盘容量给用户分配的资源可以是磁盘容量(block)或可建立文件数量(inode) Quota 的限制可以有 soft/hard/grace time 等重要项目 Quota 是针对整个 filesystem 进行限制XFS 文件系统可以限制目录 Quota 的使用必须要核心与文件系统均支持。文件系统的参数必须含有 usrquota, grpquota, prjquota Quota 的 xfs_quota 实作的指令有 report, print, limit, timer… 等指令 磁盘阵列 (RAID) 有硬件与软件之分Linux 操作系统可支持软件磁盘阵列透过 mdadm 套件来达成 磁盘阵列建置的考虑依据为『容量』、『效能』、『资料可靠性』等 磁盘阵列所建置的等级常见有的 raid0, raid1, raid10, raid5 及 raid6 硬件磁盘阵列的装置文件名与 SCSI 相同至于 software RAID 则为 /dev/md[0-9] 软件磁盘阵列的状态可藉由 /proc/mdstat 文件来了解 LVM 强调的是『弹性的变化文件系统的容量』 与 LVM 有关的组件有 PV/VG/PE/LV 等组件可以被格式化者为 LV 新的 LVM 拥有 LVM thin volume 的功能能够动态调整磁盘的使用率 LVM 拥有快照功能快照可以记录 LV 的数据内容并与原有的 LV 共享未更动的数据备份与还原就变的很简单 XFS 透过 xfs_growfs 指令可以弹性的调整文件系统的大小 系统可以透过 at 这个指令来排程单一工作的任务『at TIME』为指令下达的方法当 at 进入排程后 系统执行该排程工作时会到下达时的目录进行任务 at 的执行必须要有 atd 服务的支持且 /etc/at.deny 为控制是否能够执行的使用者账号 透过 atq, atrm 可以查询与删除 at 的工作排程 batch 与 at 相同不过 batch 可在 CPU 工作负载小于 0.8 时才进行后续的工作排程 系统的循环例行性工作排程使用 crond 这个服务同时利用 crontab -e 及 /etc/crontab 进行排程的安排 crontab -e 设定项目分为六栏『分、时、日、月、周、指令』为其设定依据 /etc/crontab 设定分为七栏『分、时、日、月、周、执行者、指令』为其设定依据 anacron 配合 /etc/anacrontab 的设定可以唤醒停机期间系统未进行的 crontab 任务 程序 (program)通常为 binary program 放置在储存媒体中 (如硬盘、光盘、软盘、磁带等)为实体文件的型态存在 进程 (process)程序被触发后执行者的权限与属性、程序的程序代码与所需数据等都会被加载内存中 操作系统并给予这个内存内的单元一个标识符 (PID)可以说进程就是一个正在运作中的程序。 程序彼此之间是有相关性的故有父进程与子进程之分。而 Linux 系统所有进程的父进程就是 init 这个PID 为 1 号的进程。 在 Linux 的进程呼叫通常称为 fork-and-exec 的流程进程都会藉由父进程以复制 (fork) 的方式产生一个一模一样的子进程 然后被复制出来的子进程再以 exec 的方式来执行实际要进行的程序最终就成为一个子进程的存在。 常驻在内存当中的进程通常都是负责一些系统所提供的功能以服务用户各项任务因此这些常驻程序就会被我们称为服务 (daemon)。 在工作管理 (job control) 中可以出现提示字符让你操作的环境就称为前景 (foreground)至于其他工作就可以让你放入背景 (background) 去暂停或运作。(jobs,fg,bg, kill -signal %n) 与 job control 有关的按键与关键词有 , [ctrl]-z, jobs, fg, bg, kill %n 等 进程管理的观察指令有 ps, top, pstree 等等 进程之间是可以互相控制的传递的讯息 (signal) 主要透过 kill 这个指令在处理 进程是有优先级的该项目为 Priority但 PRI 是核心动态调整的用户只能使用 nice 值去微调 PRI nice 的给予可以有 nice, renice, top 等指令 vmstat 为相当好用的系统资源使用情况观察指令(-a -d) SELinux 当初的设计是为了避免使用者资源的误用而 SELinux 使用的是 MAC 委任式存取设定 SELinux 的运作中重点在于主体进程 (Subject) 能否存取目标文件资源 (Object) 这中间牵涉到政策(Policy) 内的规则 以及实际的安全性本文类别 (type) 安全性本文的一般设定为『Identify:role:type』其中又以 type 最重要 SELinux 的模式有 enforcing, permissive, disabled 三种而启动的政策 (Policy) 主要是 targeted SELinux 启动与关闭的配置文件在 /etc/selinux/config SELinux 的启动与观察 getenforce, sestatus 等指令 重设 SELinux 的安全性本文可使用 restorecon 与 chcon 在 SELinux 有启动时必备的服务至少要启动 auditd 这个 若要管理预设的 SELinux 布尔值可使用 getsebool, setsebool 来管理 早期的服务管理使用 systemV 的机制透过 /etc/init.d/*, service, chkconfig, setup 等指令来管理服务的启动/关闭/预设启动 从 CentOS 7.x 开始采用 systemd 的机制此机制最大功能为平行处理并采单一指令管理 (systemctl)开机速度加快 systemd 将各服务定义为 unit而 unit 又分类为 service, socket, target, path, timer 等不同的类别方便管理与维护 启动/关闭/重新启动的方式为 systemctl [start|stop|restart] unit.service 设定预设启动/预设不启动的方式为 systemctl [enable|disable] unit.service 查询系统所有启动的服务用 systemctl list-units --typeservice 而查询所有的服务 (含不启动) 使用systemctl list-unit-files --typeservice systemd 取消了以前的 runlevel 概念 (虽然还是有兼容的 target)转而使用不同的 target 操作环境。常见操作环境为 multi-user.target 与 graphical.target。 不重新启动而转不同的操作环境使用 systemctl isolate unit.target而设定预设环境则使用 systemctl set-default unit.target systemctl 系统默认的配置文件主要放在 /usr/lib/systemd/system管理员若要修改或自行设计时则建议放在 /etc/systemd/system/ 目录下。 管理员应使用 man systemd.unit, man systemd.service, man systemd.timer 查询 /etc/systemd/system/ 底下配置文件的语法 并使用 systemctl daemon-reload 加载后才能自行撰写服务与管理服务喔 除了 atd 与 crond 之外可以 透过 systemd.timer 亦即 timers.target 的功能来使用 systemd 的时间管理功能。 一些不需要的服务可以关闭喔
35.2 练习
RAIDLVM
情境模拟题一由于 LVM 可以弹性调整 filesystem 的大小但是缺点是可能没有加速与硬件备份(与快照不同)的功能。 而磁盘阵列则具有效能与备份的功能但是无法提供类似 LVM 的优点。在此情境中我们想利用『在 RAID 上面建置 LVM』的功能以达到两者兼顾的能力。
目标测试在 RAID 磁盘上面架构 LVM 系统需求需要具有磁盘管理的能力包括 RAID 与 LVM前提会用到本章建立出来的 /dev/vda5, /dev/vda6, /dev/vda7 三个分区槽
重新处理系统我们在这个练习当中需要 /dev/vda5, /dev/vda6, /dev/vda7 建置成一个 RAID5 的/dev/md0 磁盘详细的作法这里就不谈了 你得要使用 gdisk 来处理成为如下的模样
[rootstudy ~]# gdisk -l /dev/vda
Number Start (sector) End (sector) Size Code Name1 2048 6143 2.0 MiB EF022 6144 2103295 1024.0 MiB 07003 2103296 65026047 30.0 GiB 8E004 65026048 67123199 1024.0 MiB 8300 Linux filesystem5 67123200 69220351 1024.0 MiB FD00 Linux RAID6 69220352 71317503 1024.0 MiB FD00 Linux RAID7 71317504 73414655 1024.0 MiB FD00 Linux RAID开始使用 mdadm 来建立一个简单的 RAID5 数组简易的流程如下
[rootstudy ~]# mdadm --create /dev/md0 --autoyes --level5 \--raid-devices3 /dev/vda{5,6,7}
[rootstudy ~]# mdadm --detail /dev/md0 | grep -i uuidUUID : efc7add0:d12ee9ca:e5cb0baa:fbdae4e6
[rootstudy ~]# vim /etc/mdadm.conf
ARRAY /dev/md0 UUIDefc7add0:d12ee9ca:e5cb0baa:fbdae4e6若无出现任何错误讯息此时你已经具有 /dev/md0 这个磁盘阵列装置了接下来让我们处理 LVM 吧
开始处理 LVM 现在我们假设所有的参数都使用默认值包括 PE 然后 VG 名为 raidvg LV 名为raidlv 底下为基本的流程
[rootstudy ~]# pvcreate /dev/md0 建立 PV
[rootstudy ~]# vgcreate raidvg /dev/md0 建立 VG
[rootstudy ~]# lvcreate -L 1.5G -n raidlv raidvg 建立 LM
[rootstudy ~]# lvscan
ACTIVE /dev/raidvg/raidlv [1.50 GiB] inherit这样就搞定了 LVM 了而且这个 LVM 是架构在 /dev/md0 上面的喔然后就是文件系统的建立与挂载了
尝试建立成为 XFS 文件系统且挂载到 /srv/raidlvm 目录下
[rootstudy ~]# mkfs.xfs /dev/raidvg/raidlv
[rootstudy ~]# blkid /dev/raidvg/raidlv
/dev/raidvg/raidlv: UUID4f6a587d-3257-4049-afca-7da1d405117d TYPExfs
[rootstudy ~]# vim /etc/fstab
UUID4f6a587d-3257-4049-afca-7da1d405117d /srv/raidlvm xfs defaults 0 0
[rootstudy ~]# mkdir /srv/raidlvm
[rootstudy ~]# mount -a
[rootstudy ~]# df -Th /srv/raidlvm
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/raidvg-raidlv xfs 1.5G 33M 1.5G 3% /srv/raidlvm上述就是 LVM 架构在 RAID 上面的技巧之后的动作都能够使用本章的其他管理方式来管理 包括RAID 热拔插机制、LVM 放大缩小机制等等。
systemd
情境模拟题透过设定、启动、观察等机制完整的了解一个服务的启动与观察现象。
目标了解 daemon 的控管机制以 sshd daemon 为例前提需要对本章已经了解尤其是 systemd 的管理 部分需求已经有 sshd 这个服务但没有修改过埠口
在本情境中我们使用 sshd 这个服务来观察主要是假设 sshd 要开立第二个服务这个第二个服务的 port 放行于 222 那该如何处理 可以这样做看看
基本上 sshd 几乎是一定会安装的服务只是我们还是来确认看看好了
[rootstudy ~]# systemctl status sshd.service
sshd.service - OpenSSH server daemonLoaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)Active: active (running) since Thu 2015-08-13 14:31:12 CST; 20h ago
[rootstudy ~]# cat /usr/lib/systemd/system/sshd.service
[Unit]
DescriptionOpenSSH server daemon
Afternetwork.target sshd-keygen.service
Wantssshd-keygen.service
[Service]
EnvironmentFile/etc/sysconfig/sshd
ExecStart/usr/sbin/sshd -D $OPTIONS
ExecReload/bin/kill -HUP $MAINPID
KillModeprocess
Restarton-failure
RestartSec42s
[Install]
WantedBymulti-user.target透过观察 man sshd我们可以查询到 sshd 的配置文件位于 /etc/ssh/sshd_config 这个文件内再 man sshd_config 也能知道原来埠口是使用 Port 来规范的 因此我想要建立第二个配置文件档名假设为/etc/ssh/sshd2_config 这样
[rootstudy ~]# cd /etc/ssh
[rootstudy ssh]# cp sshd_config sshd2_config
[rootstudy ssh]# vim sshd2_config
Port 222
# 随意找个地方加上这个设定值你可以在文件的最下方加入这行也 OK 喔接下来开始修改启动脚本服务档
[rootstudy ~]# cd /etc/systemd/system
[rootstudy system]# cp /usr/lib/systemd/system/sshd.service sshd2.service
[rootstudy system]# vim sshd2.service
[Unit]
DescriptionOpenSSH server daemon 2
Afternetwork.target sshd-keygen.service
Wantssshd-keygen.service
[Service]
EnvironmentFile/etc/sysconfig/sshd
ExecStart/usr/sbin/sshd -f /etc/ssh/sshd2_config -D $OPTIONS
ExecReload/bin/kill -HUP $MAINPID
KillModeprocess
Restarton-failure
RestartSec42s
[Install]
WantedBymulti-user.target
[rootstudy system]# systemctl daemon-reload
[rootstudy system]# systemctl enable sshd2
[rootstudy system]# systemctl start sshd2
[rootstudy system]# tail -n 20 /var/log/messages
# semanage port -a -t PORT_TYPE -p tcp 222where PORT_TYPE is one of the following: ssh_port_t, vnc_port_t, xserver_port_t.
# 认真的看你会看到上面这两句也就是 SELinux 的埠口问题请解决
[rootstudy system]# semanage port -a -t ssh_port_t -p tcp 222
[rootstudy system]# systemctl start sshd2
[rootstudy system]# netstat -tlnp | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1300/sshd
tcp 0 0 0.0.0.0:222 0.0.0.0:* LISTEN 15275/sshd
tcp6 0 0 :::22 :::* LISTEN 1300/sshd
tcp6 0 0 :::222 :::* LISTEN 15275/sshd35.3 简答题 在大量新增账号范例中 如果我想要让每个用户均具有 soft/hard 各为 40MB/50MB 的容量时应该如何修改这个 script 你得先要依据本章的作法先将 /home 制作好 quota 的环境然后 你可以在 do…done 内的最后一行新增一行内容为 xfs_quota -x -c limit -u bsoft40M bhard50M ${username} /home这样就可以在制作用户时指定更新密码且给予 quota 的限制 如果我想要让 RAID 具有保护数据的功能防止因为硬件损毁而导致数据的遗失那我应该要选择的 RAID 等级可能有哪些 具有备份数据的有 RAID-1, RAID-5, RAID-6, RAID-10 在预设的 LVM 设定中请问 LVM 能否具有『备份』的功能 是有的就是那个快照 (snopshot) 的功能此功能即可进行数据的备份 如果你的计算机主机有提供 RAID 0 的功能你将你的三颗硬盘全部在 BIOS 阶段使用 RAID 芯片整合成为一颗大磁盘 则此磁盘在 Linux 系统当中的文件名为何 由于硬件磁盘阵列是在 BIOS 阶段完成的因此 Linux 系统会捉到一个完整的大的 RAID 磁盘此磁盘的文件名就会是『 /dev/sda 』 但如果是 Intel 的芯片组则还是可能会成为 /dev/md127 等相关的档名 今天假设我有一个指令程序名称为 ping.sh 这个档名我想要让系统每三分钟执行这个文件一次 但是偏偏这个文件会有很多的讯息显示出来所以我的 root 账号每天都会收到差不多四百多封的信件光是收信就差不多快要疯掉了 那么请问应该怎么设定比较好呢 这个涉及数据流重导向的问题我们可以将他导入文件或者直接丢弃如果该讯息不重要的话 那么就予以丢弃如果讯息很重要的话才将他保留下来假设今天这个命令不重要 所以将他丢弃掉因此可以这样写
*/3 * * * * root /usr/local/ping.sh /dev/null 21您预计要在 2024 年的 2 月 14 日寄出一封给 kiki 只有该年才寄出该如何下达指令
echo happy|at 1am 2024-02-14下达 crontab -e 之后如果输入这一行代表什么意思* 15 * * 1-5 /usr/local/bin/tea_time.sh 周一至周五每天的15点的每分钟执行tea_time.sh 应该写成 30 15 * * 1-5 /usr/local/bin/tea_time.sh我用 vi 编辑 /etc/crontab 这个文件我编辑的那一行是这样的 25 00 * * 0 /usr/local/bin/backup.sh这一行代表的意义是什么 这一行代表…没有任何意义因为语法错误您必须要了解在 /etc/crontab 当中每一行都必须要有使用者才行所以应 该要将原本那行改成 25 00 * * 0 root /usr/local/bin/backup.sh请问您的系统每天、每周、每个月各有进行什么工作
[rootnode-135 backups]# ll /etc/cron.monthly/
total 0
[rootnode-135 backups]# ll /etc/cron.weekly/
total 0
[rootnode-135 backups]# ll /etc/cron.daily/
total 16
-rwx------. 1 root root 219 Apr 1 2020 logrotate
-rwxr-xr-x. 1 root root 618 Oct 30 2018 man-db.cron
-rwx------. 1 root root 208 Apr 11 2018 mlocate
-rwx------. 1 root root 558 May 18 2022 rhsmd每个星期六凌晨三点去系统搜寻一下内有 SUID/SGID 的任何文件并将结果输出到 /tmp/uidgid.files
vim /etc/crontab
0 3 * * 6 root find / -perm /6000 /tmp/uidgid.files使用 netstat -tul 与 netstat -tunl 有什么差异为何会这样 使用 n 时 netstat 就不会使用主机名与服务名称 (hostname service_name) 来显示 取而代之的则是以 IP 及 port number 来显示的。IP 的分析与 /etc/hosts 及 /etc/resolv.conf 有关 这个在未来服务器篇才会提到。至于 port number 则与 /etc/services 有关请自行参考喔你能否找出来启动 port 3306 这个埠口的服务为何 透过搜寻 /etc/services 内容得到 port 3306 为 mysql 所启动的埠口喔查询 google 可得到 mysql 为一种网络数据库系统软件。
[rootnode-135 backups]# grep 3306 /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL你可以透过哪些指令查询到目前系统默认开机会启动的服务
systemctl list-units 以及 systemctl list-unit-files承上那么哪些服务『目前』是在启动的状态 结果同上只是若要进一步的信息应该使用 systemctl status [unit.service] 一项一项查询
该系列目录 -- 【BASH】回顾与知识点梳理目录