【问题标题】:Shell Script works fine manually, but fails to exectue through CrontabShell 脚本手动工作正常,但无法通过 Crontab 执行
【发布时间】:2014-12-10 23:47:01
【问题描述】:

所以我似乎无法解决我在使用 Crontab 时遇到的这个问题。我有一个我想每 15 分钟运行一次的 shell 脚本。我可以手动执行脚本,但 Crontab 不会成功启动它。很奇怪,我将它设置为在某个时间执行,我可以检查进程是否正在运行,但它从未真正执行过。这是我在 Crontab 中的设置。

0, 15, 30, 45 * * * root  /home/rpitc/Desktop/Script/Refresh

Shell 脚本如下所示。

#!/bin/bash

service=wfica

if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 ))
then
echo "$service is running!!!"
else
/home/rpitc/Desktop/Script/Iceweasel.sh & /home/rpitc/Desktop/Script/Login.sh
fi

我在这里读到它可能是造成问题的路径,所以我所做的是将所有脚本复制到 /bin 路径适当地更改了脚本,但它仍然无法执行。请帮忙,这太荒谬了!

【问题讨论】:

  • 可能是权限问题。
  • 不能真正解决您的问题,但不应该反过来grep -v grep | grep $service
  • 为什么逗号后面有空格?
  • 对不起乔纳森,这是我写这篇文章时的一个错字。我的 Crontab 设置不反映空格。对于吉德...不确定我是否遵循您的说法...我已经完成了以下操作。 chmod 777 到路径。那不应该授予适当的权限吗?
  • Jidder 的评论是grep -v grep 通常用于忽略用于查找进程的grep X。但这只有(真正)在您运行grep X 之前 运行grep -v grep 时才有效,因为您正在尝试过滤第一个grep 的输出。

标签: shell crontab raspbian


【解决方案1】:

当使用“crontab -e”时,我认为语法应该是(没有“root”并且没有空格):

0,15,30,45 * * * /home/rpitc/Desktop/Script/Refresh

如果您使用“/etc/cron.d/”中的文件,则 crontab 条目应如下所示:

0,15,30,45 * * * root /home/rpitc/Desktop/Script/Refresh

【讨论】:

  • 我正在 /etc/crontab 中编辑 Crontab。如果我尝试编辑 /etc/cron.d 它会显示新缓冲区。我应该将命令添加到 cron.d 吗?
  • 好的,我明白了... /etc/crontab 应该可以使用第二种语法。我认为最好使用命令“crontab -e”,因为其中包含语法检查。 !!确保以逗号分隔的分钟列表中没有空格!!!
  • 这很奇怪。所以我删除了 15 分钟的变量,这样我可以更频繁地测试它。我会把它设置为在特定时间击中。一旦它达到在 Crontab 中设置的 X 时间,我就会检查进程,我可以看到它作为一个进程运行,但突然它停止运行。它不想执行。发生了什么事?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 2018-05-06
  • 2014-01-02
  • 2017-05-09
  • 2012-07-28
相关资源
最近更新 更多