Preface

今天遇到一个需求,需要实现类似手绘板的功能,需要实现的功能如下:

  1. 通过手指的滑动在视图中绘制对应的路径
  2. 支持清空在手绘板上所绘制的路径
  3. 支持重绘手绘板上的路径
  4. 支持将手绘板上的手绘信息转化成图片储存

还有就是貌似我所看的那本书,所需要的知识基础就是要读者先学会怎么使用python.

emmmm…OK,过来吧,Head First系列,我来为你褪去你封面上的灰尘.果然还是喜欢这个系列的书籍,因为这个书籍我才对于设计模式有了较为深刻的认识.虽然目前还没有看多线程的设计模式= =,不过后续一定会慢慢搞起来的,毫无疑问.


Content

E2.4 试述运行级的概念,列出Linux中定义的运行级,并简述每一个运行级.运行级1和S之间有什么关系?

传统的init定义了7个"运行级(run level)",每一个级别都代表系统应该补充运行的某些特定服务:

  • 0级是完全关闭系统的级别
  • 1级或S级代表单用户模式
  • 2-5级是多用户级别
  • 6级是"重新引导(reboot)"的级别

单用户模式传统上是init的级别1.它关闭所有的多用户和远程登录进程,确保系统运行在最小软件组合的模式下.不过,由于单用户模式提供对系统的超级用户访问权限,因此只要引导系统进入到单用户模式,管理员都要让系统提示用户输入root的扣了.创建S运行级是为了解决下面的需要:它产生一个进程提示输入root的口令.在Linux上,这一级别只是用来提示输入root的口令,而它本身并不是最终的运行目的.(P27)

换言之,s级别只是1级别的附属品而已.

E2.5 编写一个启动脚本,启动名为"foo"的守护进程(/usr/local/sbin/foo),它是一项网络服务.说明如何把它融入系统,在引导时刻自动启动.

参考于P28,这里的脚本名假设其为/etc/init.d/foo

#! /bin/sh
test -f /usr/local/sbin/foo || exit 0 # 确保文件没有问题
case "$1" in start)echo -n "Starting foo: foo"/usr/local/sbin/fooecho ".";;stop)echo -n "Stopping foo: foo"kill `cat /var/run/foo.pid`echo ".";;restart)echo -n "Starting foo: foo"kill `cat /var/run/foo.pid`echo "."echo -n "Starting foo: foo"/usr/local/sbin/fooecho ".";;*)echo "Usage:/etc/init.d/foo start|stop|restart"exit 1;;
esac

首先,我们确认需要自启动的是网络服务,根据P20所说,在网络接口启动之前先启动SSH就没有意义.

当主脚本把系统引入到一个新的运行级别时,它不是直接在init.d目录下找,而是查找叫做rclevel.d的目录(这里level是运行级编号0-9,虽然实际上只有0-6在用).

在典型的情况下,这些rclevel.d目录包含的符号链接都链接到了init.d目录中的脚本上,这些符号链接的名称都以S或K开头,后跟一个数字以及该脚本所控制的服务名(例如,S34named).当init从低的运行级别向高的运行级别过渡时,它按照数字递增的顺序运行所有以S开头的,带有start参数的脚本.当init从高的运行级向低的运行级别过渡时,它按照数字递减的顺序运行所有以K(表示kill,杀死的意思)开头的,带有stop参数的脚本.

在加入新服务的时候,一定要考虑这种以来关系.要告诉系统什么时候启动一个守护进程,我们必须在适当的目录下创建符号链接,例如,要告诉系统在运行级2期间启动CUPS并在系统关闭以前妥善地停止这个守护进程,那么创建下面这一对链接就够了:

\# ln -s /etc/init.d/foo /etc/rc2.d/S81foo
\# ln -s /etc/init.d/foo /etc/rc0.d/K81foo

