我已经创建了一个自动化的测试套件使用Selenium网络驱动程序,Maven
但是,当同一个shell脚本使用cron作业运行时,不会执行maven命令。我在shell脚本中看到了一些为maven指定路径的解决方案。这对我也不管用。
#!/宾/巴什
"/bin/sh /home/loop/bin/startSelenium.shstart
"
cd/home/me/projects/my_test_suite
导出路径=$PATH:/home/me/installs/apache-maven-3.0.4/bin
mvn clean test-DsuiteXmlFile=/src/test/resources/testng。xml-Ptest-Dgroups=group0
我可以在这里做什么来通过cron作业运行mvn命令?
谢谢
来自man crontab
:
cron(8)守护进程会自动设置几个环境变量。SHELL设置为/bin/sh,LOGNAME和HOME是从crontab所有者的/etc/passwd行设置的。HOME和SHELL可能会被crontab中的设置覆盖;LOGNAME可能不会。
PATH(您使用的是$PATH
)不是这些变量之一!你需要包括Java之类的东西,可能还有更多。
尝试以下方法:将路径设置为空白,然后从命令行运行脚本。这会让你很好地了解脚本中还需要说明什么。
希望在脚本中运行完整路径的maven可能会有所帮助/home/me/installs/apache-maven-3.0.4/bin/mvn clean test-DsuiteXmlFile=/src/test/resources/testng。xml-Ptest-Dgroups=group0
我也遇到了同样的问题,我通过将mvn调用放入外壳脚本并从cron调用外壳脚本来解决它。这种方式的好处是可以在外壳脚本中设置环境变量。这是我的外壳脚本:
#!/bin/bash
export PATH=$PATH:/opt/mvn/bin:/usr/bin
export M2_HOME=/opt/mvn
export M2=/opt/mvn/bin
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
/opt/mvn/bin/mvn -f /mnt/crawler/versioneye_maven_crawler/pom.xml crawl:clojars
我在/opt/mvn中安装了Maven。crontab中的条目如下所示:
1 1 * * * /mnt/crawler/clojars.sh >> /mnt/crawler/clojars.txt
这在Ubuntu上对我很有效。这就是我们为VersionEye爬行Clojar的方式。希望这对你也有帮助。
问题内容: 我想每天午夜运行一个PHP脚本。在研究如何执行此操作之后,似乎达到此目的的最佳方法是使用CRON作业。 如果我的php脚本位于http://example.com/scripts/scriptExample.php,是否有人可以显示此CRON命令的外观的最简单示例? 我浏览了许多帖子,但找不到足够简单的示例供我学习和借鉴。 问题答案: Crontab需要服务器上的完整路径。 这将每天在
问题内容: 在我们的centos6服务器中。我想以apache用户的身份在cron作业中执行php脚本,但不幸的是它不起作用。 这是crontab的版本(crontab -uapache -e) 这是“ test.php”文件的源代码,可以与“ apache”用户作为所有者正常工作。 我尝试将php替换为php的完整路径(/ usr / local / php / bin / php),但它也不起
问题内容: 我正在寻找一种使用PHP的方法,以检测脚本是从外壳上的手动调用运行的(我登录并运行该脚本),还是从crontab条目运行。 我有各种用php编写的维护类型脚本,这些脚本已设置为在crontab中运行。有时,我需要提前手动运行它们,或者如果发生故障/损坏,则需要运行几次。 这样做的问题是,每次手动运行脚本时,我也不想发生某些任务(发布到Twitter,发送电子邮件等)时需要设置的外部通知
我试图在节点JS中的另一个cron作业中运行一个cron作业。外部cron作业在第1天只执行一次:内部cron作业在第2天执行1次:内部cron作业在第3天执行2次:内部cron作业执行3次 为什么它要多次执行,尽管我在cron作业中调用它一次
问题内容: 很简单,我有要每月执行一次的节点脚本。 但这是行不通的,大概是因为该命令正在运行的路径或外壳。我尝试了以下通过cron执行节点的方法(已通过-v测试): 我没办法尝试了,有什么建议吗? 问题答案: 只需提供cron作业中node的完整路径即可,例如:
编辑:问题解决了,这是我的错误,我只是使用了错误的cron设置。我假设“*2***”在2点时每天只运行一次,但实际上它在2点后每分钟运行一次。所以Kubernetes的行为是正确的。 我一直在一个 cron 执行点运行多个作业。但似乎只有当这些作业的运行时间非常短时。知道为什么会发生这种情况以及如何防止它吗?我使用策略:禁止,和。 一个cron作业的示例,该作业应该每天运行一次,但在其预定运行时间