Linux 定时执行shell 脚本
2019年第 85 篇文章,总第 109 篇文章
本文大约2000字,阅读大约需要6分钟
crontab
可以在指定的时间执行一个shell脚本以及执行一系列 Linux 命令。
定时执行shell 脚本
简单给出执行 shell 脚本的步骤。
首先是编写一个测试脚本--
test.sh
# 创建脚本
$ vim test.sh
# 在脚本中做写入文件操作
date >> data.txt
修改脚本的权限,确保脚本有执行的权限
chmod 777 test.sh
设置 crontab 定时任务
# 打开定时任务配置文件
crontab -e
# 在配置文件中写入定时任务的操作, 这里就是指定每天12点定时执行脚本,并把执行脚本的日志写入文件 test.log
0 12 * * * sh test.sh > test.log
保存退出,也就是
:wq
如果有错,linux 会在执行的时候发送一份邮件给你
cat /var/spool/mail/root
注意:
crontab 是运行在系统默认环境里,如果运行的脚本是执行 python 代码,即脚本的内容可能是:
python test.py
这里的 python
会是系统默认的 python 版本,而如果你是运行在 conda 环境里,那么这里就需要采用当前环境里 python 版本的执行文件的绝对路径,即先用以下命令查找当前 python 版本的执行文件位置:
$ which python
# 假设输出的文件位置为:
/root/anaconda3/py3/bin/python
这里输出的路径,直接替换脚本里的 python
:
/root/anaconda3/py3/bin/python test.py
这样才能保证运行不出错,否则可能因为版本问题出错;
crontab命令详解
常用命令
crontab –e //修改 crontab 文件,如果文件不存在会自动创建。
crontab –l //显示 crontab 文件。
crontab -r //删除 crontab 文件。
crontab -ir //删除 crontab 文件前提醒用户。service crond status //查看crontab服务状态
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
所以如果需要取消某个定时任务,就是可以删除在配置文件中的对应命令,即 crontab -e
打开文件,然后删除对应哪行的命令即可
基本格式
* * * * * command
分 时 日 月 周 命令
第1列表示分钟 00~59 每分钟用*
或者 */1
表示
第2列表示小时 00~23(0表示0点)
第3列表示日期 01~31
第4列表示月份 01~12
第5列标识号星期 0~6(0表示星期天)
第6列要运行的命令
此外每一列除了数字,还可以有这些符号,其含义如下所示:
* 代表任何时间,比如第一个 * 就代表一小时中的每分钟都执行
, 代表不连续的时间,比如 0 8,12,16 * * * 代表每天8,12,16点0分执行
- 代表连续的时间范围,比如0 5 * * 1-6 代表在周一到周六凌晨5点0分执行
*/n 代表每个多久执行一次,比如*/10 * * * *代表每隔10分钟执行一次
示例
1、在 凌晨00:10运行
10 0 * * * sh test.sh
2、每个工作日23:59都进行备份作业。
59 23 * * 1,2,3,4,5 sh test.sh
或者
59 23 * * 1-5 sh test.sh
3、每分钟运行一次命令
*/1 * * * * sh test.sh
4、每个月的1号 14:10 运行
10 14 1 * * sh test.sh
5、每10分钟定时请求一个地址
0 */10 * * * /usr/bin/curl http://www.aaa.com/index.php
注意,一般最好不要同时采用几号和每周几,可能会出现混淆;
正确、错误日志的输出是否写入到文件方法
1.不输出任何内容(建议使用方法一)
*/1 * * * * /root/XXXX.sh >/dev/null 2>&1
或
*/1 * * * * /root/XXXX.sh &>/dev/null //&表示任何内容
2.将正确和错误日志都输出到 /tmp/load.log
*/1 * * * * /root/XXXX.sh > /tmp/load.log 2>&1
3.只输出正确日志到 /tmp/load.log
*/1 * * * * /root/XXXX.sh > /tmp/load.log
或
*/1 * * * * /root/XXXX.sh 1> /tmp/load.log //1可以省略
4.只输出错误日志到 /tmp/load.log
*/1 * * * * /root/XXXX.sh 2> /tmp/load.log
部分解释:
/dev/null 代表空设备文件
> 代表重定向到哪里
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
参考文章:
Linux 定时执行shell脚本命令之crontab:https://www.cnblogs.com/wenzheshen/p/8432588.html
linux定时执行sh文件:https://blog.csdn.net/IT_xiaocao/article/details/78206364
欢迎关注我的微信公众号--算法猿的成长,或者扫描下方的二维码,大家一起交流,学习和进步!
如果觉得不错,在看、转发就是对小编的一个支持!
Linux 定时执行shell 脚本相关推荐
- linux定时执行shell脚本
linux定时执行shell脚本 需求:每分钟检查下文件是否存在 解决思路: 1.编写shell脚本,检查文件是否存在,存在在文件中记录yes,不存在记录no 2.将脚本加入linux定时任务cron ...
- linux 定时执行shell脚本 定时任务
1 #!/bin/bash 2 step=1 3 for ((i=1;i<=60; i+=step)) 4 do 5 $(`/usr/local/php-5.6.22/bin/php /root ...
- linux执行shell过程日志,Android之在linux终端执行shell脚本直接打印当前运行app的日志...
1.问题 我们一般很多时候会需要在ubuntu终端上打印当前运行app的日志,我们一般常见的做法是 1).获取包名 打开当前运行的app,然后输入如下命令,然后在第一行TASK后面的就可以看到包名 a ...
- Java程序定时执行shell脚本
第一次写博客,写的不好还请见谅. 之前在Linux环境中想定期执行某个脚本,第一反应就是将这个task加入到crontab里(crontab的知识点这里就不具体介绍了),当然,这种做法一般情况下是可行 ...
- Linux中执行shell脚本的4种方法
这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下. bash shell 脚本的方法有多种,现在作个小结.假设我们编写 ...
- Linux中执行shell脚本的5种方法总结
Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法: 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: c ...
- linux定时执行python脚本_ubuntu定时执行python脚本实例代码
前言 本文将介绍ubuntu系统下如何定时执行shell脚本.python脚本,ubuntu系统有一个定时任务的管理器crontab,我们只需要编辑定时任务,然后重启定时任务服务就好了. cronta ...
- Linux终端执行shell脚本,提示没有权限
Linux终端执行shell脚本 问题:提示没有权限 执行命令:./test.sh,提示没有权限. 解决方案: 提示:修改脚本文件test.sh的权限 执行命令:chmod 777 ./test.sh ...
- linux下执行shell脚本文件,Linux下使用shell脚本自动执行脚本文件
搜索热词 以下实例本人在Centos6.5 64位操作系统中使用 一.定时复制文件 a.在/usr/local/wfjb_web_back目录下创建 tomcatBack.sh文件 #将tomcat中 ...
最新文章
- 关于Android H5混合开发遇到的问题
- 简单几步解决企业USB端口隐患
- 利用python进行数据分析 百度云-利用Python进行数据分析 原书第2版.pdf
- [iOS] 建立与使用Framework
- Vim的基本操作总结
- STM32建好的工程为啥下载不进去程序
- linux怎样进入src目录,Linux配置目录
- 快速计算平方根数(约翰·卡马克)
- MTK6735 竖屏横用、旋转90度、MTK_LCM_PHYSICAL_ROTATION
- 服务器一直即将注销你的登录,win10系统提示即将注销你的登录如何解决
- ExtJS中Grid分页
- Android UI Layout 之 AbsoluteLayout
- 关于static关键字的一些见解(小白的见解)
- MTK平台Camera Dump Buffer处理
- oracle decode函数什么意思,oracle decode函数的用法
- Android-点亮屏幕与唤醒
- 2011年1月至2012年12月预言诗 (转载)
- WIN10下配置swoolephp7.4的docker镜像流程及资料聚合
- 初学linux(一)认识linux
- 下列字符是c语言的保留字是,下列字符序列中,是C语言保留字的是().