我有一个脚本,我试图从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)
有了它,我可以运行任意命令,延迟不超过一秒.
(是的,我知道有各种各样的安全问题)
这个问题是一个fi与if问题.卫生署!
当脚本以交互方式工作并且在cron中失败时,它几乎总是一个PATH问题.cron作业进程中的默认PATH比交互式会话中的短得多.典型的结果是您尝试运行的某些系统实用程序出现"未找到"错误,而该错误不在cron中的PATH上.
我猜你试图运行的某些命令不在路径上,因此它应该创建的文件是空的,并且试图读取该文件的命令会给你这个错误信息.
| 归档时间: |
|
| 查看次数: |
1702 次 |
| 最近记录: |