我每小时都有一个crontab.运行它的用户在.bash_profile个环境变量中有一个,当用户从终端运行作业(job)时,这个环境变量就可以工作,但是,很明显,当crontab运行时,这些环境变量不会被crontab获取.

我试着将它们设置为.profile.bashrc,但它们似乎仍然没有被拾取.有人知道我可以把环境变量放在哪里吗?

推荐答案

在运行命令之前,让"cron"运行一个设置环境的shell脚本.

总是

#   @(#)$Id: crontab,v 4.2 2007/09/17 02:41:00 jleffler Exp $
#   Crontab file for Home Directory for Jonathan Leffler (JL)
#-----------------------------------------------------------------------------
#Min     Hour    Day     Month   Weekday Command
#-----------------------------------------------------------------------------
0        *       *       *       *       /usr/bin/ksh /work1/jleffler/bin/Cron/hourly
1        1       *       *       *       /usr/bin/ksh /work1/jleffler/bin/Cron/daily
23       1       *       *       1-5     /usr/bin/ksh /work1/jleffler/bin/Cron/weekday
2        3       *       *       0       /usr/bin/ksh /work1/jleffler/bin/Cron/weekly
21       3       1       *       *       /usr/bin/ksh /work1/jleffler/bin/Cron/monthly

~/bin/Cron中的脚本都是指向单个脚本"runcron"的链接,该脚本如下所示:

:       "$Id: runcron.sh,v 2.1 2001/02/27 00:53:22 jleffler Exp $"
#
#       Commands to be performed by Cron (no debugging options)

#       Set environment -- not done by cron (usually switches HOME)
. $HOME/.cronfile

base=`basename $0`
cmd=${REAL_HOME:-/real/home}/bin/$base

if [ ! -x $cmd ]
then cmd=${HOME}/bin/$base
fi

exec $cmd ${@:+"$@"}

(使用较旧的编码标准编写——现在,我一开始会使用shebang'#!!)

"~/"."cronfile"是我个人资料中的一个变体,供cron使用——严格地说,它是非交互的,并且由于嘈杂而没有回声.你可以安排执行这个命令.而不是个人资料等等.(真正的_HOME东西是我周围环境的人工制品——你可以假装它和$HOME一样.)

因此,这段代码读取适当的环境,然后从我的主目录执行非Cron版本的命令.例如,我的"weekday"命令如下所示:

:       "@(#)$Id: weekday.sh,v 1.10 2007/09/17 02:42:03 jleffler Exp $"
#
#       Commands to be done each weekday

# Update ICSCOPE
n.updics

"每日"命令更简单:

:       "@(#)$Id: daily.sh,v 1.5 1997/06/02 22:04:21 johnl Exp $"
#
#       Commands to be done daily

# Nothing -- most things are done on weekdays only

exit 0

Linux相关问答推荐

我使用Windows 10,但我无法在我的WSL2上下载vscode

排除最大FIFO大小故障

通过shell 脚本基于AM/PM对日期时间字段进行排序

Linux 的 __fastfail 替代方案?

在 bash 中使用 tee 时如何返回错误代码

匹配模式和提取

如何启用或切换现有的Flutter 项目(仅限移动设备)到 MacOS 或 WEB 或 Linux 或 Windows?

在服务器目录之外启动 DolphinDB 服务器时出错

sed 根据文件中的条件进行多次替换

PHP factor 30 从 Linux 到 Windows 的性能差异

Linux 上 pid_t、uid_t、gid_t 的大小

如何从任意 pthread_t 获取线程 ID?

如何知道是否有足够的内存可以在 Linux 机器上部署新应用程序?

从 FTP 服务器下载所有文件

linux perf:如何解释和查找热点

在Linux中使用空格设置环境变量

env和set(在 Mac OS X 或 Linux 上)有什么区别?

PostgreSQL psql 终端命令

使用 WGET 运行 cronjob PHP

在tmux中绑定Ctrl+Tab和Ctrl+Shift+Tab