加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 18:39:29 所属栏目:安全 来源:网络整理
导读:我有一个非常简单的 shell脚本,我需要作为一个cronjob运行,但我甚至不能得到测试脚本运行.这里和示例脚本: /home/myUser/scripts/test.sh #!/bin/bashtouch file.txt crontab中: * * * * * /home/myUser/scripts/test.sh 该脚本从终端运行正常,但无法将其
我有一个非常简单的 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或指定文件的绝对路径.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读