鸟哥Linux私房菜学习记录day8

发布时间 2023-08-03 17:50:33作者: Redamancy_03

第十五章   例行性工作调度

工作调度种类:at cron

at :at 是个可以处理仅执行一次就结束调度的指令

crontab :crontab 这个指令所设置的工作将会循环的一直进行下去,可循环的时间为分钟、小时、每周、每月或每年等。crontab 除了可以使用指令执行外,亦可编辑/etc/crontab 来支持。

 

at 工作方式

1. 先找寻 /etc/at.allow 这个文件,写在这个文件中的使用者才能使用 at ,没有在这个文件中的使用者则不能使用 at (即使没有写在 at.deny 当中);
2. 如果 /etc/at.allow 不存在,就寻找 /etc/at.deny 这个文件,若写在这个 at.deny 的使用者则不能使用 at ,而没有在这个 at.deny 文件中的使用者,就可以使用 at 咯;
3. 如果两个文件都不存在,那么只有 root 可以使用 at 这个指令

[root@study ~]# at [-mldv] TIME
[root@study ~]# at -c 工作号码
选项与参数:
-m :当 at 的工作完成后,即使没有输出讯息,亦以 email 通知使用者该工作已完成。
-l :at -l 相当于 atq,列出目前系统上面的所有该使用者的 at 调度;
-d :at -d 相当于 atrm ,可以取消一个在 at 调度中的工作;
-v :可以使用较明显的时间格式列出 at 调度中的工作列表;
-c :可以列出后面接的该项工作的实际指令内容

 

atq查询主机上有多少at工作调度

atrm将工作移除

 

循环执行的例行性工作制度

/etc/cron.allow: 将可以使用 crontab 的帐号写入其中,若不在这个文件内的使用者则不可使用 crontab;
/etc/cron.deny: 将不可以使用 crontab 的帐号写入其中,若未记录到这个文件当中的使用者,就可以使用 crontab

[root@study ~]# crontab [-u username] [-l|-e|-r]
选项与参数:
-u :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作调度;
-e :编辑 crontab 的工作内容
-l :查阅 crontab 的工作内容
-r :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑

 

 

可唤醒停机期间的工作任务

[root@study ~]# anacron [-sfn] [job]..
[root@study ~]# anacron -u [job]..
选项与参数:
-s :开始一连续的执行各项工作 (job),会依据时间记录文件的数据判断是否进行;
-f :强制进行,而不去判断时间记录文件的时间戳记;
-n :立刻进行未进行的任务,而不延迟 (delay) 等待时间;
-u :仅更新时间记录文件的时间戳记,不进行任何工作。
job :由 /etc/anacrontab 定义的各项工作名称

 

1. crond 会主动去读取 /etc/crontab, /var/spool/cron/, /etc/cron.d/ 等配置文件,并依据“分、时、日、月、周”的时间设置去各项工作调度;
2. 根据 /etc/cron.d/0hourly 的设置,主动去 /etc/cron.hourly/ 目录下,执行所有在该目录下的可执行文件;
3. 因为 /etc/cron.hourly/0anacron 这个指令档的缘故,主动的每小时执行 anacron ,并调用 /etc/anacrontab 的配置文件;
4. 根据 /etc/anacrontab 的设置,依据每天、每周、每月去分析 /etc/cron.daily/,/etc/cron.weekly/, /etc/cron.monthly/ 内的可执行文件,以进行固定周期需要执行的指令

 

 

第十六章  程序管理与SE Linux初探

程序被触发后,执行者的权限与属性、程序的程序码与所需数据等都会被载入内存中, 操作系统并给予这个内存内的单元一个识别码 (PID),进程就是一个正在运行中的程序

