Unix配置定时执行任务
Unix系的操作系统比如MacOS或者Linux的系统可以使用crontab
命令进行定时任务的配置。本文将以MacOS为例,介绍如何使用crontab
命令设置定时任务。
假定现在有一个需求是:每一分钟产生一个字符串插入一个文件!
- 检查是否存在
crontab
文件;
ls -al /etc/crontab
- 如果不存在,则需要先进行创建;
sudo touch /etc/crontab
- 执行以下命令,在其中加入要执行的任务;
crontab -e
- 比如本需求需要写入以下命令,每分钟执行一次;
*/1 * * * * echo "hello world" > ok.txt
格式如下:
* * * * * command
分 时 日 月 周 命令
crontab
的具体定时配置可见参考
注意
为了保证crontab
命令能正常执行,需要特别注意以下几点:
- 执行命令的权限问题;如果需要
sudo
权限执行的命令,加到crontab
任务中时也需要sudo
,即sudo crontab -e
- 命令中最好使用绝对路径,无论该命令是否已经保存到环境变量
.bash_profile
中 - 写在
crontab
中的shell
命令最好只包含.sh
文件,不要有其他的shell
命令比如date
等。比如如下命令写在crontab
中是不会被执行的。此时可以将以下命令再封装在另一个.sh
文件中,然后在crontab
中执行该.sh
文件。
0 1 * * * /MYPATH/exe.sh >> /LOGPATH/`date +'%Y_%m_%d'`.log