以cron的身份运行命令,但是从命令行运行

BCS*_*BCS 2 cron command-line

我有一个脚本,我试图从cron运行.当我从bash运行它时,它工作得很好.但是,当我让cron做的事情,我得到一个:

myscript.sh:第122行:语法错误:意外的文件结束

我想要的是一种运行命令的方法,就好像它是一个cron作业,但是在我的shell中执行它.

作为旁注:有谁知道在cron下会有什么不同?(脚本已经有#!/bin/sh一行)


回答我自己的问题:我把它添加到我的crontab:

*  *   * * *    bcs     for ((i=$(date +\%M); i==$(date +\%M) ;)) ; do find ~/.crontemp/ -name '*.run' -exec "{}" ";" ; sleep 1; done`
Run Code Online (Sandbox Code Playgroud)

并创建了这个脚本:

#!/bin/sh
tmp=$(mktemp ~/.crontemp/cron.XXXXX)
mknod $tmp.pipe p
mv $tmp $tmp.pre
echo $* '>' $tmp.pipe '1>&2' >> $tmp.pre
echo rm $tmp.run >> $tmp.pre
chmod 700 $tmp.pre
mv $tmp.pre $tmp.run
cat $tmp.pipe
rm $tmp.pipe
Run Code Online (Sandbox Code Playgroud)

有了它,我可以运行任意命令,延迟不超过一秒.

(是的,我知道有各种各样的安全问题)

这个问题是一个fiif问题.卫生署!

eem*_*emz 5

当脚本以交互方式工作并且在cron中失败时,它几乎总是一个PATH问题.cron作业进程中的默认PATH比交互式会话中的短得多.典型的结果是您尝试运行的某些系统实用程序出现"未找到"错误,而该错误不在cron中的PATH上.

我猜你试图运行的某些命令不在路径上,因此它应该创建的文件是空的,并且试图读取该文件的命令会给你这个错误信息.