代码之家  ›  专栏  ›  技术社区  ›  JP Silvashy Gautam Rege

crontab中的变量?

  •  47
  • JP Silvashy Gautam Rege  · 技术社区  · 14 年前

    如何在crontab中存储变量?我意识到这不是shell,但我想说我想要一些常量,比如我的应用程序路径之类的?

    思想?

    4 回复  |  直到 6 年前
        1
  •  78
  •   Matt K    10 年前

    在VixieCron中,这可能是最常见的,您可以像shell脚本一样执行此操作。

    VARIABLE=value
    PATH=/bin:/path/to/doathing
    0 0 * * * doathing.sh $VARIABLE
    

    手册上写着:

    crontab中的活动行将是环境设置或cron命令。环境设置的形式是,

         name = value
    

    其中等号(=)周围的空格是可选的,值中的任何后续非前导空格都将是指定值的一部分。 说出姓名。值字符串可以放在引号中(单引号或双引号,但要匹配),以保留前导空格或尾随空格。名字 字符串也可以放在引号中(单引号或双引号,但要匹配),以保留前导空格、尾随空格或内部空格。

    您可以通过查看手册页来判断是否有Vixie Cron crontab 作者是保罗·维谢。不同的cron可能支持,也可能不支持(例如busybox的cron不支持),在这种情况下,最好的选择是将命令包装在shell脚本中,然后从cron运行该脚本。事实上,这对于任何复杂的事情都是一件好事。

        2
  •  2
  •   Richard Fearn    14 年前

    您可以将环境变量放入crontab中。参见手册页 crontab(5) 了解更多详细信息。

        3
  •  0
  •   Justaman    6 年前

    为了保持crontab的整洁,我只需要调用shell脚本,并在脚本中做一些有趣的事情。

        4
  •  -7
  •   JP Silvashy Gautam Rege    11 年前

    我不是一个Unix人,所以我不能肯定地说,但这听起来是一个不错的预处理步骤的地方。

    #define cmdpath /usr/bin/myfolder/cmd
    0,30 8-17 * * 1-5 cmdpath
    17 3 * * 1 cmdpath
    

    通过我的C++编译器的预处理器运行如下:

    0,30 8-17 * * 1-5 /usr/bin/myfolder/cmd
    17 3 * * 1 /usr/bin/myfolder/cmd
    

    这似乎正是你想要的。