作者asd24693120 (曙光)
看板Linux
标题[问题] python-crontab无法执行
时间Mon Jun 21 15:57:39 2021
各位前辈好,想请问各位前辈关於python-crontab无法执行问题,我有一个python档,当
我直接执行时,都能够顺利执行,如下图:
https://i.imgur.com/NRXbrhM.jpg
然而当我使用用python所写的crontab时,执行时却没有任何反应,如下图
Python程式码:
https://i.imgur.com/7ipc2S4.jpg
运行结果:
https://i.imgur.com/CetdhLY.jpg
发现程式码本身没错误,但却没有任何反应,也有去查了crontab的例行排程,也确定有
输入进去
https://i.imgur.com/0KCW8AR.jpg
不知道出现了什麽问题,还请各位前辈指导
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.136.32.93 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1624262261.A.39F.html
1F:推 bitlife: 所谓[反应]是指什麽? 如果是指输出,去信箱查一下看看06/21 16:13
b大您好,想请问您是说这个吗
https://i.imgur.com/22XnwcG.jpg
我改用这个指令後,有查到,如图:
https://i.imgur.com/MqAebbP.jpg
https://i.imgur.com/wAolNLO.jpg
※ 编辑: asd24693120 (218.164.12.247 台湾), 06/21/2021 18:00:07
2F:→ bitlife: man cron 8 里面有说, crontab的owner(一般是root)的信箱06/21 18:07
3F:→ bitlife: 一般cron job是不产生输出的,有需要也是自己开个档写资料06/21 18:08
4F:→ bitlife: 你後两个图是cron有执行你的job的log,不是你程式的输出06/21 18:09
5F:→ bitlife: 没用过python,这输出很像java的log4j之类的格式,看一下是06/21 18:12
6F:→ bitlife: 否有相关设定档可指定log输出到你指定的路径而非标准输出06/21 18:12
7F:→ bitlife: ,因为交谈式(在终端机视窗下)执行标准输出是终端机,但被 06/21 18:13
8F:→ bitlife: 丢到背景执行标准输出就不一定(cron则是接受输出後转寄为06/21 18:14
9F:→ bitlife: mail),所以一般不输出到标准输出,而是输出到自订档案06/21 18:14
10F:→ bitlife: ^背景执行时06/21 18:16
b大对不起,我有一点看不懂您的意思,我对ubuntu没有到很熟,真的非常抱歉
11F:→ kenduest: 命令改一下 python xxx.py > /path/xxx.log 2>&1 这方式06/21 18:45
12F:→ kenduest: 然後看输出的 log 里面显示什麽资讯提供除错06/21 18:45
※ 编辑: asd24693120 (218.164.12.247 台湾), 06/21/2021 21:33:25
谢谢k大的建议,这样就马上显示出问题在哪了
13F:→ bitlife: 我看了讯息内容觉得有点印象,a了一下你的id,果然是之前有06/21 23:56
14F:→ bitlife: 回覆驱动之类问题,只能说先用k大提的方式先应付,最好还是 06/21 23:56
15F:→ bitlife: 把工作环境有个初步认识会比较好,不然可能会有解不完的问06/21 23:57
16F:→ bitlife: 题,而问题的共通点都是因为对工作环境不熟悉06/21 23:58
对的,真的很谢谢b大还特别去看我之前发的文,我确实对ubuntu还没有很熟悉,这部分
我会再回去加强,真的很谢谢您
17F:→ MOONY135: 我猜大概是chmod问题...06/22 12:35
18F:→ MOONY135: chmod 644?06/22 12:35
19F:→ bitlife: 他的py脚本是叫用python执行,照道理不是mode问题.要说也06/22 13:37
20F:→ bitlife: 是python不在cron找寻命令的路径中,我不太确定cron会不会06/22 13:38
21F:→ bitlife: 参考它自己的PATH变数,不过python用全路径是好建议06/22 13:38
想请问b大说的全路径是指绝对路径吗,要把ubuntu预设的python在哪个位置也打出来是
吗?
22F:→ bamchisu: 你crontab前面写错了,五个都*是什麽时候要他执行? 06/22 22:26
回ba大,这部分我一开始也觉得很奇怪,但是每1分钟执行好像确实就是这样,我有改成
两分钟,就会显示成/*2这样了
※ 编辑: asd24693120 (218.164.12.247 台湾), 06/22/2021 23:12:37
23F:→ bitlife: 我所谓全路径是full path也就是你说的绝对路径 06/22 23:19
24F:推 bitlife: 5个星是每分钟没错, *代表first-last,在分钟位置就每分钟 06/22 23:21
25F:推 bamchisu: 那抱歉是我错了,那这样,你把which python的结果 06/23 01:47
26F:→ bamchisu: 替换到你crontab 那行python 那边试试看 06/23 01:48
27F:→ bamchisu: 你跑程式的时候用了sudo, 也就是root在跑, 06/23 01:49
28F:→ bamchisu: 你应该要知道root user执行python用的是哪个python 06/23 01:49
29F:→ bamchisu: 然後加在crontab里面,应该就会有机会跑对了 06/23 01:50
30F:推 bamchisu: 就是crontab前面改成* * * * * /usr/bin/python $filepy 06/23 01:54
31F:推 abukwan: 用绝对路径 包含py档内有引用的其它档 07/11 23:39