Linux系统任务计划和系统服务管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统任务计划和系统服务管理相关的知识,希望对你有一定的参考价值。

一、Linux系统的任务计划

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

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

实例:
1、创建一个计划任务:

[[email protected] ~]# crontab -e
no crontab for root - using an empty one

使用 crontab -e 来进行编写任务计划,这实际上是使用vim工具打开了crontab的配置文件,我们写下如下内容:

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、查看已经设定的任务计划:

[[email protected] ~]# crontab -l
01 10 05 02 1 echo "OK" > /root/cron.log

3、保证crond服务的启动:

[[email protected] ~]# 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
[[email protected] ~]# systemctl stop crond.service      //停止crond服务
[[email protected] ~]# ps aux | grep cron
root       9183  0.0  0.0 112676   972 pts/0    R+   16:29   0:00 grep --color=auto cron
[[email protected] ~]# systemctl start crond.service     //开始crond服务
[[email protected] ~]# 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/目录:
技术分享图片
只能看到几个文件,因为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表示:重新启动

2、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

以上是关于Linux系统任务计划和系统服务管理的主要内容,如果未能解决你的问题,请参考以下文章

linux任务计划 系统服务管理工具chkconfigsystemd

Linux系统管理10——进程和计划任务管理

Linux计划任务(转载)

三十Linux系统任务计划cronchkconfig工具systemd管理服务unit介绍

linux进程和计划任务管理操作题

Linux/Centos7系统管理之进程与计划任务管理