crontab 文件中的默认 PATH 值是谁的 PATH 值?

crontab 文件中的默认 PATH 值是谁的 PATH 值?

root 的默认 PATH 是

$ sudo su
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

创建/etc/cron.d/myjob后

35 * * * * tim ( date && echo $PATH && date ) > /tmp/cron.log 2>&1

/tmp/cron.log显示 PATH 的默认值为:

/usr/bin:/bin

crontab 文件中的默认 PATH 值不是 root 的值吗?为什么?

PATH 值是谁的?

如果我在 中添加作业/etc/crontab或在 下添加文件,默认 PATH 值是否会有所不同/etc/cronb.d/

在 cron 作业中指定哪个用户重要吗? (比如tim上面的例子)

谢谢。

答案1

cron这取决于您使用的版本。我好像记得你用的是Debian;cron设置了许多变量,如下所示:

几个环境变量是由系统自动设置的cron(8)守护进程。SHELL设置为/bin/shLOGNAMEHOME是从 的所有者/etc/passwd行设置的。被设定为。、、 和可能会被 中的设置覆盖;是运行作业的用户,并且不能更改。crontabPATH"/usr/bin:/bin"HOMESHELLPATHcrontabLOGNAME

(看crontab详细信息请参阅手册页。)

答案2

由于您没有提及具体的cron实现,所以让我假设您正在谈论原始的 UNIX cron 实现。

有一个默认值PATHroot/usr/sbin:/usr/bin),另一个为非 root 用户(为/usr/bin:)。

相关值可能会被以下条目覆盖:

PATH=
SUPATH=

在文件中/etc/default/cron

看:https://sourceforge.net/p/schillix-on/schillix-on/ci/default/tree/usr/src/cmd/cron/

也可以看看:http://schillix.sourceforge.net/man/man1m/cron.1m.htmlhttp://schillix.sourceforge.net/man/man1/crontab.1.html

如果您引用克隆实现,您应该提及您想要的实现......

相关内容