azkaban任务调度时报错error=13, 权限不够

最近在使用azkaban调度shell脚本的时候,遇到了一个错误,错误日志大概如下:

java.lang.RuntimeException: java.io.IOException: Cannot run program "/SqoopScripts/import/usermail/import_t_usermail.sh" (in directory "/azkaban/azkaban-exec-server/executions/1714/d_report_subscribe"): error=13, 权限不够
	at azkaban.jobExecutor.ProcessJob.run(ProcessJob.java:304)
	at azkaban.execapp.JobRunner.runJob(JobRunner.java:752)
	at azkaban.execapp.JobRunner.doRun(JobRunner.java:591)
	at azkaban.execapp.JobRunner.run(JobRunner.java:552)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: Cannot run program "/SqoopScripts/import/usermail/import_t_usermail.sh" (in directory "/azkaban/azkaban-exec-server/executions/1714/d_report_subscribe"): error=13, 权限不够
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at azkaban.jobExecutor.utils.process.AzkabanProcess.run(AzkabanProcess.java:89)
	at azkaban.jobExecutor.ProcessJob.run(ProcessJob.java:296)
	... 8 more
Caused by: java.io.IOException: error=13, 权限不够
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 10 more
21-01-2021 02:26:03 CST import_t_usermail ERROR - java.io.IOException: Cannot run program "/SqoopScripts/import/usermail/import_t_usermail.sh" (in directory "/azkaban/azkaban-exec-server/executions/1714/d_report_subscribe"): error=13, 权限不够 cause: java.io.IOException: Cannot run program "/SqoopScripts/import/usermail/import_t_usermail.sh" (in directory "/azkaban/azkaban-exec-server/executions/1714/d_report_subscribe"): error=13, 权限不够
21-01-2021 02:26:03 CST import_t_usermail INFO - Finishing job import_t_usermail retry: 3 at 1611167163543 with status FAILED

看到日志里面有"error=13, 权限不够"的错误,我立马想到可能是shell脚本没有执行的权限,然后修改shell脚本的权限为最大权限

chmod 777 import_t_usermail.sh

然后使用azkaban调度,结果还是报错,然后就想是不是用户权限的问题,因为使用的普通用户,shell脚本的文件所有者和文件组别都是普通用户,于是我就试着修改了该文件的的所有者和文件组别为root用户:
修改文件的所有者

chown root 文件/文件夹

修改文件组别

chgrp root 文件/文件夹

修改之后又使用azkaban进行调度,还是报这个错误,我使用普通用户和root用户分别执行shell脚本都可以执行,说明脚本是没问题的,那就只可能是azkaban创建job的问题了,因为job我是在windows环境下使用notepad++创建的,可能会存在空格和文件格式不正确的问题。
我使用vim打开job进行编辑,然后按 Shift + :,输入set ff,发现job文件类型为doc,然后输入set fileformat=unix,将文件类型修改为unix,再次使用azkaban进行任务调度,任务完美运行!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值