八周一次课(5月11日)
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
Linux任务计划
可能是个shell脚本,也可能是单独命令。不管是何种形式,都需要某个时间去执行,这样就需要确定一个时间。
任务计划的配置文件 etc/crontab
定义了变量,环境变量,命令路径 mailto 发邮件给谁,以及格式。不写用户的话,默认是root
定义Linux任务计划的命令
crontab -e 语法和vim一样
比如设定一个凌晨3点的任务:
解释:
0 3 * * *0分 3点 每天 每月 每日执行
/bin/bash 说明是要执行shell脚本 后面 /user/local/sbin/123.sh 跟的是要执行的脚本 然后写入log 因为每天都执行 所以是追加 后面跟的是错误的log 也追加到这个文件中
也可以使用范围来表示时间
0 3 1-10 */2 2,5
凌晨3点0分 1-10号, */2被2整除也就是闰月 周二周五
然后启动crond这个服务才能使用这个任务计划
systemctl start crond
然后用检查进程是否启动
或者使用 systemctl status crond 检查crond的状态
systemctl stop crond 停掉crond
查看当前的任务计划命令
crontab -l
删除当前的任务计划
crontab -r
查看指定用户的任务计划
crontab -u root -l
注意:
1. 有时候可能因为写的脚本里用的是命令,而不是命令的绝对路径,有可能会导致无法执行。
2. 每写一个任务计划都要写上追加日志,这样有迹可循。
3. 任务计划的文件位置是 /var/spool/cron/root 对应用户的cron root下就是root的,其他用户的cron都有存在对应的用户名下。所以备份的话可以直接拷贝这的文件到其他位置进行拷贝
Linux系统服务管理 -chkconfig
所谓的crontab firewalld 等都是服务,全是服务所以需要有一个服务管理工具。
Centos6是chkconfig,但是7也是同样兼容的。
将服务显示出来
chkconfig --list
解释一下,目前看起来只有2个进程,这样就比较奇怪,其他进程去哪了?
看上面的解释,这个命令值展示SysV服务,不包含systemd服务,意思是6以及之前版本的服务管理机制是sysv,7用的是systemd,所以systemd是7以及以后版本的服务管理器。从top命令也可以看到这个很重要的进程。
那chkconfig管理的服务具体的位置路径是什么地方呢?
/etc/init.d/ 以后在配置ngix mysql的时候可能还需要把启动脚本放到这个路径然后使用chkconfig去管理
可以关闭服务
chkconfig network off
0-6表示不同的服务级别。
0--关机
1--单用户 centos6以及以前版本
2--比3少了一个nfs服务
3--多用户模式 不带图像
4--保留级别
5--多用户,带图形界面
6-- 重启
centos7不存在级别了。6以及之前版本可以通过更改配置文件 /etc/inittab来定义运行级别。
chkconfig 可以指定某个级别是开启或者关闭
chkconfig --level 3 network off/on
也可以将自定义的脚本放到服务中去,必须将脚本放到 /etc/init.d目录下
然后使用命令
chkconfig --add 新服务
当然了,这个新的服务文件的格式必须满足一些条件 才行。我们看一看。下面两行是必须的
chkconfig:
description:
上面的注释的意思是,服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10。 90是启动优先级,10是停止优先级,优先级范围是0-100,数字越大,优先级越低。
有添加就会有删除
chkconfig --del 服务名
服务删除了,文件还在哦
Linux系统服务管理--systemd(centos7的服务管理机制)
显示所有类型的服务的命令
systemctl list-units --all --type=service
不加--all就不会把inactive的列出来
cron服务开机启动/不启动
systemctl enable/disable crond
查看cron状态
systemctl status crond
停止cron服务
systemctl stop crond
启动cron服务
systemctl start crond
重启
systemctl restart crond
检查cron服务是否开机启动
systemctl is-enabled crond
同时从上面可以得到cron的配置文件的内容
从右边软链接到左边,右边是真正的文件路径
enable之后就会生成软链接,disable之后软链接就没有了。
ls /user/lib/systemd/system 就是系统所有的unit 下面是不同类型的分类
service 系统服务
target 多个unit组成的组
device 硬件设备
mount 文件系统挂载点
automount 自动挂载点
path 文件或路径
scope 不是由systemd启动的外部进程
slice 进程组
snapshot systemd的快照
swap swap文件
timer 定时器
CentOS7虽然没有0-6的运行级别,但是也有runlevel异曲同工。
ls -l runlevel*
也是被软链接了。可以从后面看到具体是什么意思。
比如 poweroff 关机 rescue 救援 multi-user 多用户 graphical 图形化 reboot 重启
可以看到命令的类型是target
systemctl list-units 列出正在运行的unit
systemctl list-units --all 列出所有,包括失败的或者inactive的unit
systemctl list-units --all --state=inactive 列出inactive的unit
systemctl list-units --type=service 列出状态为active的service
systemctl is-active crond.service 查看某个服务(此处为cron)是否为active
target 和 unit 究竟是什么关系呢?
target是unit的集合,管理unit,系统也是为了方便管理用target来管理unit
查看target类型的units
systemctl list-unit-files --type=target
查看指定target下面有哪些unit
systemctl list-dependencies multi-user.target 多用户的这个target下面有哪些unit,让人target下面也可以继续有target
查看系统默认的target
systemctl get-default
查看系统默认target的文件
ls -l /etc/systemd/system/default.target 可以看到其实也是一个软链接,真正的文件在/lib/systemd/system/multi-user.target
设置系统默认的target
systemctl set-default multi-user.target 设置完软链接也会变化
一个service属于一种类型的unit 多个unit组成了一个target 一个target里面包含了多个service
cat /usr/lib/systemd/system/sshd.service 查看sshd这个service的具体情况
【install】
wantedby 被multi-user.target需要,也就是说是属于multi-user这个target
原文地址:http://blog.51cto.com/13691454/2115531