八周一次课(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小时
- 要保证服务是启动状态:#systemctl start crond
查看服务是否启动:
#ps aux|grep cron
#systemctl status crond
- 停止服务:#systemctl stop crond
- 计划任务里的命令尽量写绝对路径,同时要写入到日志,正确执行追到正确执行日志里,错误日志追到到错误执行日志里
- 命令crontab -e实际上是打开了/var/spool/cron/username文件,在/var/spool/cron/里有对应的用户的cron。以用户名字命名的(如果用户是root,则打开的 /var/spool/cron/root)。
打开这个文件使用了vim编辑器,所以保存时在命令行模式下输人:wq即可。但是请千万不要直接去编辑那个文件,否则会出错,所以一定要使用命令crontab -e来编辑
- 查看已经设定的任务计划:crontab -l
- 删除任务计划: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。
原文地址:http://blog.51cto.com/415326/2066580