我是新来的Linux和下面的脚本只是我的问题的例子:
我有一个脚本但是当我执行它,当我将它设置可以通过crontab预期它不工作运行,因为它不读取文件内容到变量如预期其工作。
我有一个文件“的test.txt”其中有“ABC”在里面。 我的脚本把文成变量“变种”,然后我赞同它的日志文件:
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
有任何想法吗?
当你运行一个不同的shell脚本会出现这种情况。 这对系统特别是有关地方/bin/sh
是dash
:
$ cat myscript
echo "$(< file)"
$ bash myscript
hello world
$ sh myscript
$
为了解决这个问题,添加#!/bin/bash
在脚本的第一行。
其他人提供的答案,但我会给你从你的错误消息,一个大的线索; 重点煤矿:
/ bin / sh的 :1:/home/pi/MyScripts/test.sh:权限被拒绝。
注意定时任务是如何试图用/bin/sh
运行该脚本。 这是由一直表示要在你这样的脚本的顶部使用的外壳来解决。
#!/bin/bash
var=$(</home/pi/MyScripts/test.txt)
echo "$var" >/home/pi/MyScripts/log.log
如果您的脚本使用bash
,则必须明确设置/bin/bash
以某种方式。
此外,关于权限,你这样说:
但是,我给它777组的权限:
首先, 777
的权限是一个巨大的安全风险。 如果你这样做就意味着在系统上任何人或任何可以读,写和执行该文件。 不要那样做。 在cron作业的情况下,需要的唯一实体7
文件的权限是运行该文件在crontab的所有者。
这意味着,如果这是你的crontab,只需更改权限755
,让别人看和执行,但不写。 或者,也许更好,但将其更改为700
所以只有您作为所有者的文件,可以做任何事情来的文件。 但要避免777
,如果你想保持你的系统安全,稳定和理智的权限。
你有两个选择。 在你的文件的第一行,告诉你要解释脚本程序是什么
#!/bin/bash
...more code...
或者在你的crontab,告诉你要解释脚本程序是什么
* * * * * bash /home/pi/MyScripts/test.sh
在这个选项中,你并不需要使脚本可执行