我将以下行添加到红帽 crontab 中
为了运行脚本/var/scripts/info_from_all_sites.bash每周五于00:00 晚上
脚本应该获取文件 - /var/RT/names.txt 作为参数
所以脚本将从该文件读取所有信息,
0 0 * * 5 /var/scripts/info_from_all_sites.bash /var/RT/names.txt 1>/dev/null 2>&1
我的问题是 - 将文件作为参数添加到 crontab 中的脚本中可以吗?
或者也许我需要将文件用双引号括起来
0 0 * * 5 /var/scripts/info_from_all_sites.bash "/var/RT/names.txt" ?
答案1
是的,这样做是可以的。
“第六”字段(该行的其余部分)指定要运行的命令。该行的整个命令部分(直到换行符或字符 )将由cronfile 变量中指定的 shell
%
执行。命令中的字符,除非用反斜杠 ( ) 转义,否则将被更改为换行符,并且第一个字符之后的所有数据都将作为标准输入发送到命令。/bin/sh
SHELL
%
\
%
答案2
我在使用以下 crontab 时遇到了同样的问题:
0 23 * * * sudo -u myname /home/myname/bin/buildme.sh -f >> /home/myname/log.txt
在 bash 脚本中,我使用它来获取 -f 选项:
while getopts ":f" opt; do
case $opt in
f)
force_full=1
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
done
因此,我注意到,当我由于某种原因通过 cron 运行此选项时,该选项并未得到执行。好吧,将 /bin/bash 添加到 cronjob 就可以解决这个问题。新的 crontab 是:
0 23 * * * sudo -u myname /bin/bash /home/myname/bin/buildme.sh -f >> /home/myname/log.txt