Linux can';无法让cron运行脚本

Linux can';无法让cron运行脚本,linux,bash,cron,Linux,Bash,Cron,我花了几天时间试图理解为什么以前在cron.d中工作的脚本不再工作了 在尝试了很多东西并将它们全部删除后,我感到沮丧。我想检查cron为什么不工作。我以pi身份登录 我使用nano在cron.d目录中创建了一个文件: * * * * * pi bash //home/pi/cron.sh 我检查了cron文件的权限: pi@raspberrypi //etc $ namei -l //etc/cron.d/mycronjobpi f: //etc/cron.d/mycronjobpi drwx

我花了几天时间试图理解为什么以前在cron.d中工作的脚本不再工作了

在尝试了很多东西并将它们全部删除后,我感到沮丧。我想检查cron为什么不工作。我以pi身份登录

我使用nano在cron.d目录中创建了一个文件:

* * * * * pi bash //home/pi/cron.sh
我检查了cron文件的权限:

pi@raspberrypi //etc $ namei -l //etc/cron.d/mycronjobpi
f: //etc/cron.d/mycronjobpi
drwxr-xr-x root root /
drwxr-xr-x root root etc
drwxr-xr-x root root cron.d
-rwxrwxrwx root root mycronjobpi
pi@raspberrypi //etc $
我检查了cron.sh文件的权限:

pi@raspberrypi //etc $ namei -l //home/pi/cron.sh
f: //home/pi/cron.sh
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-xr-x pi   pi   pi
-rwxrwxrwx pi   root cron.sh
剧本是:

#!/bin/sh
date >> //home/pi/crondate.txt
bash在键入bash时运行脚本,否则不会运行脚本,尽管尝试了不同的shebang

pi@raspberrypi //home/pi $ bash cron.sh
pi@raspberrypi //home/pi $ cron.sh
bash: cron.sh: command not found
供参考

pi@raspberrypi //home/pi $ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/home/user/bin


run-parts: executing //etc/cron.d/mycronjobpi
run-parts: failed to exec //etc/cron.d/mycronjobpi: Exec format error
run-parts: //etc/cron.d/mycronjobpi exited with return code 1
请解释为何cron在重新启动后仍无法工作: sudo服务cron重启

可以看出,我相信文件权限是正确的,脚本在直接运行时可以工作。请帮忙

我至少浪费了一天的时间,一事无成。 请帮忙。还请解释为什么bash脚本在没有键入bash的情况下不能运行

供参考

pi@raspberrypi //home/pi $ echo $SHELL
/bin/bash

pi@raspberrypi //home/pi $ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/home/user/bin

如果当前目录不在
路径中
,则需要执行
/cron.sh
,而不是
cron.sh
@Tom我假设您指的是运行bash脚本cron.sh。即使在目录中,bash也不会在文件名前面加上bash来运行脚本。pi@raspberrypi//home/pi$bash cron.shpi@raspberrypi//home/pi$cron.sh bash:cron.sh:command not found我想补充一点,我使用了一段很好的代码:cat cron.sh | sed's/\r/'来检查脚本中是否没有windows返回。我想我应该尝试一些新的东西。我使用了crontab-e,并使用了与上面cronjob中相同的行。我这样做是为了pi,并且作为root使用sudo crontab-e。我还将whoami>>//home/pi/crondate.txt添加到cron.sh中。有趣的是,当我把用户带出队列时,这似乎起了作用。但是,我想了解为什么这对用户不起作用,以及为什么cron.d作业不起作用。您可以使用问题底部的
标志
标记,要求主持人将此移到unix.stackexchange.com,在那里它将更详细地介绍此主题。祝你好运