首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从java和CLI向crontab添加cron表达式时遇到问题

从java和CLI向crontab添加cron表达式时遇到问题
EN

Stack Overflow用户
提问于 2018-01-04 08:15:31
回答 1查看 97关注 0票数 1

我正在运行下面的命令,并将两个参数传递给我的脚本文件(下面的命令是从java构建的):

代码语言:javascript
复制
sh /home/accure/Desktop/scripts/cronhandler.sh "/home/accure/Desktop/scripts/pipeline.sh 028d8ccb-4c46-4e02-a9b0-3c97a383daaf" "* * * * */5"

其中"/home/accure/Desktop/scripts/pipeline.sh 028d8ccb-4c46-4e02-a9b0-3c97a383daaf"是第一个参数,"* * * * */5"是第二个参数,基本上是cron表达式。

cronhandler.sh是我的脚本文件,包含以下代码:

代码语言:javascript
复制
if [ "$#" -eq 2 ]
then
    echo "Crontab with create & update functionality"
    command=$1
    cron_exp=$2
        echo "cron_exp=$cron_exp"
        echo "command=$command"
        cron_exp=`echo $cron_exp | sed 's/"//g' `
        command=`echo $command | sed 's/"//g' `
        echo "cron_exp=$cron_exp"
        echo "command=$command"
    if [[ "$cron_exp" != " " && "$command" != " " ]]
    then
                crontab -l | grep -q "$command"
        if [ $? -eq 0 ]
        then
                        crontab -l | grep -v "$command" | crontab -
            echo "CRON entry deleted successfully.."
        else
            echo "CRON entry deletion failed."
        fi
                crontab -l | grep -q "$command" || (crontab -l 2>/dev/null; echo "$cron_exp $command") | crontab -
        if [ $? -eq 0 ]
        then
            echo "CRON entry added successfully.."
        else
            echo "CRON entry addition failed."
        fi      
    fi
fi

运行脚本时遇到的错误如下所示。实际上,它是从当前工作目录中列出我的文件和文件夹,而不是将cron表达式添加到cron选项卡。

