当前位置: 首页 > 知识库问答 >
问题:

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

汪永春
2023-03-14

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

sh /home/accure/Desktop/scripts/cronhandler.sh "/home/accure/Desktop/scripts/pipeline.sh 028d8ccb-4c46-4e02-a9b0-3c97a383daaf" "* * * * */5"

其中,< code > "/home/accure/Desktop/scripts/pipeline . sh 028 D8 CCB-4c 46-4 e02-a9b 0-3c 97a 383 daaf " 是第一个参数,< code > * * * * * * */5 " 是第二个参数,它基本上是一个cron表达式。

<code>cronhandler。sh是我的脚本文件,其中包含以下代码:

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选项卡。

带有创建功能的Crontab

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

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

字符串管道文件路径="sh /home/accure/Desktop/scripts/pipeline.sh028d8ccb-4c46-4e02-a9b0-3c97a383daaf";

        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);
}

共有1个答案

钮承恩
2023-03-14

试着用单引号(< code>')代替双引号(< code>")来括住你的论点:

sh /home/accure/Desktop/scripts/cronhandler.sh '/home/accure/Desktop/scripts/pipeline.sh 028d8ccb-4c46-4e02-a9b0-3c97a383daaf' '* * * * */5'

这将防止您的外壳的文件名扩展。

 类似资料:
  • 我已经在网上看了,但我仍然无法理解如何将图形添加到JPanel 以下是我的panel类的代码: 我的主要方法是: 文本只会出现在屏幕的一小部分(这适用于我试图绘制的任何图形对象)。我做错了什么?

  • 嗨,我对“石英时间表”很陌生。我有一个cron表达式 “0 0/24**?”--这意味着每个任务将每24小时执行一次。对吗? 如果是,时间表何时开始。例如,如果我在上午10点启动服务器,调度程序将每天上午10点执行。

  • 我正在使用石英调度程序来安排我的工作。我有一个错误的cron表达式: 当我这样做的时候: is。但是当我查看表达式时,它显然是错误的。其他人也面临类似的问题吗? 注:包装为:包装组织。石英 石英的版本是:2.2.3 请检查来自的CronExpression类http://www.javadoc.io/doc/org.quartz-scheduler/quartz/2.2.3 我还尝试了类的方法,但

  • 我在这里遇到了一个问题,我创建了一个actionListener,它旨在创建一个随机的人,并将其添加到JList中以显示在JScrollPane上。到目前为止,一切都很顺利,只是每当我单击JButton添加一个新的人员时,JList不会添加到当前列表中,而是每次都会替换它,因此JList上只显示一个项目。我知道问题发生在哪里,您将立即在actionevent行中看到它。不管怎样,谢谢你的帮助我的朋

  • 我正在创建一个TicTacToe游戏。我把所有带有ActionListeners的后端放在按钮上,将按钮添加到面板,设置框架等等。 然而,当我运行程序时,我的JPanel似乎没有添加到JFrame中。我试过使用不同的布局,仔细检查是否确实放置了。为所有内容添加行,之前的所有帖子似乎都指向了我认为已经涵盖的内容。 如果这真的很直接,我提前道歉。 谢谢你的帮助。

  • 我在Win7中使用cygwin版本2.3.1(0.291/5/3),并且已经尝试了几个小时来运行我的crontab计划作业。在我看来,可能成为问题的是我的cron进程和我的crontab进程有不同的所有者,我不知道如何解决这个问题。 我创建了一个crontab任务,它应该在第一分钟创建文件c:\crontest.txt,然后每隔一分钟更新一次。这不会发生的! 以下是我尝试运行此crontab时的控