笔记内容:
l 10.23 linux任务计划cron
l 10.24 chkconfig工具
l 10.25 systemd管理服务
l 10.26 unit介绍
l 10.27 target介绍
笔记时间:2017.9.1
10.23 linux任务计划cron
在Linux系统当中任务计划是必不可少的,因为有时候可能需要凌晨的时候去做一些操作,例如要执行shell脚本、备份文件、执行某个命令等等。我们需要设定一个时间去执行这些操作,Windows因为是作为个人电脑系统居多,所以任务计划在Windows中不怎么常见。
/etc/crontab是任务计划的配置文件:
每个* 表一位,分别是分、时、日、月、周,如果不指定用户的话,默认是root。
crontab -e命令可以进入到crontab的配置文件当中,用法跟vim是一样的:
*写在分上表示每一分钟都执行,写在时上表示每一小时都执行,写在天上表示这个月的每一天都执行,写月上表示每一个月都执行,写周上表示每一个周都执行,* 写在日月周的位上表示每天都执行。
如果你想指定一个日期范围可以这么写:
1-10是指定一个月的天数范围,*/2表示用月份除以二,也就是指定为偶数的月份,2,3这个月的表示第2和第3周。
想要使用crontab 任务计划的话就需要启动crond服务:
想要确定服务是否启动起来了,可以使用ps aux|grep crond命令查看:
还可以使用systemctl status crond命令查看这个服务的状态:
systemctl stop crond命令可以停止crond服务。
如果你写了一个任务计划,并且服务运行正常,配置的格式也正确,但是到设定的时候却没有执行这个任务计划。这很有可能是你在任务计划的配置文件里写的命令不是绝对路径,如果不是绝对路径的话,就会去找PATH环境变量里是否有配置这条命令,PATH环境变量里没有的话,那么这个任务计划就会执行失败,因为找不到命令的执行路径,所以在任务计划的配置文件里写命令的时候,最好写这个命令的绝对路径。
建议在写任务计划的配置文件的时候将这个任务计划里的命令执行后的结果集重定向到一个日志文件里,错误的信息也是。这样的话才能够保证这个任务有据可查,当这个任务计划执行失败或出问题的话,就可以去查看日志文件,看看其中的错误信息是什么,这样有利于问题的解决。
crontab -l 命令可以看到有哪些任务计划:
crontab 文件在/var/spool/cron/目录下,文件会以设定任务计划的用户名定义:
所以要进行备份的话,就直接拷贝文件或cron目录即可。
crontab -r命令删除任务计划:
crontab -u 指定某个用户,例如我要查看root用户的任务计划:
我们都知道Linux系统里会有很多服务,例如刚刚使用的crond服务、mysql服务、Nginx服务、httpd服务等等,因为有这么多的服务,所以我们需要一个工具来管理,这个工具就是chkconfig。这是CentOS6之前版本所用的一个工具,在CentOS7里已经不使用了,但是为了向之前的版本兼容,所以在CentOS7任然可以使用。虽然这个工具已经不怎么用了,现在的发展趋势也可能会淘汰掉这个工具,但是因为现在还能够使用,所以我们需要了解一些相关的操作。
chkconfig --list 命令可以查看当前系统使用chkconfig 工具的服务:
从显示的结果可以看到,现在系统使用chkconfig 工具的服务只有两个,并且也提示了在CentOS7里的的服务模式是systemd。
这些使用chkconfig 工具的服务的脚本都在/etc/init.d/目录下:
chkconfig network off命令可以关闭network 服务:
chkconfig network on命令可以开启network 服务:
这里的级别表示的是CentOS6版本的系统运行级别,在CentOS7里是没有这个运行级别的:
0级别表示关机状态
1级别表示单用户模式
2级别表示是命令行的多用户模式,但是和3级别的区别是没有nfs服务
3级别表示是命令行的多用户模式
4级别表示保留状态,没什么卵用
5级别表示图形界面的多用户模式
6级别表示重启
chkconfig --level 3 network off 命令可以关闭network 服务的3级别:
chkconfig --level 345 network off 命令可以关闭3、4、5级别:
chkconfig --level 345 network on 命令则是相反可以开启3、4、5级别:
chkconfig --add 可以添加服务,只能添加/etc/init.d/目录下的脚本,例如我直接把network脚本拷贝成另一个名称的文件,然后添加上去:
这个脚本名称可以任意,但是文件内容的格式有要求,首先得是shell脚本,还得指定在chkconfig 里的运行级别,而且还得有description描述:
chkconfig --del 命令可以删除chkconfig 里的服务:
systemd是CentOS7的一个服务管理机制,systemctl list-unit-files命令可以查看所有的服务:
systemctl list-units --all --type=service命令仅仅查看service,这样显得没那么乱:
按空格键可以往下翻页。
如果不加--all选项的话,就不会列出inactive的service:
让服务开机启动
禁止服务开机启动:
查看服务状态:
停止服务:
启动服务:
重启服务:
检查服务是否开机启动:
设置服务开机启动时会有此服务配置文件路径的信息,这个路径是一个软链接,而这个配置文件的真正路径是/usr/lib/systemd/system/crond.service.:
如果是设置为禁止服务开机启动的话,也会有一个信息,这个信息是把那个软链接删除了的信息:
系统的所有unit都在/usr/lib/systemd/system/路径下:
target是由多个unit、service组成的一个组,在CentOS7里也有类似于CentOS6的运行级别,不同级别的target对应着不同的级别的运行模式:
列出正在运行的unit:
列出所有,包括失败的或者inactive的unit:
列出inactive的unit:
列出状态为active的service:
查看某个服务是否为active或inactive:
查看某个服务是否为enable或disable:
target是由多个unit、service组成的一个组,相当于unit、service的一个集合,但是target下也可以包含target。
列出系统里所有的target:
查看指定target下面有哪些unit、servic,例如我要查看multi-user.target下面的unit、servic:
查看系统默认的target:
在CentOS7里可以通过修改target来改变系统的运行级别。
设置默认的target,会创建一个软链接:
想要查看某个servic属于哪个target的话,cat那个service的文件内容看Install部分就知道了,例如我要查看sshd.service属于哪个target:
所以target就是由多个unit组成的,而unit又是由多个service组成的,所以target包含unit和service,而target下也可以包含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