具有创建和更新功能的command=/home/accure/Desktop/scripts/pipeline.sh ** */5 cron_exp=* 028d8ccb-4c46-4e02-a9b0-3c97a383daaf cron_exp=14.5 LinkedList vs ArrayList -QWMyhFUtFHo.mp4 57.64911004342139 10.4039861446619 cron_exp=*-tomcat-7.0.41 OCJP_SCJP核心Java -集合部分-11_ Map _ Hashmap _链接映射-pSGvbJ7GJ68.mp4桌面文件下载epel-版本-6-8.noarch.rpm如何在爪哇与动画HashMap工作!!accure-facebook-parser-1.0-SNAPSHOT-jar-with-dependencies.jar教程中的新内容-c3RVW3KIIE.mp4 ingester访问- Hashmap如何工作-YR7Vp7HcAgs.mp4 jce_policy-8.zip蒙古数据音乐netbeans-7.4 NetBeansProjects Pictures Public类星体robomongo-0.8.4-x86_64 sa软vs -6.2.1 solr-6.2.1.tgz模板测试数据UnlimitedJCEPolicyJDK8视频Vinod 14.5 LinkedList诉ArrayList in Java-QWMyhFUtFHo.mp4 57.64911004342139 10.4074391446619-YR7Vp7HcAgs.mp4 apache-tomcat7.0.41带有OCJP_SCJP的核心Java -集合部分-11_ Map _ Hashmap _链接的HashMap -pSGvbJ7GJ68.mp4.部分桌面文档下载epel-release-6-8.noarch.rpm HashMap如何在Java中使用动画!accure-facebook-parser-1.0-SNAPSHOT-jar-with-dependencies.jar教程中的新内容-c3RVW3KIIE.mp4 ingester访问- Hashmap如何工作-YR7Vp7HcAgs.mp4 jce_policy-8.zip蒙古数据音乐netbeans-7.4 NetBeansProjects Pictures Public类星体robomongo-0.8.4-x86_64 sa软vs -6.2.1 solr-6.2.1.tgz模板测试数据UnlimitedJCEPolicyJDK8视频Vinod 14.5 LinkedList诉ArrayList in Java-QWMyhFUtFHo.mp4 57.64911004342139 10.4074391446619-YR7Vp7HcAgs.mp4 apache-tomcat7.0.41带有OCJP_SCJP的核心Java -集合部分-11_ Map _ Hashmap _链接的HashMap -pSGvbJ7GJ68.mp4.部分桌面文档下载epel-release-6-8.noarch.rpm HashMap如何在Java中使用动画!accure-facebook-parser-1.0-SNAPSHOT-jar-with-dependencies.jar教程中的新内容-c3RVW3KIIE.mp4 ingester访问- Hashmap如何工作-YR7Vp7HcAgs.mp4 jce_policy-8.zip蒙古数据音乐netbeans-7.4 NetBeansProjects Pictures Public类星体robomongo-0.8.4-x86_64 sa软vs -6.2.1 solr-6.2.1.tgz模板测试数据UnlimitedJCEPolicyJDK8视频Vinod 14.5 LinkedList诉ArrayList in Java-QWMyhFUtFHo.mp4 57.64911004342139 10.4074391446619-YR7Vp7HcAgs.mp4 apache-tomcat7.0.41带有OCJP_SCJP的核心Java -集合部分-11_ Map _ Hashmap _链接的HashMap -pSGvbJ7GJ68.mp4.部分桌面文档下载epel-release-6-8.noarch.rpm HashMap如何在Java中使用动画!command=/home/accure/Desktop/scripts/pipeline.sh教程中的新内容--c3RVW3KIIE.mp4 ingester访问-- Hashmap如何工作-YR7Vp7HcAgs.mp4 jce_policy-8.zip mongodata Music netbeans-7.4 NetBeansProjects Pictures Public类星体robomongo-0.8.4-x86_64 sa软64-6.2.1 solr-6.2.1.tgz模板测试数据UnlimitedJCEPolicyJDK8视频Vinod */5 -YR7Vp7HcAgs.mp4 028d8ccb-4c46-4e02-4e02-a9b0-3c97a383daaf CRON条目删除失败。"-":2: crontab文件中错误的分钟错误,无法安装。添加CRON条目失败。

注意:与其添加到crontab中,cron表达式中的*是从当前工作目录中列出我的文件和文件夹。

下面给出了调用命令行的Java代码:

字符串pipelineFilePath="sh /home/accure/Desktop/scripts/管线.sh 028d8ccb-4c46-4e02-a9b0-3c97a383daaf";

代码语言:javascript
复制
        String cronExp="* * * * */5";

        pipelineFilePath = "\"" + pipelineFilePath + "\"";

        cronExp = "\"" + cronExp + "\"";

        command = "sh " + /home/accure/Desktop/scripts/cronhandler.sh + " " + pipelineFilePath + " " + cronExp;

        runScript(command);

        public void runScript(String script) throws InterruptedException {
        final String cmd = script;
        Thread runScript = new Thread(new Runnable() {
        public void run() {
            try {
                DefaultExecutor executor = new DefaultExecutor();
                CommandLine commandLine = CommandLine.parse(cmd);
                executor.setExitValue(1);
                int exitValue = executor.execute(commandLine);
            } catch (Exception ex) {
            }
        }
    });
    runScript.start();
    Thread.sleep(10000);
}
EN

回答 1

Stack Overflow用户

发布于 2018-01-04 08:22:13

尝试将单引号(')而不是双引号(")放在参数周围:

代码语言:javascript
复制
sh /home/accure/Desktop/scripts/cronhandler.sh '/home/accure/Desktop/scripts/pipeline.sh 028d8ccb-4c46-4e02-a9b0-3c97a383daaf' '* * * * */5'

它将防止您的外壳的文件名展开

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48091199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档