
先说我的系统,是 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 * * * * 不得一个小时才能有结果。 |
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 echo 写绝对路径 |
9 defunct9 2018-04-21 17:54:54 +08:00 via iPhone 开 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 的回答修改设置 |
&nbp; 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 |
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 |
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 才行,不然运行不了 |