首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Crontab -在目录中运行

Crontab -在目录中运行
EN

Stack Overflow用户
提问于 2012-01-18 02:28:09
回答 2查看 107.1K关注 0票数 199

我想在根crontab中设置一个每天运行的作业。但我希望它从一个特定的目录执行它,这样它就可以找到它需要的所有文件,因为应用程序有一堆相对路径。

不管怎样,我能告诉crontab从特定的目录运行吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-18 02:40:11

所有作业都是由shell执行的,因此可以通过更改目录的命令启动该shell片段。

代码语言:javascript
复制
cd /path/to/directory && ./bin/myapp

关于使用&&而不是;:通常不会有什么不同,但是如果使用&&cd命令失败(例如,因为目录不存在),则应用程序不会执行,而使用;则会执行(但不在目标目录中)。

票数 385
EN

Stack Overflow用户

发布于 2020-10-21 01:49:50

阅读man 5 crontab应该会告诉您,有一个HOME变量集可以在文件中重新定义。它将成为您的工作目录。您也可以为命令设置PATH。当然,这会影响所有cron调度行。

例如。

有几个环境变量是由cron(8)守护进程自动设置的。SHELL设置为/bin/shLOGNAMEHOME是从crontab所有者的/etc/passwd行设置的。crontab中的设置可以覆盖HOMESHELLLOGNAME不能。

(注意:在BSD系统上,LOGNAME变量有时也称为USER,也是自动设置的)。

当然,这取决于您的cron,但我的也有MAILTOMAILFROM CONTENT_TYPECRON_TZRANDOM_DELAYMLS_LEVEL

因此,对于您的假设应用程序,我建议使用包含以下内容的文件名/etc/cron.d/hypothetical

代码语言:javascript
复制
# Runs hypothetical app @ 00:01Z in its local path for reading its config or something.
SHELL=/bin/sh
HOME=/where/the/app/is
PATH=/where/the/app/is:/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
CRON_TZ=UTC
1 0 * * * theappuser hypothetical --with arguments 

例如,使用依赖于cwd docker-compose.ymldocker-compose

代码语言:javascript
复制
SHELL=/bin/sh
HOME=/path/to/composed-app
5 5 * * * root docker-compose restart -t 10 service-name
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8899737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档