学习Linux(1)

好记性不如烂笔头,看到好的知识点 记录下来,用的时候既能查阅也能检验理解是否正确

linux定时原理 crontab 定时脚本

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
Linux下的任务调度分为两类,系统任务调度和用户任务调度。
1.系统工作,有些重要的工作必须周而复始的执行,比如病毒扫描
2.个别用户工作,个别用户可能希望执行某些程序,比如定时打开音乐播放器

基本命令 :

crontab的几个服务命令
service crond start              //启动服务
service crond stop              //关闭服务
service crond restart          //重启服务
service crond reload          //重新载入配置
service crond status        //查看crontab服务状态

crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录。

删除当前用户的crontab文件
crontab -r
列出当前有哪些任务调度
crontab -l 

基本格式 :

*  *  *  *  *  command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令 

在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

个人任务调度命令

crontab -e
接着输入任务调度文件  如 : * * * * * date >> /home/yixiang/mytask1
此句命令表示:每一分钟将时间写入到/home/yixiang/mytask1中

举个例子:(亲测有效)

* * * * * echo "hello world!\n" >> /var/www/html/test_log.txt
#每分钟向/var/www/html/test_log.txt文件中输入"hello world!"

* * * * * /usr/bin/php -f /var/www/html/test_log.php >> /var/www/html/test_log.txt
#每分钟用php执行/var/www/html/test_log.php文件 并记录至 /var/www/html/test_log.txt

test_log.php:
<?php
$new_log = "newtime:".date('Y-m-d H:i:s',time()).PHP_EOL;
$log_file= "/var/www/html/test_log.txt";
file_put_contents($);
echo "记录了一次时间\ns";

系统任务调度:
系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。
任务调度文件的位置/etc/crontab
/etc/crontab文件包括下面几行:

[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""HOME=/
# run-parts
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
[root@localhost ~]#

前四行是用来配置crond任务运行的环境变量
第一行SHELL变量指定了系统要使用哪个shell,这里是bash,
第二行PATH变量指定了系统执行命令的路径,
第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,
第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。第六至九行表示的含义将在下个小节详细讲述。这里不在多说。用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。
用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。


两种方法设置crontab定时任务
第一种:
1.crontab -e 进入任务调度界面
2.* * * * * date >> /home/mytask1 将日期追加写入到/home/mytesk1文件中

第二种:
1.切换到root cd /root; ls; vi mytask.sh;
2.进入vi 输入想要进行的程序 date >> mytask2 将日期追加写入到/home/mytesk2文件中
3.赋予文件可执行权限 chomd 774 mytask.sh
4.crontab -e 进入任务调度界面
5.* * * * * /root/mystak.sh

第二种命令运用shell编程来进行多命令的编写,这样即使有很多用户进行任务调度系统也不会出现混淆,所以很大程序的保证了程序运行的安全和稳定,同时这种方法也相对显得简单,只需要调用一个shell文件即可


具体参考:
Linux下crontab定时执行本地脚本和定时访问指定url
linux命令大全之crontab命令使用详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值