环境与 cron 相同的交互式 shell

环境与 cron 相同的交互式 shell

我知道 crontab 的神奇世界中有很多陷阱,但有时,当您有一些智能方法来进入交互式(bash)shell,其环境与从 shell 脚本运行时完全相同时,有时它会帮助解决很多问题。 crontab。

现在我自己想到了/bin/openvt -c8 -- /bin/bash --noprofile -l,但它需要root权限,设置太多变量,而且简单su myusername设置了很多额外的环境。

有人知道如何在与 cron 环境相同的情况下启动交互式 bash shell,并且不需要 Kubuntu 上的 root 权限吗?

当它在 ssh 会话、GUI 以及以下一个或多个操作系统上工作时,会有好处:HP-UX、Solaris 和 AIX

答案1

运行crontab -e并添加一个条目

* * * * * export -p > ~/cron-env

(如果在 Solaris 或不使用 POSIX shell 解释该命令行的系统上,请使用该系统上的/usr/xpg4/bin/sh -c 'export -p > ~/cron-env'标准路径或任何路径)。sh

等待一分钟,然后删除该行。

cron-env您的主目录中现在应该有一个文件。

然后您可以运行:

cd && env -i sh -c '. ./cron-env; exec sh'

使用与 cron 作业相同的环境启动 shell。

答案2

Cron 不是交互式 shell,所以这是您的第一个问题。但它大多是可以忽略的。

真正的东西是:环境变量。查看 cron 邮件中的标头来找到它们,然后在 shell 中设置变量以匹配它们并取消设置所有剩余的变量。

现在您已经非常接近 cron 所看到的环境了。

相关内容