当前位置: 代码迷 >> 综合 >> linux设置定时任务——crontab
  详细解决方案

linux设置定时任务——crontab

热度:57   发布时间:2023-12-16 08:57:34.0

起初的时候是为了写一个开机自启动的脚本能够开机后自动执行一些自己写好的脚本做一些事情。
假定脚本可行且调用无误的情况下,开机自启动脚本的方法有这几种:
1.
terminal 中输入cd /etc/rc*.d,
你可以在里面看到很多的(软)link文件,指向的是/etc/init.d/里面的文件,
(顺便说一下,你会看到很多的rc*.d文件夹,这里的数字表示开机等级)
所以呢,可以想到应该把自己写好的脚本放在/etc/init.d/文件夹里面。
也确实是这样。
注意文件的权限应该是root的并且可执行。
还要注意的是要在刚刚提到的/etc/rc*.d/里面输入
ln -s target destination
产生一个指向/etc/init.d/里面的你所放进去的文件的link。
2.
crontab
cron这个是linux下为实现定时功能而产生的。
输入

crontab --help

就会发现它的参数很少,很清晰。
-l :显示所有的定时任务
-r:删除任务
-e:编辑任务
-i:删除前进行确认

输入

crontab -e

第一次使用会让你选择一个编辑器,我这里用的是nano。
当然了可以用vim或者其他你习惯的编辑器。
最左边的参数单位是分钟,后面是小时…
像这样:
minute(0-59) hour(0-23) date(1-31) month(1-12) weekday(0-6) command

举几个例子:
开机时启动的脚本:
@reboot cd /home/phnic/ && ./wlan.sh >> syslog 2>&1
每隔半个小时就执行一次的脚本(/n的你表示间隔的时间):
*/30 * * * * source /… >>syslog 2>&1
9-12点之间每隔30分钟就执行一次(-号表示时间范围):
30 9-12 * * * command
每年的12月31日的23点59分钟给自己的另一半发邮件
59 23 31 12 * mail honey < /…/…/love.txt
每周五12.00提醒自己干嘛:
0 12 * * 5 mail me < /…/…/you_need.txt

但是在crontab的配置文件/etc/crontab中查看内容你会看见,
有一个zai在Command之前有一个user_name的参数.
区别在于使用crontab -e的时候默认这里的身份是root,是针对使用者的cron设计的,
/etc/crontab中的任务可以认为是使用者自己的系统例行性任务。
(其实区别也不是很大/xk)
cron每隔一分钟就会去读取一次/etc/crontab文件中的内容,如果你希望马上执行,可以

sudo systemctl restart crond

希望对你有帮助。