bash – 运行一个简单的shell脚本作为cronjob

我有一个非常简单的 shell脚本,我需要作为一个cronjob运行,但我甚至不能得到测试脚本运行.这里和示例脚本:

/home/myUser/scripts/test.sh

#!/bin/bash
touch file.txt

crontab中:

* * * * * /home/myUser/scripts/test.sh

该脚本从终端运行正常,但无法将其作为cronjob运行.到目前为止,我已经在crontab中尝试了这些:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

* * * * * /bin/bash /home/myUser/scripts/test.sh

而这在脚本文件中:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/myUser/scripts

从我收集的解决方案可能在PATH变量中,但我无法弄清楚它是什么,因为我的理解在这一点非常有限.所以我的问题是,如何让我的脚本作为cronjobs运行?

编辑:该文件具有所有用户的rwx权限.这只是为了测试目的.

编辑:cronjobs如* * * * * touch /home/myUser/scripts/test.txt工作,但它不会运行脚本.

什么目录是file.txt? cron在你的主目录中运行作业,所以除非你的脚本在别的地方cd,否则它会在那里寻找/创建file.txt.

编辑:当你引用一个文件没有指定其完整路径(例如file.txt,而不是完整路径/home/myUser/scripts/file.txt)在shell中,它被认为是指的是一个文件您当前的工作目录.当您运行脚本(无论是交互式还是通过crontab)时,脚本的工作目录与脚本本身的位置无关;相反,它是继承自脚本的任何操作.

因此,如果cd(更改工作目录)到脚本的目录,然后运行它,file.txt将引用与脚本相同的目录中的文件.但是,如果您先没有cd,那么file.txt会引用您运行脚本时遇到的任何目录中的文件.例如,如果您的主目录是/ home / myUser,并且您打开一个新的shell并立即运行脚本(如scripts / test.sh或/home/myUser/scripts/test.sh; ./test.sh赢得’它将触摸文件/home/myUser/file.txt,因为/ home / myUser是您当前的工作目录(因此是脚本的).

当您从cron运行脚本时,它基本上是一样的:它运行它与设置到您的主目录的工作目录.因此,脚本中的所有文件引用都取决于您的主目录,除非脚本在其他位置cds或指定文件绝对路径.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...