2018.1.29 8周1次课

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018.1.29 8周1次课相关的知识,希望对你有一定的参考价值。

八周一次课(1月29日)

10.23 linux任务计划cron

10.24 chkconfig工具

10.25 systemd管理服务

10.26 unit介绍

10.27 target介绍

10.23 linux任务计划cron

其实大部分系统管理工作都是通过定期自动执行某个脚本来完成的, 那么如何定期执行某个脚本呢? 这就要借助Linux的cron功能了

Linux任务计划功能的操作都是通过crontab命令来完成的, 其常用的选项有以下几个。

  • -u:表示指定某个用户,不加- u选项则为当前用户。

  • -e:表示制定计划任务。

  • -l:表示列出计划任务。

  • -r:表示删除计划任务。

技术分享图片

这里每个字段的数字分别表示什么呢?从左到右依次为:

分钟、小时、日期、月份、星期、用户、要执行的命令行

定义计划任务:# crontab –e

分范围0-59,时范围0-23,日范围1-31,月范围1-12,周1-7

可用格式1-5表示一个范围1到5

可用格式1,2,3表示1或者2或者3

可用格式*/2表示被2整除的数字,比如小时,那就是每隔2小时

  1. 要保证服务是启动状态:#systemctl start crond

查看服务是否启动:

#ps aux|grep cron

技术分享图片

#systemctl status crond

技术分享图片

  1. 停止服务:#systemctl stop crond

技术分享图片

  1. 计划任务里的命令尽量写绝对路径,同时要写入到日志,正确执行追到正确执行日志里,错误日志追到到错误执行日志里

技术分享图片

  1. 命令crontab -e实际上是打开了/var/spool/cron/username文件,在/var/spool/cron/里有对应的用户的cron。以用户名字命名的(如果用户是root,则打开的 /var/spool/cron/root)。

打开这个文件使用了vim编辑器,所以保存时在命令行模式下输人:wq即可。但是请千万不要直接去编辑那个文件,否则会出错,所以一定要使用命令crontab -e来编辑

  1. 查看已经设定的任务计划:crontab -l

  2. 删除任务计划:crontab -r,这个删除选项最好还是少用,因为它会一下子把全部计划都删除掉。如果你想只删除一条计划,可以使用-e选项进入crontab进行编辑。

10.24 chkconfig工具

Centos 6上的服务管理工具为chkconfig,Linux系统所有的预设服务都可以通过查看/etc/init.d/目录得到。

技术分享图片

只有屈指可数的几个文件,这是因为centos 7已经不再延续centos 6版本的服务管理方案了。但是我们依然可以继续使用chkconfig这个命令。系统的预设服务都可以通过这样的命令实现:service服务名start l stop l restart。这里的服务名就是/etc/init.d/目录下的这些文件了。启动crond除了可以使用命令service crond start外, 还可以使用命令/etc/init.d/crond start。

命令chkconfig --list列出所有的服务及其每个级别的开启状态

技术分享图片

技术分享图片

在这里也会看到一个提示,它提示我们该命令输出的内容并没有包含centos7的原生systemd服务,而这里仅仅列出来sysv服务。这也是/etc/init.d/目录下面只有一两个启动脚本的根本原因。 也就是说, 早期centos版本 (7之前) 采用的服务管理都是sysv, 而7换成了systemd

这里的级别 (数字0-6)为系统启动级别 (centos 7之前版本的用法,而centos 7已经不再严格区分级别的概念了), 运行级别0、1和6被系统保留。其中0作为shutdown动作,1作为重启至单用户模式,6为重启。在一般的Linux系统实现中,都使用了2、3、4、5几个级别。在centos系统中,2表示无NFS支持的多用户模式,3表示完全多用户模式(也是最常用的级别),4保留给用户自定义,5表示图形登录方式。现在我们只是看到了各服务在每个级别下的开启状态

定义运行级别:# vi /etc/inittab

技术分享图片

技术分享图片

技术分享图片

这里用--level指定级别,后面是服务名,然后是off或者on。选项--level后面还可以指定多个级别

chkconfig还有一个功能,就是可以把某个服务加入到系统服务或者删除,即可以使用"chkconfig --add服务名“或者"chkconfig --del服务名“这样的形式,并且可以在chkconfig --list的结果中查找到

增加某个服务时,首先要把这个服务加入到/etc/init.d/目录下。只有在这个目录下才能加到服务列表中。

技术分享图片

技术分享图片

技术分享图片

10.25 systemd管理服务

centos 7不使用sysv而改为systemd了,这是因为systemd支持多个服务并启动,而sysv只能一个一个地启动,这样最终导致的结果是systemd方式启动会快很多。接下来的知识点也会让你觉得systemd有点复杂。我们不妨对比着chkconfig工具来学习一下systemd。

列出 systemd文件:systemctl list-unit-files

列出systemd服务:systemctl list-units --all --type=service

技术分享图片

不加--all,不显示inactive的服务

一些常用命令:

  • systemctl enable crond.service //让服务开机启动(service可以省略)

技术分享图片

建立了一个软链接/etc/systemd/system/multi-user.target.wants/crond.service -> /usr/lib/systemd/system/crond.service

  • systemctl disable crond //不让开机启动

技术分享图片

移走软链接/etc/systemd/system/multi-user.target.wants/crond.service

  • systemctl status crond //查看状态

技术分享图片

  • systemctl stop crond //停止服务

  • systemctl start crond //启动服务

  • systemctl restart crond //重启服务

  • systemctl is-enabled crond //检查服务是否开机启动

技术分享图片

10.26 unit介绍

我们先来说一个很重要的概念一一unit

  • ls /usr/lib/systemd/system //系统所有unit

技术分享图片

分为以下类型:

  • service 系统服务

  • target 多个unit组成的组

  • device 硬件设备

  • mount 文件系统挂载点

  • automount 自动挂载点

  • path 文件或路径

  • scope 不是由systemd启动的外部进程

  • slice 进程组

  • snapshot systemd快照

  • socket 进程间通信套接字

  • swap  swap文件

  • timer 定时器

以上每种类型的文件都为一个unit,这些unit组成了系统的各个资源(各个服务,各个设备等)。

unit相关命令:

  • systemctl list-units //列出正在运行(active)的unit

  • systemctl list-units --all //列出所有unit(包括失败的或者inactive的)

  • systemctl list-units --all --state=inactive //列出所有inactive的unit

  • systemctl list-units --all --type=service//列出所有状态的service

  • systemctl list-units --type=service//列出状态为active的service

  • systemctl is-active crond.service //查看某个服务是否为active

10.27 target介绍

target类似centos6里面的启动级别,但target支持多个target同时启动。target其实是多个unit的组合。系统启动说白了就是启动多个unit。为了管理方便,就是使用target来管理这些unit

查看系统所有target:systemctl list-unit-files --type=target

技术分享图片

systemctl list-dependencies multi-user.target //查看指定target下面有哪些unit

技术分享图片

systemctl get-default //查看系统默认的target

技术分享图片

systemctl set-default multi-user.target //设置默认的target

技术分享图片

/etc/systemd/system/default.target就是一个软链接

技术分享图片

一个service属于一种类型的unit

多个unit组成了一个target

一个target里面包含了多个service,你可以cat /usr/lib/systemd/system/服务名,查看[install]部分的内容,它定义了该service属于哪一个target。

技术分享图片


以上是关于2018.1.29 8周1次课的主要内容,如果未能解决你的问题,请参考以下文章

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target

2018.1.30 8周2次课

2018.1.31 8周3次课

2018.1.11 5周4次课

2018.1.8 5周1次课