我正在运行下面的命令,并将两个参数传递给我的脚本文件(下面的命令是从java构建的):
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是我的脚本文件,包含以下代码:
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";
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);
}发布于 2018-01-04 08:22:13
尝试将单引号(')而不是双引号(")放在参数周围:
sh /home/accure/Desktop/scripts/cronhandler.sh '/home/accure/Desktop/scripts/pipeline.sh 028d8ccb-4c46-4e02-a9b0-3c97a383daaf' '* * * * */5'它将防止您的外壳的文件名展开。
https://stackoverflow.com/questions/48091199
复制相似问题