linux设置定时任务
很久没发博客了,说明自己这三四个月确实没怎么积累学习成果了(或者说都是学习比较零散的新知识不足以写成博客)。因为12月份找到了毕业那份工作之后就开始闲下来了,过完年出来正在做一个软件开发的实习(做个搬砖临时工挣个三餐,顺便不想呆在学校宿舍堕落地等待毕业),最近才开始积累些学习成果。最近在做shell脚本的开发,涉及到linux设置定时任务的问题。
1.用crontab/cron命令,可以man一下crontab的用法。
crontab -e : 编辑定时任务,格式如下:
minute hour day-of-month month-of-year day-of-week commands
使用星号*表示任一时间/所有时间,举例:
*/5 * * * * echo "Hello"
这句定时任务表示每5分钟echo一次"Hello",/5 的作用就表示每5(分钟)。echo输出的内容并不出输出到命令行中,可以将其重定向到文件当中:
echo "Hello" /home/admi/test.log
更多crontab详细写法网搜。
command自然可以是执行一个脚本:
* * * * * /home/admi/test.sh
这句定时任务表示每分钟执行一遍test.sh脚本,更复杂的定时任务就应该以这样形式,先写在脚本上,然后定时去执行这个脚本(注意要提前给它可执行权限)。2.定时任务之发邮件
可以直接在crontab -e 指定邮件地址,使用 MAILTO关键字修改发邮件地址,如:
MAILTO=hello@email.com
然后每次执行定时任务之后都会将结果发送给该邮件地址。
另一种方法是在shell脚本里面用mail关键字,mail是使用sendmail服务的,貌似要先安装sendmail服务,自行网搜。mail用法如下:
mail -s "This is subject" -c "hello@email.com haha@email.com" hi@email.com < /home/admi/test.log
-s参数后面跟的是邮件的主题;-c参数接的是抄送的地址,如果有多个抄送地址则要用双引号引起来,当然-c这个参数可以不要;往后hi@email.com是主邮件地址;再往后接的是邮件正文,你可以直接随便打一些字符串上去,也可以像上面那样用" < /home/admi/test.log "表示将test.log文件里面的内容当作正文发邮件出去。
更详细用法网搜。
貌似mutt发邮件更强大?今天试了下mail命令-a参数的附件功能,一直卡住发不出去邮件,不知啥原因,用mutt也是-a参数发带附件的邮件一下子就好了,貌似mutt快捷?附一个mutt的使用方法链接: linux shell发送带附件的邮件