【发布时间】:2014-07-31 12:57:41
【问题描述】:
我是 linux 新手,下面的脚本只是我的问题的一个示例:
我有一个脚本,当我执行它时,它按预期工作,但是当我将它设置为通过 crontab 运行时,它没有按预期工作,因为它没有将文件内容读入变量。
我有一个文件“test.txt”,其中包含“abc”。我的脚本将文本放入变量“var”中,然后将其回显到日志文件中:
var=$(</home/pi/MyScripts/test.txt)
echo "$var" >/home/pi/MyScripts/log.log
当我执行它并将它回显到日志文件时,它工作得非常好,但当我通过 crontab 设置它时却没有:
* * * * * /home/pi/MyScripts/test.sh
cron 作业运行,它向我发送了以下错误消息:
/bin/sh: 1: /home/pi/MyScripts/test.sh: Permission denied.
但是我给了它777个权限:
-rwxrwxrwx 1 pi pi 25 Jun 10 15:31 test.txt
-rwxrwxrwx 1 pi pi 77 Jun 10 15:34 test.sh
有什么想法吗?
【问题讨论】:
-
确保把shebang放在上面。喜欢
#!/bin/bash。 -
您希望它多久执行一次?每分钟?
-
如果它无法打开文件,您会收到一封通过电子邮件发送给您的错误消息。
-
无论您遇到什么其他问题,0777 总是错误的,并且存在安全风险。对此的健全权限将是例如 0755。
-
@JakeGould 您需要 +x 在所有导致执行脚本的目录上,即使脚本本身是 777 并且您使用绝对路径。此外,错误在于执行
/home/pi/MyScripts/test.sh。不执行此文件的第 1 行。
标签: linux bash shell cron crontab