笔记内容:

10.23 linux任务计划cron

10.24 chkconfig工具

10.25 systemd管理服务

10.26 unit介绍

10.27 target介绍

笔记时间:2017.9.1

 

10.23 linux任务计划cron

wKioL1nlyRjzu4V_AAoUnM-5_jA552.png


Linux系统当中任务计划是必不可少的,因为有时候可能需要凌晨的时候去做一些操作,例如要执行shell脚本、备份文件、执行某个命令等等。我们需要设定一个时间去执行这些操作,Windows因为是作为个人电脑系统居多,所以任务计划在Windows中不怎么常见。

  /etc/crontab是任务计划的配置文件:

wKiom1nly9HDNKagAAfuJLaHozU578.png

每个* 表一位,分别是分、时、日、月、周,如果不指定用户的话,默认是root


crontab -e命令可以进入到crontab的配置文件当中,用法跟vim是一样的:

wKioL1nlyRyRIcEyAAK--ZkGXmY048.png

  *写在分上表示每一分钟都执行,写在时上表示每一小时都执行,写在天上表示这个月的每一天都执行,写月上表示每一个月都执行,写周上表示每一个周都执行,* 写在日月周的位上表示每天都执行。


如果你想指定一个日期范围可以这么写:

wKiom1nly9PTKlVNAAJfjUsVvfY579.png

1-10是指定一个月的天数范围,*/2表示用月份除以二,也就是指定为偶数的月份,2,3这个月的表示第2和第3周。

 

想要使用crontab 任务计划的话就需要启动crond服务:

wKioL1nlyR7Dvx5pAAD8x-9bnCk418.png


想要确定服务是否启动起来了,可以使用ps aux|grep crond命令查看:

wKioL1nlyR7iAyeWAAJfjeoJtRU527.png


还可以使用systemctl status crond命令查看这个服务的状态:

wKiom1nly9bxJ93CAAT7dyxp06I163.png


systemctl stop crond命令可以停止crond服务。

 

如果你写了一个任务计划,并且服务运行正常,配置的格式也正确,但是到设定的时候却没有执行这个任务计划。这很有可能是你在任务计划的配置文件里写的命令不是绝对路径,如果不是绝对路径的话,就会去找PATH环境变量里是否有配置这条命令,PATH环境变量里没有的话,那么这个任务计划就会执行失败,因为找不到命令的执行路径,所以在任务计划的配置文件里写命令的时候,最好写这个命令的绝对路径。

建议在写任务计划的配置文件的时候将这个任务计划里的命令执行后的结果集重定向到一个日志文件里,错误的信息也是。这样的话才能够保证这个任务有据可查,当这个任务计划执行失败或出问题的话,就可以去查看日志文件,看看其中的错误信息是什么,这样有利于问题的解决。

 

crontab -l 命令可以看到有哪些任务计划:

wKioL1nlySCBPeA6AAFHHsJqYgM535.png

wKiom1nly9fCp6oZAALfkrbw2OE321.png


crontab 文件在/var/spool/cron/目录下,文件会以设定任务计划的用户名定义:

wKiom1nly9nyIBB5AAK97Gx9r_I113.png

所以要进行备份的话,就直接拷贝文件或cron目录即可。

 

crontab -r命令删除任务计划:

wKioL1nlySORoHFlAAFjjPyg56s146.png


crontab -u 指定某个用户,例如我要查看root用户的任务计划:

wKioL1nlySSzy4hOAAE1e2vOs40386.png





10.24 chkconfig工具

wKiom1nly97DVO60AAgZfWzc5ko696.png


我们都知道Linux系统里会有很多服务,例如刚刚使用的crond服务、mysql服务、Nginx服务、httpd服务等等,因为有这么多的服务,所以我们需要一个工具来管理,这个工具就是chkconfig。这是CentOS6之前版本所用的一个工具,在CentOS7里已经不使用了,但是为了向之前的版本兼容,所以在CentOS7任然可以使用。虽然这个工具已经不怎么用了,现在的发展趋势也可能会淘汰掉这个工具,但是因为现在还能够使用,所以我们需要了解一些相关的操作。

 

chkconfig --list 命令可以查看当前系统使用chkconfig 工具的服务:

wKioL1nlySqQYYMNAAQZ9M3FJo0315.png

从显示的结果可以看到,现在系统使用chkconfig 工具的服务只有两个,并且也提示了在CentOS7里的的服务模式是systemd

 

这些使用chkconfig 工具的服务的脚本都在/etc/init.d/目录下:

wKiom1nly-CiXasJAAE9P_-0nl0333.png


chkconfig network off命令可以关闭network 服务:

wKioL1nlySzAKvc2AARfVK38cUw336.png


chkconfig network on命令可以开启network 服务:

wKiom1nly-ShbfkxAARoCZyRGZw446.png


这里的级别表示的是CentOS6版本的系统运行级别,在CentOS7里是没有这个运行级别的:

0级别表示关机状态

1级别表示单用户模式

2级别表示是命令行的多用户模式,但是和3级别的区别是没有nfs服务

3级别表示是命令行的多用户模式

