V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
牛客网
DopaminePlz
V2EX  ›  Linux

cron 没有配置文件?

  •  
  •   DopaminePlz · 36 天前 via Android · 1694 次点击
    这是一个创建于 36 天前的主题,其中的信息可能已经有所发展或是发生改变。
    吐槽一下,反人类的设计。crontab -e 编辑后不知道跑到哪里去了, 如果没有重定向 crontab -l 保存到文件,下次重装系统的话就只能一行行自己再写过。
    第 1 条附言  ·  35 天前
    看了诸位的留言,本人坚定了自己确实比较菜的想法。我一般去 /etc 那里去找,没有想到系统把配置文件想到存放 /var/spool 下面。昨晚找了一下,第一条链接是说没有好的办法,并建议用重定向的办法,也没有再看其它的搜索结果。
    24 条回复    2020-09-22 02:29:33 +08:00
    ETiV
        1
    ETiV   36 天前 via iPhone
    Google 一下
    crontab per-user location
    arch9999
        2
    arch9999   36 天前   ❤️ 2
    科普一下,cron 并不是像某些人说的: “cron 在运行后每分钟的前 59 秒都在猜用户设定的定时计划,所以它最低的时间间隔是分钟。”

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

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

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

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

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

    就好像有盲人发帖说看不见太阳,而你在一本正经的解释太阳本身就看不见。
    liuxu
        21
    liuxu   35 天前
    好了楼上的大哥们别打架了,linux 的大佬们就喜欢用这么直接的问候内心的表达方式

    /etc 下一般是用户编辑,软件读取的配置文件
    /var 下一般是由软件生成的数据文件

    常识,了解一下就可以了,《鸟哥的 linux 私房菜》有一章有说明
    arch9999
        22
    arch9999   35 天前
    @love #13
    @swulling #20

    你们开心就好咯,我只是编个故事让他觉得找不到配置文件好受一点。
    swulling
        23
    swulling   35 天前 via iPhone
    @arch9999 呵呵
    arch9999
        24
    arch9999   35 天前
    @swulling #23
    呵呵
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4353 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:54 · PVG 11:54 · LAX 20:54 · JFK 23:54
    ♥ Do have faith in what you're doing.