作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
本小章内容就是Linux进阶部分的日常运维部分,掌握这些日常运维技巧或者方法在我们的日常运维过程中会带来很多方便。主要从以下几个部分来讲解:
Linux日常运维-主机名&hosts
Linux日常运维-history
Linux日常运维-SSHD(一)
Linux日常运维-SSHD(二)
Linux日常运维-ENV(一)
Linux日常运维-ENV(二)
Linux日常运维-任务计划cronttab(本章节)
当我们有些任务需要在凌晨执行或者其他人工不方便执行的时间去执行的时候,应该怎么办呢?这里就引入了Linux一个非常重要的特性就是任务计划,它可以按照我们指定时间去执行对应的任务。
在Linux中,可以使用crontab来设置和管理任务计划。crontab是一个用于定期执行命令或脚本的工具,可以按照指定的时间间隔自动运行任务。
以下是一些常见的使用crontab来设置任务计划的步骤:
查看现有的crontab任务:使用以下命令可以查看当前用户的crontab任务列表:
crontab -l
编辑或创建新的crontab任务:使用以下命令可以编辑或创建一个新的crontab任务:
crontab -e
在打开的编辑器中,每行代表一个任务计划,格式如下:
* * * * * command
例如,如果要在每天的早上8点运行一个脚本,可以使用以下行:
0 8 * * * /path/to/script.sh
编辑完成后,保存并关闭编辑器,这里的操作方式和用vi编辑文件是一样的效果。
删除crontab任务:如果要删除当前用户的所有crontab任务,可以使用以下命令:
#一般用的比较少,常用的是删除或者注释任务
crontab -r
注意:这将删除当前用户的所有crontab任务,请谨慎使用。
-
-
第一个星号表示分钟(0-59)
-
第二个星号表示小时(0-23)
-
第三个星号表示日期(1-31)
-
第四个星号表示月份(1-12)
-
第五个星号表示星期几(0-7,其中0和7都表示星期日)
-
这些是设置和管理任务计划的基本步骤。可以根据具体的需求调整crontab任务的设置。
优先级说明
这五个时间单位的优先级从左到右依次降低。根据这五个时间单位的取值,可以设置不同的定时任务。例如:
-
如果在分钟、小时、日期、月份和星期几的位置上都使用了星号(*),表示任务将在每分钟都执行。
-
如果在分钟位置上使用了特定的数字,而其他位置上使用了星号(*),表示任务将在每小时的特定分钟执行。
-
如果在小时位置上使用了特定的数字,而其他位置上使用了星号(*),表示任务将在每天的特定小时执行。
-
如果在日期位置上使用了特定的数字,而其他位置上使用了星号(*),表示任务将在每月的特定日期执行。
-
如果在月份位置上使用了特定的数字,而其他位置上使用了星号(*),表示任务将在每年的特定月份执行。
-
如果在星期几位置上使用了特定的数字,而其他位置上使用了星号(*),表示任务将在每周的特定星期几执行。
请注意,星号(*)表示通配符,意味着该时间单位的所有取值都适用。而特定的数字表示具体的取值,例如1代表1号,2代表2点等。
根据具体需求,可以根据时间单位的优先级来设置crontab任务的时间间隔。请确保设置正确的时间间隔,以确保任务按预期执行。
每分钟,用 *
每2分钟,则用*/2
每5分钟,则用*/5
其他依次类推,绝大部分任务都是在分钟和小时2个参数进行调整。
主要用途
1.定时切割日志,删除文件
nginx等web服务器的日志轮询,然后删除过期的日志等
#凌晨1点执行,可以跟具体的命令,也可以跟脚本路径,注意环境变量有效性
* 1 * * * * Command
2.检查进程存活
常用于各种服务,比如zk,kafka,等中间件的进程监控,如果不正常则执行启动
#每2分钟检查一次进程是否正常,如果不正常则执行后续启动或其他动作
*/2 * * * * Command
3.定期备份
用于定期备份数据库或者备份业务文件
#每天凌晨5点做备份数据库,或者同步文件操作
* 5 * * * Command
总结
1.Linux任务计划的规则其实很简单,只要理解到规则就可以根据自己的需要编写对应的规则。对应的规则可以直接是命令,也可以是脚本。
2.Linux任务计划是分用户的,尤其是多用户运维的服务器。
3.Linux任务计划最小粒度是分钟,如果需要更精细的角度来执行,可以通过把命令放置到脚本里面,然后通过脚本来实现秒级的粒度的控制。
4.在前面讲文件搜索的时候,我们讲过Linux有自带的几个目录,里面放置的就是根据单词提示的执行任务。这里的任务,通过crontab -l命令都是看不到的。如果有任务计划未按照预期执行,可以检查cron.deny 。
[root@localhost ~]# ls /etc/|grep cron
cron.d/ //系统部分自带会将任务放置在里面
cron.daily/ //每天执行
cron.deny //不允许执行任务计划的用户
cron.hourly/ //每小时执行
cron.monthly/ //每月执行
crontab //直接编辑就可以执行
cron.weekly/ //每周执行
关注微信公众号《运维小路》获取更多内容。