linux任务计划单独脚本能执行,linux中计划任务执行脚本
我使用的是ubuntu14.4,所以在ubuntu中一切正常,在其他linux系统中应该都差不多。
1 计划任务,crontab命令选项:
-u指定一个用户,
-l列出某个用户的任务计划,
-r删除某个用户的任务,
-e编辑某个用户的任务
2 cron文件语法:
分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)
可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件
具体格式如下:
Minute Hour Day Month Dayofweek command
分钟 小时 天 月 天每星期 命令
每个字段代表的含义如下:
Minute 每个小时的第几分钟执行该任务
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
Command 指定要执行的程序
记住几个特殊符号的含义:
"*"代表取值范围内的数字,
"/"代表"每",
"-"代表从某个数字到某个数字,
","分开几个离散的数字
3 新增一个计划任务
crontab -e 然后添加相应的任务,wq存盘退出。
4 查看计划任务
查看调度任务
crontab -l //列出当前的所有调度任务
crontab -l -u jp //列出用户jp的所有调度任务
5 例子1,增加一个计划任务
* * * * * date > test
6 重启cron服务
service cron restart
注意:每次修改完crontab后,需要重启服务。
可以看到test文件每秒钟会进行一次更新。
例子2,写一个python脚本,定时执行
test2.py文件代码如下
#!/usr/bin/python
import time
def fun1():
lastsec= 4with open("test",'a+') asfobj:for i in range(2*lastsec):
tm= time.strftime("%Y-%m-%d %H:%M:%S")
fobj.write(tm+"\n")
time.sleep(0.5)
def test():
fun1()if __name__=="__main__":
test()
要想要执行该文件,需要添加可执行权限
chomd +x test2.py
新增一个计划任务
*/2 * * * * /usr/bin/python /home/pc/work/ENV/project/test2.py
注意:为了安全起见所有的路径都需要是绝对路径。
但是没有执行,后来上网查找资料,需要查看日志,找了半天没有,原来是ubuntu系统默认没有打开日志。所以要先打开日志,日志文件在/var/log/cron.log
方法:
1) 修改rsyslog文件,将/etc/rsyslog.d/50-default.conf 文件中的#cron.*前的#删掉;
2) 重启rsyslog服务service rsyslog restart
3) 重启cron服务service cron restart
这样就可以看到日志了。
8月 27 15:42:01 pc-virtual-machine CRON[10196]: pam_unix(cron:session): session opened for user pc by (uid=0)
8月 27 15:42:01 pc-virtual-machine CRON[10197]: (pc) CMD (/usr/bin/python /home/pc/work/ENV/project/test2.py)
可以看到计划任务却是执行了。但是为什么没有输出文件test呢?
然后自己手动执行计划任务中的命令,/usr/bin/python /home/pc/work/ENV/project/test2.py
pc@pc-virtual-machine:/var/spool$ /usr/bin/python /home/pc/work/ENV/project/test2.py
Traceback (most recent call last):
File "/home/pc/work/ENV/project/test2.py", line 18, in test()
File "/home/pc/work/ENV/project/test2.py", line 16, in test
fun1()
File "/home/pc/work/ENV/project/test2.py", line 9, in fun1
with open('test','a+') as fobj:
IOError: [Errno 13] Permission denied: 'test'
给我报错了,仔细一看,原来是自己的脚本有问题,输出的 test文件应该是绝对路径,不应该是相对路径,可能是程序不是在脚本所在的文件夹力执行,所以有可能会产生权限问题。
所以,经过修改后,test2.py文件如下
#!/usr/bin/python
import time
import os
def fun1():
lastsec= 4curdir=os.getcwd()
filename= os.path.join(curdir,"test")
with open('/home/pc/work/ENV/project/test','a+') asfobj:for i in range(2*lastsec):
tm= time.strftime("%Y-%m-%d %H:%M:%S")
fobj.write(tm+"\n")
time.sleep(0.5)
def test():
fun1()if __name__=="__main__":
test()
然后重启cron服务。
ls
startpy.sh test test2.py
可以看到有了输出。
more test
2016-08-27 16:52:01
2016-08-27 16:52:02
2016-08-27 16:52:02
2016-08-27 16:52:03
2016-08-27 16:52:03
2016-08-27 16:52:04
2016-08-27 16:52:04
2016-08-27 16:52:05
大功告成!!!
linux中将一个脚本文件作为一个计划任务小结,以python脚本为例:
1 创建脚本文件test.py,在文件开头需要加上下面一行
#!/usr/bin/python
上面这行的作用是说明使用那个解释器来执行该文件,如果不知道python解释器在哪,可以使用命令which python来查看
2 给该文件添加可执行的权限
chmod +x test.py
注意:在脚本文件中如果涉及文件操作,请使用绝对路径,我就是在这上面掉坑里了。
3 添加计划任务
crontab -e
在文件中追加一行,*/2 * * * * /usr/bin/python /home/pc/work/ENV/project/test.py
保存退出,:wq
4 重启cron服务
service cron restart
结束
正常情况下应该是可以运行的,如果有问题,可以按照如下步骤找到问题所在
查看cron的log,在/var/log/cron.log,想ubuntu默认情况下是没有开启的,所以要自己手动开启log
如果有log输出,说明计划任务试运行正常的,那就有可能是你配置有问题,自己手动运行一下计划任务中的cmd命令,像我开始那样就是由于脚本本身存在问题(不要使用文件的相对目录),如果成功,则说明脚本的环境变量有问题,具体原因就需要查看crontab发送的错误邮件了。
linux任务计划单独脚本能执行,linux中计划任务执行脚本相关推荐
- 简单介绍oracle执行计划,Oracle性能优化之oracle中常见的执行计划及其简单解释
一.访问表执行计划 1.table access full:全表扫描.它会访问表中的每一条记录(读取高水位线以内的每一个数据块). 2.table access by user rowid:输入源ro ...
- 修改器内置脚本编写_Node.js 中实践 Redis Lua 脚本
对别人的意见要表示尊重.千万别说:"你错了."--卡耐基 Lua 是一种轻量小巧的脚本语言,用标准 C 语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提 ...
- android 每隔2秒执行_Android中实现延迟执行操作的三种方法
今天在敲代码的过程中,有个需求是延迟执行某方法. 整理收集了三种方法,自己用的是第三种. 第一种线程休眠:new Thread() { @Override public void run() { su ...
- mysql sql先后执行_MySQL中SQL语句执行顺序
(7) SELECT (8) DISTINCT (1) FROM (3) JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING (9) ORDER BY (10) ...
- 解决Ranorex在测试执行过程中,当执行完调用外界库的方法后并没有执行其他的操作?
目录 简介 解决方式-1 解决方式-2 如何调用外界库? 简介 解决:当Ranorex测试方案包含有调用外界库的方法和其他通过录制或者其他操作的前提下,执行测试过程中,如果遇到执行完调用外界库的方法, ...
- linux的xampp单独启动mysql,linux的xampp重要的文件和目录
xampp 单独启动mysql xampp重要的文件和目录 单独启动mysql /opt/lampp/lampp startmysql 其他重要参数及描述: start/stop/restart 启动 ...
- js 延期执行_javaScript 中怎么延迟执行一个方法?
展开全部 function test() { alert("test"); } setTimeout(test, 1000); 其中,setTimeout为延迟执行方法,是JS原生 ...
- mysql执行sql文件创建数据库_mysql执行sql文件创建数据库
如何执行一个mysql的sql脚本文件 sql脚本是包含一到多个sql命令的sql语句,我们可以将这些sql脚本放在一个文本文件中(我们称之为"sql脚本文件"),然后通过相关的命 ...
- ie 不执行回调函时_javascript引擎执行的过程的理解--执行阶段
一.概述 js引擎执行过程主要分为三个阶段,分别是语法分析,预编译和执行阶段,上篇文章我们介绍了语法分析和预编译阶段,那么我们先做个简单概括,如下: 1.语法分析: 分别对加载完成的代码块进行语法检验 ...
- javascript引擎执行的过程的理解--执行阶段
一.概述 js引擎执行过程主要分为三个阶段,分别是语法分析,预编译和执行阶段,上篇文章我们介绍了语法分析和预编译阶段,那么我们先做个简单概括,如下: 1.语法分析: 分别对加载完成的代码块进行语法检验 ...
最新文章
- SilverLight.3-Validation:二、银光验证。TheLabel、TheDescriptionViewer和TheValidationSummary...
- asp.net 添加成功弹出个div提示_Word双栏目录怎么做,这3个步骤早知道,让人眼前一亮...
- 99%的数据中心都会面临的痛点,现在终于有好的解决方案了!
- graal java_如何在CircleCI上构建支持Graal的JDK8?
- 前端学习(2146):vue中TypeError: this.getResolve is not a function
- angular_directive动感超人
- 2018-04-26java实习面试记录
- mysql grep 提取错误日志_通过grep 获取MySQL错误日志信息的方法
- 迭代器java.util.Iterator接口
- 安卓版LightBlue 低功耗蓝牙BLE设备调试
- android双击回到顶部,Android之双击回到顶部
- 图像处理标准图像——“Lena图”的由来
- js逆向教程第二发-猿人学第一题
- 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏...
- 想学板绘,需要练习线稿么,线稿怎么画好看点?
- STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记三(4):Cortex-M3指令分类
- Echarts实现——中国地图
- CPU CACHE中的VIPT与PIPT的工作原理
- 千亿市值今天解禁 美团点评“心里没谱”
- 从深度学习计算过程来分析深度学习工作站\服务器的硬件配置
热门文章
- 用excel表管理测试用例涉及到的小技巧--excel公式
- 2022-1-19 计算机组成原理 —— 程序装载
- 如何用阿波波的重复朗读来联系英语口语
- 如何将中国知网CNKI中的文献导入EndNote X6
- Explaindio4 for Mac(手绘视频制作软件)中文激活版
- 软件测试项目经验案例_自学软件测试如何得到项目经验
- 【文章】在安达信的日子
- linux中运行candence,allegro 在linux下怎么启动
- [OpenGL(C++)] - (开源)3D 游戏界的大牛人 John Carmack 终于放出quakeIII(雷神之锤3)的源代码...
- [图文教程]阿里云万网域名一键签发SSL证书 快捷申请免费SSL证书