cronsun icon indicating copy to clipboard operation
cronsun copied to clipboard

exec: "cd": executable file not found in $PATH

Open kingname opened this issue 5 years ago • 10 comments

Please answer these questions before submitting your issue. Thanks! 在你提交 issue 前,请先回答以下问题,谢谢!

  1. What version of Go and cronsun version are you using? 你用的是哪个版本的 Go 和 哪个版本的 cronsun?

0.3.5版本预编译cronsun

  1. What operating system and processor architecture are you using (go env)? 你用的是哪个操作系统,什么架构的?

Debian 8, X86

  1. What did you do? If possible, provide a recipe for reproducing the error. A complete runnable program is good. 你做了什么,遇到了什么问题?尽可能描述清楚问题,最好把操作步骤写下来,按这些步骤操作后能重现你的问题。

定时执行如下命令

cd ~/project/test && ./test.py
  1. What did you expect to see? 你期望得到什么样的结果?

Python程序正常运行

  1. What did you see instead? 现在你得到的结果是什么样的?

报错:

exec: "cd": executable file not found in $PATH

kingname avatar Jul 09 '19 09:07 kingname

@kingname 虽然cd是bash的内置命令,但是比如centos6是没有/usr/bin/cd这个可执行命令哦,centos7就有,你可以看一下 cat /usr/bin/cd #!/bin/sh builtin cd "$@" 所以,你只需要创建这个可执行文件就可以啦,记得+x哦

gaolongquan avatar Jul 10 '19 01:07 gaolongquan

但是我再服务器上直接执行cd是可以的。而且我之前一直使用crontab执行定时任务都没有问题。是昨天开始才换成cronsun的。要是有问题,应该早就暴露出来了才对。

kingname avatar Jul 10 '19 01:07 kingname

@kingname 内置命令嘛,你直接执行当然没问题,你看,提示这么明显,环境变量没有cd命令,你不妨先试试,毕竟这个坑我走过。

gaolongquan avatar Jul 10 '19 02:07 gaolongquan

好的,我测试一下。感谢你的帮助。

kingname avatar Jul 10 '19 02:07 kingname

还有一个办法,你可以把你需要执行的命令 cd ~/project/test && ./test.py 写到一个脚本里,然后在任务脚本里写上 /bin/bash /tmp/test.sh

gaolongquan avatar Jul 10 '19 02:07 gaolongquan

最好不要这样,我有几百个定时任务,每一个都写shell脚本太麻烦了

kingname avatar Jul 10 '19 02:07 kingname

@kingname 虽然cd是bash的内置命令,但是比如centos6是没有/usr/bin/cd这个可执行命令哦,centos7就有,你可以看一下 cat /usr/bin/cd #!/bin/sh builtin cd "$@" 所以,你只需要创建这个可执行文件就可以啦,记得+x哦

你这个方法不行,放在文件里面会提示 builtin不是一个命令

kingname avatar Jul 12 '19 04:07 kingname

@kingname 虽然cd是bash的内置命令,但是比如centos6是没有/usr/bin/cd这个可执行命令哦,centos7就有,你可以看一下 cat /usr/bin/cd #!/bin/sh builtin cd "$@" 所以,你只需要创建这个可执行文件就可以啦,记得+x哦

你这个方法不行,放在文件里面会提示 builtin不是一个命令

root@vultr:~# whereis cd cd: root@vultr:/opt# vi /usr/bin/cd #!/bin/sh builtin cd "$@" root@vultr:/opt# whereis cd cd: /usr/bin/cd root@vultr:/opt# builtin root@vultr:/opt# echo $? 0 root@vultr:/opt# cat /etc/issue Debian GNU/Linux 8 \n \l

gaolongquan avatar Jul 16 '19 02:07 gaolongquan

成功了,非常感谢你的帮助

@kingname 虽然cd是bash的内置命令,但是比如centos6是没有/usr/bin/cd这个可执行命令哦,centos7就有,你可以看一下 cat /usr/bin/cd #!/bin/sh builtin cd "$@" 所以,你只需要创建这个可执行文件就可以啦,记得+x哦

你这个方法不行,放在文件里面会提示 builtin不是一个命令

root@vultr:~# whereis cd cd: root@vultr:/opt# vi /usr/bin/cd #!/bin/sh builtin cd "$@" root@vultr:/opt# whereis cd cd: /usr/bin/cd root@vultr:/opt# builtin root@vultr:/opt# echo $? 0 root@vultr:/opt# cat /etc/issue Debian GNU/Linux 8 \n \l

kingname avatar Jul 16 '19 02:07 kingname

image image

kingname avatar Jul 16 '19 02:07 kingname