Linux系统的任务计划

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 关于cron任务计划功能的操作都是通过crontab这个命令来完成的。

常用的选项有:

-u :指定某个用户,不加-u选项则为当前用户; -e :制定计划任务; -l :列出计划任务; -r :删除计划任务。

案例

1、创建一个计划任务: [root@zlinux ~]# crontab -e no crontab for root - using an empty one 使用 crontab -e 来进行编写任务计划,我们写下如下内容: 01 10 05 02 1 echo "OK" > /root/crob.log

每个字段的数字从左到右分别表示为:分,时,日,月,周,命令行。 而上面的例子的含义是:在2月5日(这一天必须是星期1)的10点01分执行命令echo "ok" > /root/cron.log。

这是的时间范围是:

1、分范围0-59,时范围0-23,日范围0-31,月范围0-12,周1-7 2、可用格式1-5表示一个范围1到5 3、可用格式1,2,3,表示1或者2或者3 4、可用格式*/2表示被2整除的数字,比如小时,那就是每隔2小时 crontab -e 实际上是打开了 /var/spool/cron/username (如果是root则打开的是/var/spool/cron/root)这个文件。使用的是vim编辑器,所以要保存的话则在命令模式下输入:wq即可。但是,你千万不要直接去编辑那个文件,因为可能会出错,所以一定要使用crontab -e来编辑。 2、查看已经设定的任务计划: [root@zlinux ~]# crontab -l 01 10 05 02 1 echo "OK" > /root/cron.log 3、保证crond服务的启动: [root@zlinux ~]# ps aux | grep crond //查看crond启动状态 root 535 0.0 0.0 126264 1640 ? Ss 1月25 0:01 /usr/sbin/crond -n root 9166 0.0 0.0 112676 976 pts/0 R+ 16:28 0:00 grep --color=auto cron [root@zlinux ~]# systemctl stop crond.service //停止crond服务 [root@zlinux ~]# ps aux | grep cron root 9183 0.0 0.0 112676 972 pts/0 R+ 16:29 0:00 grep --color=auto cron [root@zlinux ~]# systemctl start crond.service //开始crond服务 [root@zlinux ~]# ps aux | grep cron root 9193 0.0 0.0 126232 1580 ? Ss 16:29 0:00 /usr/sbin/crond -n root 9195 0.0 0.0 112676 976 pts/0 S+ 16:29 0:00 grep --color=auto cron


二、Linux系统服务管理

1、chkconfig服务管理工具

chkconfig命令检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。 chkconfig主要用于CentOS6,Linux系统所有预设服务都可以通过查看/etc/init.d/目录:

[root@localhost ~]# ls /etc/init.d/ functions iprdump iprinit iprupdate netconsole network README [root@localhost ~]#

只能看到几个文件,因为CentOS7不再延续6的服务管理方案,但是依然可以使用这个命令。 命令实例: chkconfig --list //列出所有的服务来及每级别开启状态 chkconfig --level 3 network off //network服务3级别关闭 chkconfig --level 345 network off //network服务345级别奢望i关闭 chkconfig --del network //删除服务 chkconfig --add network //增加服务 等级代号含义: 等级0表示:表示关机 等级1表示:单用户模式 等级2表示:无网络连接的多用户命令行模式 等级3表示:有网络连接的多用户命令行模式 等级4表示:不可用 等级5表示:带图形界面的多用户模式 等级6表示:重新启动


systemd服务管理

systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。首先列出所有系统服务: systemctl list-units --all --type=service 这些服务的对应的脚本文件在/usr/lib/systemd/system/目录下。 几个常用服务相关的命令: systemctl enable crond.service //让服务开机启动 systemctl disable crond //不让开机启动 systemctl status crond //查看状态 systemctl stop crond //停止服务 systemctl start crond //启动服务 systemctl restart crond //重启服务 systemctl is-enabled crond //检查服务是否开机启动

1.unit

ls /usr/lib/systemd/system //系统所有unit unit类型: service: 系统服务 target: 多个unit组成的组 device: 硬件设备 mount: 文件系统挂载点 automount: 自动挂载点 path: 文件或路径 scope: 不是由systemd 启动的外部进程 slice: 进程组 snapshot: systemd快照 socket: 进程间通信套接字 swap: swap文件 timer: 定时器 以上每种类型的文件都为一个unit,正是这些unit才组成了系统的各个资源。 与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

2、target

系统为了方便管理用target来管理unit。 几个关于target的命令: systemctl list-unit-files --type=target //查看所有target systemctl list-dependencies multi-usrt.target //查看指定target下面有哪些unit systemctl get-default //查看系统默认的target systemctl set-default multi-user.target //设置默认target service、unit和target之间的关系: 1、一个service属于一种类型的unit 2、多个unit组成了一个target 3一个target里面包含了多个service,可以查看 /usr/lib/systemd/system/sshd.service看[install]部分,定义了该属于那个target