4级别表示保留状态,没什么卵用

5级别表示图形界面的多用户模式

6级别表示重启

 

chkconfig --level 3 network off 命令可以关闭network 服务的3级别:

wKiom1nly-ei6KZDAAS-wKW-2e0074.png


chkconfig --level 345 network off 命令可以关闭345级别:

wKioL1nlyTLjFHHKAAScEJpuR5M990.png


chkconfig --level 345 network on 命令则是相反可以开启345级别:

wKiom1nly-qDNAuxAASkxUUXO5Q332.png


  chkconfig --add 可以添加服务,只能添加/etc/init.d/目录下的脚本,例如我直接把network脚本拷贝成另一个名称的文件,然后添加上去:

wKioL1nlyTigRxcYAAkdteZ48NE875.png


  这个脚本名称可以任意,但是文件内容的格式有要求,首先得是shell脚本,还得指定在chkconfig 里的运行级别,而且还得有description描述:

wKioL1nlyUDRTqRsABD6Id_KU3Q924.png


chkconfig --del 命令可以删除chkconfig 里的服务:

wKiom1nly_jQdcLpAAR5W1MEU9s533.png





10.25 systemd管理服务

wKioL1nlyUijEkhMAAqswwsXvzE614.png

systemdCentOS7的一个服务管理机制,systemctl list-unit-files命令可以查看所有的服务:

wKiom1nlzASh9lhmAA145CcHJ3U557.png


  systemctl list-units --all --type=service命令仅仅查看service,这样显得没那么乱:

wKiom1nlzAiRE4OLAAmXKM5qY-8391.png

按空格键可以往下翻页。



如果不加--all选项的话,就不会列出inactiveservice

wKioL1nlyVeB10zUAAoQmzKOknA366.png


让服务开机启动

wKiom1nlzA2SXlqiAAFHIuewByc545.png


禁止服务开机启动:

wKioL1nlyZ2Dy0gcAAIAIcW90Xw623.png


查看服务状态:

wKiom1nlzFWQ_lO-AAUM1cp7m8s238.png


停止服务:

wKioL1nlyZ_g2bw_AADpv-5plFQ477.png


启动服务:

wKiom1nlzFWi1V6ZAAEE0Cwv40o996.png


重启服务:

wKioL1nlyaDBe7heAAE5w_Exn1g116.png


检查服务是否开机启动:

wKioL1nlyaGiOkxQAAFmOfgiiWw268.png


  设置服务开机启动时会有此服务配置文件路径的信息,这个路径是一个软链接,而这个配置文件的真正路径是/usr/lib/systemd/system/crond.service.

wKiom1nlzFfyLEvXAAGyGB8LkPU064.png

wKiom1nlzFfjez0rAAEvcAwZ_Og448.png


如果是设置为禁止服务开机启动的话,也会有一个信息,这个信息是把那个软链接删除了的信息:

wKioL1nlyaOSF4v8AALqXiIFzbk903.png




10.26 unit介绍

wKioL1nlyajgmNrjAAsDdaGL2fw754.png


系统的所有unit都在/usr/lib/systemd/system/路径下:

wKiom1nlzGLxCdClAAkVDLExwmE731.png


  target是由多个unitservice组成的一个组,在CentOS7里也有类似于CentOS6的运行级别,不同级别的target对应着不同的级别的运行模式:

wKioL1nlya6ST14UAARwsi7R2eM315.png



wKiom1nlzGXSh_G5AAUkgRpHPuc563.png


列出正在运行的unit

wKiom1nlzGmwJq98AAgIK7qtfK8429.png


列出所有,包括失败的或者inactiveunit

wKioL1nlybfhqMcXAAf7xqJALqs082.png


列出inactiveunit

wKioL1nlybzwEAu0AAtRj-1DU74109.png


列出状态为activeservice

wKiom1nlzHehyom8AAoh7Qv8Om0838.png


查看某个服务是否为activeinactive

wKioL1nlycKDqOJQAAGiw_P35rc654.png


查看某个服务是否为enabledisable

wKiom1nlzHiDx3q1AAFmZfTNPgc646.png






10.27 target介绍

wKioL1nlycWh9yUgAAdsCN2mL-Y901.png

target是由多个unitservice组成的一个组,相当于unitservice的一个集合,但是target下也可以包含target

  列出系统里所有的target

wKiom1nlzIPT4q-aAA-fsG82-hQ594.png

查看指定target下面有哪些unitservic,例如我要查看multi-user.target下面的unitservic

wKiom1nlzIvzNa1bAA9ib0TPBPg459.png


查看系统默认的target

wKioL1nlydai3s6FAAFwsIHzmgE562.png

CentOS7里可以通过修改target来改变系统的运行级别。



设置默认的target,会创建一个软链接:

wKiom1nlzIzwBnSsAAK2UF09cz8832.png


  想要查看某个servic属于哪个target的话,cat那个service的文件内容看Install部分就知道了,例如我要查看sshd.service属于哪个target

wKiom1nlzJDyWQlGAAlwJNndtR0973.png



所以target就是由多个unit组成的,而unit又是由多个service组成的,所以target包含unitservice,而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