我知道 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 所看到的环境了。