在这里在不同的运行级上创建对应的软连接,需要链接到的文件放在***/etc/init.d/*** 目录中,只要对应的脚本支持start,stop参数,系统就会自动调用执行

当然有些系统以不同的方式处理系统关闭(shutdown)和重新引导(reboot),所以我们需要在/etc/rc6.d目录中也放一个符号链接,以确保当系统重新引导时,该守护进程能够被正确关闭.

E2.6 取得并安装由Dan Farmer和Wietse Venema所写的程序mactime(它是TCT工具集中的一部分).运行mactime,创建一个与系统文件相关联的时间戳初始数据库.重启机器.再次运行mactime,判断因为引导机器而被修改的文件有哪些.哪些文件访问了而没被修改?(需要root访问权限)

首先安装mactime组件

sudo apt install sleuthkit

然后安装mac-robber用以获取mactime -b所需文件信息
重启后,查看时间戳变化,可以断定,mactime是用以监控文件的变化(根据文件的修改时间而定)
实际文件变化如下:(这里只监控了/etc文件夹下的文件变化)

Tue Jul 02 2019 22:38:07     4096 .a.. drwxr-xr-x 0        7        0        /etc/cups
Tue Jul 02 2019 22:38:38     4096 m.c. drwxr-xr-x 0        7        0        /etc/cups1287 mac. -rw-r----- 0        7        0        /etc/cups/subscriptions.conf

E2.7 如果一个系统处于运行级4,而用户运行了命令telinit 1,init会采用哪些步骤?命令最终的结果将会是什么?

运行级2-5是多用户级别,而运行级1是单用户模式,尝试输出了/etc/rc?.d的所有文件信息,游戏规则是这样的:
当到一个新的运行级时,就会执行该运行级的rclevel.d文件,而rclevel.d是对于/etc/init.d中的脚本文件的软链接,所以其实是间接对于/etc/init.d中脚本文件的依次调用.
基于此,所以答案是:会依次按照数字从高到低的顺序执行rc4.d到rc1.d中的软连接脚本(以stop参数),最终到达单用户模式.

E2.8 绘制一张依赖关系图,画出在您的Linux系统上启动别的守护进程之前,必须启动哪些守护进程?

我当前所使用的Linux Distribution为Ubuntu 18.04,这个问题其实问的挺奇怪,或者说,从小到大,我貌似对于这种文绉绉的表述方式有很大的理解障碍.我个人的理解是,这个问题所问的是,希望让我分析我的运行级脚本的依次执行关系,绘制出一份依次调用关系.

通过以下通配符就可以直接输出/etc/下的软连接列表,直接分析即可,输出结果因为篇幅问题我就不列出了,看看哪个在前哪个在后就行了

ls /etc/rc?.d

E2.9 顺序列出创建一个能工作的多OS系统–包含Linux和Windows–所用到的步骤.使用GRUB和Windows的引导加载程序.

先说说这里面突然让我楞住的英文,OS系统是什么,百度了一下,知道是操作系统的意思= =,又不是什么难翻译的专业词汇,非要装一下,服.
因为使用的是grub的多重引导配置,所以完全不同去专门安装修改好的配置.只需要去编辑grub的配置文档/boot/grub/grub.conf(这个貌似是Linux上面的配置文档的位置,windows目测要自行百度),然后重启一下操作系统就行了
参考于P24
下面的grub.conf文件能够从分区1引导Windows XP,从分区2引导Red Hat Enterprise Linux,还能从分区3引导Fedora:

default=0
timeout=5
splashimage=(hd0,2)/boot/grub/splash.xpm.gz
hiddenmenu
title Windows XProotnoverify (hd0,0)chainloader +1
title Red Hatroot (hd0,1)kernel /boot/vmlinuz
title Fedoraroot (hd0,2)kernel /boot/vmlinuz

Daily Task

终有一天,你会老去,而我,将会加冕为王!

开发日记-20190702 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 8相关推荐

  1. Linux管理传世经典:Linux 系统管理技术手册(第二版) 中文高清版下载

    Linux管理传世经典:Linux 系统管理技术手册(第二版) 中文高清版下载 转载于:https://www.cnblogs.com/gavinhughhu/archive/2010/07/05/1 ...

  2. 开发日记-20190626 Linux系统管理技术手册(第二版) 第一章习题答案(个人版)

    Preface 交流才是王道,只有在极少数情况下,一个天才的能力会超越一百个凡人 Content E1.3 man和info之间的主要区别是什么?他们各自有什么优点? man手册页对单条命令,驱动程序 ...

  3. 开发日记-20190625 Linux系统管理技术手册(第二版) 第一章习题答案(个人版)

    Preface 2333,果然,一章需要三天左右才能完成,这都第二天了,习题才做完前两道,不过通过这两道也了解到了这本书的习性了,不错,不错. Content E1.1 了解系统调用sync(不是sy ...

  4. 开发日记-20190612 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》

    Preface 今天效率真的感觉还不错呢= =,读书进度一口气推进了两章半,说真的,感觉现在看的东西大多数都是讲怎么用的,写这些其实意义不是很大,而且一般写下来后我后续也不会特地来回顾.所以我决定了, ...

  5. 开发日记-20190530 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》

    前言 很多时候真的,完全控制不住自己想要购物的冲动,Linux系统管理技术手册(英文第二版)-这次就是你了,100元大洋含泪永远离开了我,愿你的离去能为我的未来带来一些曙光吧. 最近真的很忙,甚至可以 ...

  6. 开发日记-20190522 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》

    前言 世界上最最愚蠢的事情就是重复,世界上最唯美的事情就是简单.把东西变得简单才是本事,这是我一直信奉的教条. 其实我一直想好好学学Linux,可是很多时候真的很无奈,尽管我挺喜欢买书而且在一定程度上 ...

  7. 开发日记-20190822 关键词 读书笔记《Unix环境高级编程(第二版)》《掌控习惯》DAY 2

    Preface 话说,昨天开始尝试着去改变自己,从基础的习惯开始,11:30准时睡觉,平时差不多12:30才睡觉.按理说,比平时早了一个小时睡觉吧,然后我就把闹钟提前了45分钟,想着还能比平常多睡15 ...

  8. 开发日记-20190807 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 21

    Preface 今天对于网络请求到底是如何发送有了相对深入的理解.明天的话,第12章也就结束了,感觉看到这里,有点飘飘欲仙的感觉了.的确,对于有些人来说,这类书是作为字典用的,但是我啊,只是因为好奇, ...

  9. 开发日记-20190726 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 16

    Preface 感觉渐入佳境,渐入佳境= = 昨天发现了一个问题,我貌似日记有一天弄错了,所以现在我每天写的日记实际上是明天的= =,麻麻,这也挺好的,给自己暗示一下,要有提前量! 说真的,一般写东西 ...

最新文章

  1. DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)
  2. LeetCode 316. Remove Duplicate Letters--贪心--Java,C++,Python解法
  3. document对象详解
  4. matlab 两列数据相乘,在EXCEL中,两列完全相同的数据,求和结果不一样??单元格两列相乘的公式...
  5. 【Groovy】闭包 Closure ( 闭包调用 与 call 方法关联 | 接口中定义 call() 方法 | 类中定义 call() 方法 | 代码示例 )
  6. 12.当效率至关重要时,请在map::operator[]与map::insert之间谨慎作出选择
  7. 实验室信息管理系统(南京浩展软件)
  8. 清理垃圾代码bat_电脑一键清理垃圾图文详解
  9. mongodb简单安装
  10. 19-Spring Security资源服务器配置详解
  11. html配色插件,【插件技巧】设计师必备配色max插件
  12. linux 光功率 模块_光模块基本参数-消光比/光功率/灵敏度
  13. starbase 数据库使用 (miRNA预测LncRNA)
  14. Cell Host | 张群业/王哲/张澄-肠道微生物群失调加重腹主动脉瘤
  15. C语言阶梯程序,阶梯式C语言程序设计实验指导书.pdf
  16. GC overhead limt exceed 导致的java进程假死
  17. 【hadoop生态之Hive】Hive的DML数据操纵语言【笔记+代码】
  18. 红米note9pro和华为nova7哪个好
  19. IDEA牛逼!900行又臭又长的类重构,几分钟搞定
  20. Perl模块使用 = 简短例子代码集合(转帖)

热门文章

  1. python怎么设置字段_Django Model中字段(field)的各种选项说明
  2. oracle asm spfile丢失,Oracle 11g RAC ASM磁盘全部丢失后的恢复
  3. python mysql append_Python细节——MYSQL的to_sql的if_exists推荐使用append
  4. python代码用c语言封装_树莓派开发ADC芯片CS1237(C语言和python库开发)
  5. 若有代数式,则以下能够正确表示该代数式的c语言表达是是 07年4月,2007年4月全国计算机等级考试二级笔试试卷...
  6. oracle索引块和数据块,Oracle中,如何确定热快是数据块还是索引快?
  7. php html转化为pdf,PHP将html转换成PDF文件
  8. 现代化医学信息管理c语言,山西医科大学_院校信息库_阳光高考
  9. 每天一个linux命令(22):find 命令的参数详解
  10. git pull 报错:git - error: RPC failed; curl 18 transfer closed with outstanding read data remaining 解决