linux任务计划cron、chkconfig工具、systemd管理服务、unit和target介绍
第8周第1次课(5月14日)
课程内容:
10.23 linux任务计划cron
10.24 chkconfig工具
10.25 systemd管理服务
10.26 unit介绍
10.27 target介绍
扩展
1. anacron http://blog.csdn.net/strikers1982/article/details/4787226
2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装) http://blog.sina.com.cn/s/blog_465bbe6b010000vi.html
3. systemd自定义启动脚本 http://www.jb51.net/article/100457.htm
10.23 linux任务计划cron
在Linux中任务计划是必不可少的,例如有时候需要在凌晨执行数据备份,系统自带的任务计划配置文件是/etc/crontab
[root@jimmylinux-002 ~]# crontab -e 使用crontab -e 去定义任务计划
格式:分 时 日 月 周 user command
文件/var/spool/cron/username
分范围0-59,时范围0-23,日范围1-31,月范围1-12,周1-7
可用格式1-5表示一个范围1到5
可用格式1,2,3表示1或者2或者3
可用格式*/2表示被2整除的数字,比如小时,那就是每隔2小时
要保证服务是启动状态
[root@jimmylinux-002 ~]# systemctl start crond 启动任务计划服务
[root@jimmylinux-002 ~]# ps aux |grep cron 检查服务是否启动,如果有crond进程就说明已经启动。
[root@jimmylinux-002 ~]# systemctl status crond 也可以使用这个命令检查,如果active是绿色状态,也说明服务有被启动,假如把服务停掉,那么active没有绿色标注。
任务计划服务一定要启动,否则不生效,另外任务计划配置文件里面的命令一定要写绝对路径,同时指定文件输出正确和错误的日志,方便检查故障原因。
实例:
crontab -e
[root@jimmylinux-002 ~]# crontab -l 查看刚才加的任务计划内容
[root@jimmylinux-002 ~]# cat /var/spool/cron/root 这个里面有对应用户的cron,root的就是root的cron,user1的就是user1的cron。
如果需要备份任务计划,那直接复制cron文件或者复制这个目录/var/spool/cron/root也行。
cron -l 列出cron
cron -e 编辑内容
cron -r 删除cron
cron -u 指定用户
10.24 chkconfig工具
Linux系统服务管理-chkconfig,在CentOS6里面有这个工具,CentOS7同样也兼容chkconfig工具。
[root@jimmylinux-002 ~]# chkconfig --list 查看当前系统里面使用chkconfig工具的服务都有哪些。
chkconfig 在6以及之前的版本系统使用的服务管理机制sysv,7版本使用服务管理机制是systemd。
[root@jimmylinux-002 ~]# top 使用top查看进程1显示是systemd,说明这个进程也是非常重要的,在6版本中进程1是init。
这些服务在/etc/init.d/ 这个路径下
[root@jimmylinux-002 ~]# chkconfig network off 把指定的服务做一个变更
0-6有6个级别,在6和6之前的版本,0表示关机,1表示单用户(在6和之前版本中)2和3就差一个地方,3表示多用户模式,只是不带图形,而2比3只少了一个nfs服务,4表示保留,5表示多用户而且带图形,6表示重启。
如果把系统定位在1级别,一启动就到了1级别单用户,如果定位到6是启动不了的,所以在7的系统中不在区分6个级别,而在6和之前的版本是有区分的。
[root@jimmylinux-002 ~]# vi /etc/inittab 在6系统的版本中修改这个文件可以去定义系统启动的级别,而在7系统中已经不在区分。
chkconfig可以去把一个服务开机启动,也可以让开机不启动,也可以指定某一个级别是开启或关闭。
当然0、1、6级别不能够设置为开,因为重启的时候不可能先开启,而重启的那一刻应该是关闭的,而且关机模式也是不可能开启的。
同样也可以把一个脚本加入到服务列表里面来,操作实例如下:
自定义一个服务
首先把123这个启动脚本放到/etc/init.d这个目录里面去,只有在这个目录下才能够添加到服务列表里面去,这样就到到达上面的效果了。
能够增加也同样可以删除,执行chkconfig --del 123 就可以删除掉。
10.25 systemd管理服务
[root@jimmylinux-002 init.d]# systemctl list-units --all --type=service
列出所有服务
systemctl list-units --type=service
如果不加--all 只列出active,inactive就不会列出来。
几个常用的服务相关的命令
systemctl enable crond.service //让服务开机启动
systemctl disable crond //不让开机启动
systemctl status crond //查看状态
systemctl stop crond //停止服务
systemctl start crond //启动服务
systemctl restart crond //重启服务
systemctl is-enabled crond //检查服务是否开机启动
10.26 unit介绍
ls /usr/lib/systemd/system //系统所有unit,分为以下类型
service 系统服务
target 多个unit组成的组
device 硬件设备
mount 文件系统挂载点
automount 自动挂载点
path 文件或路径
scope 不是由systemd启动的外部进程
slice 进程组
snapshot systemd快照
socket 进程间通信套接字
swap swap文件
timer 定时器
查看target级别,和CentOS6一样有7个运行级别。
unit里面有一种类型叫target,target实际上就是多个service或者多个unit组成的一个组,然后形成了一个target。
unit相关的命令
systemctl list-units //列出正在运行的unit
systemctl list-units --all //列出所有,包括失败的或者inactive的
systemctl list-units --all --state=inactive //列出inactive的unit
systemctl list-units --type=service//列出状态为active的service
systemctl is-active crond.service //查看某个服务是否为active
10.27 target介绍
系统为了方便管理,所以用target来管理unit
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时候也会创建一个软连接
一个service属于一种类型的unit
多个unit组成了一个target
一个target里面包含了多个service
cat /usr/lib/systemd/system/sshd.service //查看一个服务属于哪个target,只需要看[install]部分就可以看出属于哪个target
总结:
系统systemd这个管理机制有些复杂,尤其使用命令比较繁琐,系统可以说有多种unit组成的,那么这么多unit为了方便管理,我们就把他们归类,归类成若干的类,每一类每一组就把它叫作target,也就说target是由多个unit组成的,service它属于一种类型的target,一个target里面包含了若干的service,而且还可以使用get-dufault查看系统默认target,也可以使用set-dufault去设置默认target。