先说我的系统,是 Ubuntu 16.04
然后我要运行一个定时任务,所以为了测量定时任务是否执行,先运行一个最基本的测试,但是发现根本没运行。
我的做法:
1 * * * * echo 111 >> /home/alex/Desktop/mycodes/k.txt
service cron restart
但是我发现这个定时任务并没有启动啊
而且我还发现,网上都是说 crond,但是我把 cron 改成 crond 就报错,根本没有这个服务,请问我哪里没有作对?
贴一下 /var/log/cron.log 的日志:
Apr 21 17:04:01 VirtualBox crontab[6460]: (alex) BEGIN EDIT (alex)
Apr 21 17:05:18 VirtualBox crontab[6460]: (alex) END EDIT (alex)
Apr 21 17:05:23 VirtualBox crontab[6473]: (alex) LIST (alex)
Apr 21 17:07:04 VirtualBox cron[6489]: (CRON) INFO (pidfile fd = 3)
Apr 21 17:07:04 VirtualBox cron[6489]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Apr 21 17:08:41 VirtualBox cron[6510]: (CRON) INFO (pidfile fd = 3)
Apr 21 17:08:41 VirtualBox cron[6510]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Apr 21 17:10:07 VirtualBox crontab[6526]: (alex) LIST (alex)
Apr 21 17:10:44 VirtualBox crontab[6534]: (alex) BEGIN EDIT (alex)
Apr 21 17:11:01 VirtualBox crontab[6534]: (alex) END EDIT (alex)
1
tradzero 2018-04-21 17:19:42 +08:00
ubuntu 16.04 确实是 cron 我也被坑了
|
2
Hopetree OP @tradzero 然而我看网上大部分都是在说 crond,而且我查 cron 和 crond 的关系居然还没查到,这些都不是关键,关键是,我这样设置定时任务为什么不执行?
|
3
aheadlead 2018-04-21 17:24:31 +08:00
“ 1 * * * *” 的 1 是啥意思?
|
4
20has 2018-04-21 17:24:43 +08:00 via Android
我说下你的问题,
1 日志不排版看的累 2 定时任务最好放脚本 3 造成原因或许是无权限写入或者该文件( k.txt )未先创建! |
5
wdd2007 2018-04-21 17:26:00 +08:00 1
你 * * * * * 测试一下。
你用 1 * * * * 不得一个小时才能有结果。 |
7
zw 2018-04-21 17:41:15 +08:00
Ubuntu 不是基于 Debian 的么?我看到在 Debian 里,都是把脚本放到 /etc/cron.hourly/目录下即可。。。
|
8
abmin521 2018-04-21 17:51:36 +08:00 via Android 1
echo 写绝对路径
|
9
defunct9 2018-04-21 17:54:54 +08:00 via iPhone 1
开 ssh,我也不上去看
|
10
DANG 2018-04-21 18:05:57 +08:00
每个分钟数为 1 的时候执行
|
11
blankme 2018-04-21 18:08:17 +08:00 via Android
5 楼正解
|
12
flytiger3768 2018-04-21 18:09:51 +08:00
crontab -e 不需要重启 crond。你这个设置的是每个小时的第 1 分钟开始执行,如 0 点 1 分、1 点 1 分、2 点 1 分。参考 @20has 的回答修改设置
|
13
Cbdy 2018-04-21 18:21:10 +08:00 via Android
systemd timer 了解一下
|
14
ThirdFlame 2018-04-21 18:34:45 +08:00
每小时第 1 分钟。 找了一个小时 ,回来一看 刚刚好执行啊
|
15
yingfengi 2018-04-21 19:20:32 +08:00 via Android
目测服务并没有自启动,我遇到过这种坑。帮瓦工的乌班图就这样。
|
16
yingfengi 2018-04-21 19:22:06 +08:00 via Android 1
|
17
Hopetree OP @aheadlead 哈哈哈,我蠢了,我以为 1 就是表示每 1 分钟执行一次
@wdd2007 原来问题都处在我设置的时间上面,这个是 1 小时,我一直以为是 1 分钟 @20has 是我把时间搞错了,刚接触这个定时任务,一直理解错了时间 @ThirdFlame 真的如你所说,一个小时之后我的任务执行了,好囧啊 |
18
artandlol 2018-04-21 19:42:02 +08:00 via iPhone
不要-e 直接改配置文件
|
19
zhicheng 2018-04-21 19:45:12 +08:00 via iPhone
环境变量
|
20
torbrowserbridge 2018-04-21 19:47:19 +08:00 via Android
改完并不需要 restart crond
|
21
chanssl 2018-04-21 20:21:02 +08:00 2
推荐这个工具
https://tool.lu/crontab/ |
22
TheKiller 2018-04-21 20:22:28 +08:00 via iPhone
不执行九成是环境变量的问题
|
23
Nick2VIPUser 2018-04-21 20:22:56 +08:00 via iPhone
同样的程序换一台机器试一下
|
25
Hopetree OP @chanssl 厉害了,工具很实用,我刚才写了一个以为是每天 3 点执行,然后用这个工具才发现是 3 点的每 1 分钟执行一次,然后改了过来,挺好的,可以帮助理解
|
26
Hopetree OP @torbrowserbridge 好的,感谢,刚开始用这个功能不熟悉,感谢各位支招
|
27
Hopetree OP 我还发现了一个问题,就是运行用 sh 来运行 Python 代码然后设置成定时任务的时候,sh 中要把 python 的绝对地址放上去才行,比如下面这种:
``` #!/usr/bin/bash cd /home/alex/Desktop/mycodes /usr/bin/python3 timer_test.py ``` |
28
xratzh 2018-04-21 20:46:10 +08:00
*和*/1 和 1 的不一样哈哈哈
|
29
lhpshaohan4 2018-04-21 20:54:17 +08:00 via iPhone
/etc/pam.d/crond
#session required pam_loginuid.so #注释此行 |
30
fantastM 2018-04-21 22:08:08 +08:00
|
32
q397064399 2018-04-22 11:52:16 +08:00
:doge:
|
33
q397064399 2018-04-22 11:52:51 +08:00
关爱楼主 |
34
yujieyu7 2018-04-22 13:51:54 +08:00 via iPad
已经歪成搞笑贴了,楼主还是要细心点啊😄
|
35
8bit 2018-04-22 14:19:26 +08:00 via Android
:doge
:doge: |
36
ls2110609 2018-04-22 16:44:37 +08:00
...多看书不好吗
|
37
Hopetree OP @lance6716
@fantastM @q397064399 @ls2110609 好的,是我开始没有理解这个时间设置,现在时间问题我已经搞清楚了,然后另外一个问题有点疑问,就是如果用脚本执行文件的时候,比如用 shell(或者 Python 脚本)来写文件,这个文件的地址可以是相对路径,直接执行 shell (或者 Python )可以成功,但是如果把这个 shell ( Python 脚本)设定成定时任务就发现文件不会在指定地方生成(我不确定是不是生成到其他地方去了),所以,我只能把所有涉及到文件的地方都写成绝对路径,即使这个文件是在 Python 脚本中的页写成绝对路径,请问,我这种做法是唯一的解决方法吗? |
39
balamiao 2018-04-23 11:19:51 +08:00
额,ubuntu 表示不背这个锅~
|
40
ThirdFlame 2018-04-23 12:48:12 +08:00
|
41
Hopetree OP @ThirdFlame 不行,这样写不行,python 要改成 /usr/bin/python3 才行,不然运行不了
|