fork-and-exec 的流程:程序都会借由父程序以复制 (fork的方式产生一个一模一样的子程序, 然后被复制出来的子程序再以 exec 的方式来执行实际要进行的程序,最终就成为一个子程序的存在

 

工作管理:job control

当我们登陆系统取得 bash shell 之后,在单一终端机接口下同时进行多个工作的行为管理。

进行工作管理的行为中, 其实每个工作都是目前 bash 的子程序,亦即彼此之间是有相关性的。 我们无法以 job control 的方式由 tty1 的环境去管理 tty2 的 bash

 

假设我们只有一个终端接口,因此在可以出现提示字符让你操作的环境就称为前景 foreground,至于其他工作就可以让你放入背景 background 去暂停或运行。

放入背景的工作是不可以使用 [ctrl]+c 来终止的,可使用 bg/fg 调用该工作;

背景中“执行”的进程不能等待 terminal/shell 的输入(input);

在背景里面的工作状态又可以分为“暂停 (stop)”与“运行中 (running)”;

 

 

直接将指令丢到背景中执行& 

输出的信息都给他传送到 /tmp/log.txt 当中,数据流重导向

 

 

在vim的一般模式下,按下ctrl和z两个键,屏幕会出现[1]表示这是第一个工作,在默认的情况下,使用[ctrl]-z 丢到背景当中的工作都是“暂停”的状态:

guojiamin@root:~/gimtest/vimtest$ jobs
[1]-  Stopped                 vim create3files.sh
[2]+  Stopped                 sh what_to_eat-3.sh

+ 代表最近被放到背景的工作号码,- 代表最近最后第二个被放置到背景中的工作号码。 而超过最后第三个以后的工作,就不会有+/- 符号存在了!

 

将背景工作拿到前景来处理:fgforeground

[root@study ~]# jobs -l
[1]- 14566 Stopped vim ~/.bashrc
[2]+ 14567 Stopped find / -print
[root@study ~]# fg <==默认取出那个 + 的工作,亦即 [2]。立即按下[ctrl]-z
[root@study ~]# fg %1 <==直接规定取出的那个工作号码!再按下[ctrl]-z
[root@study ~]# jobs -l
[1]+ 14566 Stopped vim ~/.bashrc
[2]- 14567 Stopped find / -print

让工作在背景下的状态变成运行中: bgbackground

 

[root@study ~]# find / -perm /7000 > /tmp/text.txt
# 此时,请立刻按下 [ctrl]-z 暂停!
[3]+ Stopped find / -perm /7000 > /tmp/text.txt

[root@study ~]# jobs ; bg %3 ; jobs
[1] Stopped vim ~/.bashrc
[2]- Stopped find / -print
[3]+ Stopped find / -perm /7000 > /tmp/text.txt
[3]+ find / -perm /7000 > /tmp/text.txt &
[1]- Stopped vim ~/.bashrc
[2]+ Stopped find / -print
[3] Running find / -perm /7000 > /tmp/text.txt &

 

管理背景当中的工作: kill

-9 这个 signal 通常是用在“强制删除一个不正常的工作”时所使用的, .filename.swp 文件不会被删除;【不建议】

-15 则是以正常步骤结束一项工作,.filename.swp 文件被删除;【推荐】

当用-15kill进程时,若kill不掉,则可以先用fg来取回前景控制权,然后再离开 vim 才对

kill 后面接的数字默认会是 PID ,如果想要管理 bash 的工作控制,就得要加上 %数字

  • 仅观察自己的 bash 相关程序: ps -l
  • 观察系统所有程序: ps aux
  • 动态观察程序的变化:top

ps 是静态的结果输出, top 这个程序可以持续的监测整个系统的程序工作状态

 如果想要找出最损耗 CPU 资源的那个程序时:

1、top;

2、CPU 使用资源来排序 (在 top 当中按下 P 即可)。

 杀掉某进程:kill -9 +PID或killall PName

 

Priority 与 Nice 值

调整某个已经存在的 PID 的 nice 值:用 renice 指令

一开始执行程序就立即给与一个特定的nice值:用nice指令

 

 

系统资源与观察

free :观察内存使用情况

uname:查阅系统与核心相关信息

dmesg :分析核心产生的讯息,后面加“|more”可使画面暂停

fuser:通过这个 fuser 我们可以找出使用该文件、目录的程序,借以观察的啦! 他的重点与 ps, pstree 不同。fuser 可以让我们了解到某个文件 (或文件系统) 目前正在被哪些程序所利用。

lsof :列出被程序所打开的文件文件名。

pidof :找出某支正在执行的程序的 PID。

 

 

 

SELinux

 

SELinux是“ Security Enhanced Linux”缩写,字面上的意义就是安全强化的 Linux。

实 SELinux 是在进行程序、文件等细部权限设置依据的一个核心模块! 由于启动网络服务的也是程序,因此刚好也能够控制网络服务能否存取系统资源的一道关卡!

 

DAC自主式存取控制 (Discretionary Access Control, DAC)”依据程序的拥有者与文件资源的 rwx 权限来决定有无存取的能力。

 

MAC:“委任式存取控制”(Mandatory Access Control)针对特定的程序与特定的文件资源来进行权限的控管,即使你是 root ,那么在使用不同的程序时,你所能取得的权限并不一定是 root 而得要看当时该程序的设置而定。

 

 

使用 DAC/MAC 产生的不同结果,以 Apache 为例说明

 

 

SELinux 是通过 MAC 的方式来控管程序,他控制的主体是程序, 而目标则是该程序能否读取的“文件资源”!

 

主体 Subject):process

 

目标 Object):是文件系统

 

政策 Policy):三条

 

targeted:针对网络服务限制较多,针对本机限制较少,是默认的政策;

 

minimum:由 target 修订而来,仅针对选择的程序来保护!

 

mls:完整的 SELinux 限制,限制方面较为严

 

安全性本文 security context):,安全性本文主要用冒号分为三个字段

 

 

 

三种模式

 

enforcing:强制模式,代表 SELinux 运行中,且已经正确的开始限制 domain/type 了;

 

permissive:宽容模式:代表 SELinux 运行中,不过仅会有警告讯息并不会实际限制 domain/type 的存取。这种模式可以运来作为SELinux 的 debug 之用;

 

disabled:关闭,SELinux 并没有实际运行。

 

 

SELinux 的三种类型与实际运行流程图示意