环境与cron相同的交互式Shell


10

我知道crontabs的神奇世界有很多陷阱,但是有时候,当您有一些聪明的方法可以进入交互式(bash)shell,并且环境与从shell运行shell脚本时完全相同时,它有时会对很多故障排除有帮助。 crontab。

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

有人知道一种启动具有Cron环境的交互式bash shell的方法,并且不需要Kubuntu的root特权吗?

当它在ssh会话中,在GUI中以及在以下一种或多种操作系统上运行时,也会获得奖励:HP-UX,Solaris和AIX

Answers:


14

运行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。


有趣的是,大约一个小时后返回时会检查它。
jippie 2012年

辉煌,如梦似幻!
jippie 2012年

最出色的答案。如果可以的话,我会不止一次投票。
苏基玛

2

Cron不是交互式外壳,所以这是您的第一个问题。不过,大多数情况下都是可忽略的。

真正的事情是:环境变量。查看cron邮件中的标题以找到它们,然后在您的shell中设置变量以使其匹配并取消设置所有其余变量。

现在,您已经很接近cron所看到的环境。


从来没有注意到包含某些环境的邮件头,默认情况下,Thunderbird对用户隐藏了这些头。不幸的是,标题并不代表完整的完整环境。
jippie 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.