【问题标题】:run script from cron but error as file not found从 cron 运行脚本但错误为找不到文件
【发布时间】:2021-03-10 07:13:03
【问题描述】:

如何从 crontab 运行命令,因为我的命令仅使用“sh -x abc.sh”运行

当我从 cron 运行没有“sh -x”的 abc.sh 文件时,它会将错误发送为“sh:abc.sh:未找到。”

我的脚本以 #!/bin/bash 开头,它是 AIX。

请帮忙。

【问题讨论】:

  • 其实sh -x abc.sh应该是./abc.sh或者/path/here/abc.sh(别忘了给执行权限)。此外,在 AIX 上,默认情况下不安装 bash,因此您可能希望将第一行更改为 #!/bin/sh
  • @ZsigmondLőrinczy 暗示的是,您的环境的 PATH 与 cron 的 PATH 不匹配。根据 CRON 的设置方式,您可能能够操纵路径。但是(尤其是在 cron 中)/full/path/to/file 通常是最好的选择。
  • 搜索,然后询问。这个问题在 Stack Overflow 上已经回答了几十次。这是一个例子:stackoverflow.com/questions/28743819/…

标签: shell cron jobs script


【解决方案1】:

答案在Stack Overflow Cron Tag Info 页面..

基本上,cron 是如何知道你的脚本在哪里的?它以与您不同的用户身份运行,具有受限环境(和 PATH),因此您需要脚本的完整路径。

【讨论】:

  • 我只提到了完整路径..所以它就像 #00 1 * * * "/usr/bin/chase/abc.sh" #00 1 * * * "/usr/bin /chase/sh -x abc.sh" 两种方式都不起作用,它显示错误为 "sh: abc.sh: not found."
  • cron 文件中的#ANYTHING 是注释 - 还是 # 错误?
  • 提供您的脚本有一个 #! AND 是 cron 用户(系统 crontab)可读和可执行的,或者是 crontab 所针对的用户,那么0 1 * * * /usr/bin/chase/abc.sh ARGS 应该没问题。
  • 我添加了以下几行,它给出了这个错误.. #!/bin/sh #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr /sbin:/usr/local/bin:/usr/local/sbin 错误: db_log[2]: ANS1398E: 0403-009 指定的数字对该命令无效。
  • 脚本是做什么的?如果使用 mktemp 来获取临时文件,是否使用 /tmp 作为临时文件?否则,您是否给某些东西提供了错误的输入? [从脚本的“名称”很难分辨]。
猜你喜欢
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多