前言
在 Linux 中 crontab
默认都是安装好的,如果遇到了 crontab
没安装的情况先安装 crontab
php
$ sudo apt update
$ sudo apt install cron
安装完成后检查 service
的路径
shell
$ which service
启动 crontab
并查看是否正常运行
shell
$ sudo /usr/sbin/service cron start
start: Job is already running: cron
$ ps -ef | grep cron
其他相关指令
shell
$ sudo /usr/sbin/service cron status #查询服务状态
$ sudo /usr/sbin/service cron reload #重新配置
$ sudo /usr/sbin/service cron restart #服务重启
建立 crontab
并选择默认编辑器
php
$ crontab -e
Crontab 使用
bash
# Example of job definition:
# | | | | |
# * * * * * user-name command to be executed
# 每天早上8点30分执行
30 8 * * * /home/test/script.sh --your --parameter
# 每周日下午6点30分执行
30 18 * * 0 yourcommand
# 每年12月24日早上8点00分执行
0 8 12 24 * yourcommand
# 每月1日、15日早上12点30分各执行一次
30 12 1,15 * * yourcommand
# 每隔5分钟执行一次
*/5 * * * * yourcommand
# 从早上8点到下午4点,遇到整点就执行
Crontab log输出
网上文章都说 crontab
的 log
会在 /var/log/cron
下,但我不管怎么找都找不到,所以我干脆自己将 log
输出至指定位置,这里我设了一个测试用的 cron
每五分钟 run
一次 echo
并将结果输出至 /home/test/cronlog.log
bash
*/5 * * * * echo 12345 >> /home/test/cronlog.log 2>&1
I/O 重定向
一般的 Linux 指令在执行时,会有三个输入与输出的数据流,分别为:
-
标准输入(standard input,代码为
0
):程序执行所需要的输入数据。 -
标准输出(standard output,代码为
1
):程序正常执行所产生的输出数据。 -
标准错误输出(standard error output,代码为
2
):程序出错时通知使用者用的信息,或是体现程序状态用的信息。
简单举例
shell
$ ls > output.txt
代表将 ls
的结果输出至 output.txt
,而 >
代表如果没有文件则新增,有文件就直接覆盖掉,如不想直接覆盖要接续加入可改用 >>
但这样只会有标准输出,若在执行中遇到错误的话 output.txt
内并不会显示,因为我们并没有将错误输出导到文件。
lua
$ ls >> output.txt 2 >> error.txt
使用以上方法可以将标准输出导至 output.txt 而错误信息导至 error.txt 。那若想将标准输出和错误信息都导至同一个文件呢?
shell
$ ls >> output.txt 2>&1
2>&1
就是把标准错误输出 2
导入标准输出 1
,然后再靠著 >>
把所有的数据全部导入 output.txt
,这样所有的输出信息就会一起存入 outpupt.txt
中了。