2012-12-26 294 views
0

我是使用Linux shell脚本和cron的新手。如果我从命令行运行pubspg1.sh - 它运行得很好,但是在使用cron运行时 - 没有任何反应。也许我没有正确的脚本安装在cron中运行?注意:/ path ...是shell脚本的完整路径。shell脚本为cron执行多个shell脚本

在cron的,我有这样的:

30 22 * * 2 sh /path... /pubspg1.sh 

pubspg1.sh脚本是这样的:

#!/usr/bin/bash 

/usr/bin/sh /path... /pub1pg1.sh 

/usr/bin/sh /path... /pub2pg1.sh 

/usr/bin/sh /path... /pub3pg1.sh 

/usr/bin/sh /path... /pub4pg1.sh 
+0

它应该是#!/ usr/bin/bash(在编辑你的shell脚本之前,确保/ usr/bin/bash存在) – Icarus3

+0

您可以检查“sh”和“bash”是否确实在相同的路径上。点击“whereis sh”和“whereis bash” – Icarus3

+0

我在编写脚本之前检查了路径......两者都位于/ usr/bin下。我用“哪个sh”和“哪个bash”。 –

回答

0
  1. 确保你至少有一个空行的最后一个crontab条目后。
  2. 更改SH来砸
  3. 确保您的路径不包含需要转义特殊字符(如%)
0
  1. 你需要,如果ü改变/usr/bin/bash%path_to_SH%/sh脚本正在使用sh(您可以通过输入which sh来检查该通行证),然后您需要从脚本中删除所有/usr/bin/;
  2. 尝试检查执行该脚本权限的权限;
  3. 您可以执行脚本可执行文件(chmod a + x%script%),然后只需将其完整路径加入即可,不需要sh

P.S.可以肯定的是,你正在运行cron-daemon或cron.service(如果你使用systemd)

+0

1.所以,我会改变它/ usr/bin/sh(我输入哪个sh时得到的路径) 2.权限是0755 3.你在说cron在这里吗? –

+0

这是你说的话! #在/ usr/bin/sh的 SH /路径... /pub1pg1.sh SH /路径... /pub2pg1.sh SH /路径... /pub3pg1.sh –

+0

@LindaSabo试着用'sh'开始每个条目,没有路径。如果你说,在cron中只有一个条目是可以的,那么如果每个脚本都返回0,那么尝试在每个脚本之后使用&&。但是如果这个链条中的一个失败,它会粉碎其余的命令。 – zerospiel