cron 没有配置文件?

2020-09-21 07:11:17 +08:00
 DopaminePlz
吐槽一下,反人类的设计。crontab -e 编辑后不知道跑到哪里去了, 如果没有重定向 crontab -l 保存到文件,下次重装系统的话就只能一行行自己再写过。
2828 次点击
所在节点    Linux
24 条回复
ETiV
2020-09-21 07:13:44 +08:00
Google 一下
crontab per-user location
arch9999
2020-09-21 07:39:42 +08:00
科普一下,cron 并不是像某些人说的: “cron 在运行后每分钟的前 59 秒都在猜用户设定的定时计划,所以它最低的时间间隔是分钟。”

这是及其荒谬的一种说法。

实际上,仔细查看源代码就会发现,其实 cron 通过“特有”(内核赋予)的方式将用户给定的定时计划写入到 CPU 内部一个专有的存储单元,所以 cron 无需在文件系统中存储配置文件也可以正常运行用户给定的定时计划,并精准的运行。
privil
2020-09-21 08:21:00 +08:00
当对 crontab 所做的改变被保存后,该 crontab 文件就会根据该用户名被保存,并写入文件 /var/spool/cron/username 中。
privil
2020-09-21 08:21:27 +08:00
你这属于 菜,无能狂怒吗?
sutra
2020-09-21 08:33:16 +08:00
and for macOS: sudo cat /var/at/tabs/${USER}
jinliming2
2020-09-21 08:48:41 +08:00
(我选择 systemd.timer
Linux 的配置文件可以在这里找到:/var/spool/cron/crontabs/用户名
ysc3839
2020-09-21 08:56:42 +08:00
@arch9999 “猜用户设定的定时计划”是什么意思? crond 本来就有“用户设定的定时计划”的信息,为什么要“猜”?

在我看来,“将用户给定的定时计划写入到 CPU 内部一个专有的存储单元”才是及其荒谬的一种说法,市面上不同用途的 CPU 那么多,不太可能所有 CPU 都提供一个专有的存储单元。
同时仔细查看 busybox 的源代码就会发现,它仅仅是因为 sleep_time 设置成了 60,所以它最低的时间间隔是分钟。https://github.com/mirror/busybox/blob/a949399d178f7b052ada2099c62621736eafce44/miscutils/crond.c#L1066-L1074
也可以从代码中看出,busybox crond 是通过读取文件系统中的配置信息来运行的。
mepwang
2020-09-21 09:05:24 +08:00
@ysc3839 确实每个 CPU,从服务器到桌面到嵌入式,都提供了多个特殊的存储单元(定时器 /timer ),专门用来处理定时,精度可以是 CPU 时钟
arch9999
2020-09-21 09:07:43 +08:00
@ysc3839 #7

荒谬,那你怎么解释楼主找不到配置文件,难道是他眼瞎吗?
pmispig
2020-09-21 09:11:38 +08:00
那你为何不用 /etc/crontab 呢,我就最讨厌 crontab -e 的姿势了
ysc3839
2020-09-21 09:12:54 +08:00
@arch9999 我解释不了“楼主找不到配置文件”,但是这和你说的话是否正确有什么关系吗?
我上面的回复是在反驳你的说法,并不是在讨论“楼主找不到配置文件”。
arch9999
2020-09-21 09:19:01 +08:00
@ysc3839 #11

别的地方我管不着,在这个帖子里,cron 的配置文件一定是被存储到 CPU 的某个存储单元了,否则他不会找不到。
love
2020-09-21 09:46:56 +08:00
@arch9999 你仔细看,他没有找,他是用标准编辑方式 crontab -e 改文件,这个方式没告诉你最终文件在哪,这和 CPU 有什么关系(话说 cron 真放到 CPU 了?这特么高射炮打蚊子了
rootww21
2020-09-21 10:08:08 +08:00
哈哈哈 乐了
rootww21
2020-09-21 10:08:32 +08:00
/var/spool/cron/username 不是这里吗
skymei
2020-09-21 10:13:03 +08:00
你可以在 /etc/cron.d 里面配置的,不需要 -e 全局的方式
liberty1900
2020-09-21 10:18:03 +08:00
类 Unix 系统一切都是文件
这个也跑不了
liangming1
2020-09-21 10:28:17 +08:00
可以理解为 无能狂怒
catinsides
2020-09-21 12:07:10 +08:00
提问姿势:
cron 的配置文件在哪里? ×
cron 怎么连配置文件都没有!√
swulling
2020-09-21 12:32:37 +08:00
@arch9999 找不到只是因为 lz 没看文档,并不是 cron 不写配置文件,也不是配置文件不存在,更不是有啥 cpu 来存。

就好像有盲人发帖说看不见太阳,而你在一本正经的解释太阳本身就看不见。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/708882

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX