Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Crontab未执行bash脚本_Bash_Shell_Cron_Crontab - Fatal编程技术网

Crontab未执行bash脚本

Crontab未执行bash脚本,bash,shell,cron,crontab,Bash,Shell,Cron,Crontab,我很少使用Linux,因此对bash脚本和cron作业没有任何经验。 这实际上是我的第一次尝试。所以这可能是一个很容易修复的问题 我有以下资料: /etc/cron.d/clear-mixstape-dir.sh 权限为:644 #!/bin/bash # Clears the /tmp/mixtape2 directory rm -rf "/tmp/mixtape2/"* 我的crontab文件如下所示: SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/

我很少使用Linux,因此对bash脚本和cron作业没有任何经验。 这实际上是我的第一次尝试。所以这可能是一个很容易修复的问题

我有以下资料:

/etc/cron.d/clear-mixstape-dir.sh 权限为:644

#!/bin/bash
# Clears the /tmp/mixtape2 directory
rm -rf "/tmp/mixtape2/"*
我的crontab文件如下所示:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

*/15 * * * * /etc/cron.d/clear-mixtape-dir.sh >/dev/null 2>&1
我正在尝试每15分钟执行一次.sh脚本

我发现的一切都表明这应该有效,但事实并非如此

在这种情况下,像文件权限(在/tmp/mixtape2/中的文件上)这样的内容是否重要? 或者可能是在实际的.sh脚本上设置的权限-可能它们需要设置为可执行

谢谢你的建议

 */15 * * * * root /etc/cron.d/clear-mixtape-dir.sh >/dev/null 2>&1

添加用户
root
,因为您的权限似乎仅限于root。

注意:这些注释涉及/etc/crontab

在执行其他操作之前,您要访问哪个cron
crontab-e

su -vim
<your-favorite-editor> /etc/crontab
2) 在一切正常运行之前,从cron条目中取出
/dev/null 2>&1
,以便在脚本运行后生成的电子邮件中看到输出

3) 将
*/15
的间隔降低到比脚本运行所需的间隔更大的值,比如说
*/5
,这样脚本运行得更频繁


4) 我不知道确切的原因,但是我在cron中运行的脚本必须设置自己的环境,尽管它是作为cron中的用户运行的。这可能包括诸如
cd/home/script owner
和运行
source.bashrc
以及调用设置环境变量的其他脚本之类的步骤。

/etc/cron.d
中的脚本中删除.sh扩展名,它将被调用。

runparts
忽略名称中带有句点的文件,因此.sh扩展名阻止脚本运行

mancron
-

文件必须符合运行部件(8)使用的相同命名约定:它们必须仅由大写和小写字母、数字、下划线和连字符组成


尝试将权限更改为777在您的行中添加
/bin/bash
*/15****/bin/bash/etc/cron.d/clear-mixstape-dir.sh>/dev/null 2>&1
@Satya:权限几乎不应该设置为777。在这种情况下,脚本上的权限应该是755,/tmp/mixtape2/上的权限需要允许写入运行cronjob的用户。更好的是,将权限设置为700,并确保所有者是
root
。除非您希望它以不同的用户身份运行-然后适当地更改所有权,并且仍然将其设置为700,然后更新您的
cron
定义以该用户身份运行脚本。我们讨论的是我需要删除的文件的权限,还是仅“mixtape2”目录的权限?权限的问题是,每次在mixtape2目录中创建文件(临时文件)时,它都被创建为644。因此,我不希望每次清除权限时都必须手动更改权限。我想我可以在我的bash脚本中添加一个chmod?crontab有两种不同的形式。在系统crontab中,一行由5个字段组成,其中一个字段表示将运行作业的帐户的名称,其余字段表示命令。在普通的crontab中,即使用
crontab
命令操作的那种,没有指定用户名——如果指定了用户名,它将作为命令名的一部分。(作业将由运行
crontab
命令的任何帐户执行。)要由root运行的命令可以作为系统crontab安装,也可以通过从root帐户运行
crontab
命令安装。感谢您的帮助。。。我添加了root,也添加了电子邮件地址,并删除了
/dev/null 2>&1
,但仍然没有成功。我根本没有收到任何电子邮件。看来crontab还没有开始行动?关于这个有什么想法吗?我没有做的一件事是你的第四步。。。坦白地说,我对这一切都太陌生了,不知道这到底意味着什么;)这是一个如此全面的解释,@octopusgrabbus。应该保存在某个地方,以便尝试调试其crontab的用户可以访问!一个简单的cron脚本——比如echo“Hello”——至少可以解决格式问题。从那里,您可以进入任何与脚本相关的问题@巴里贾维斯
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/local/bin:/usr/bin
MAILTO=fred@somewhere.com
HOME=/