运行 由于 cron 作业命令 'characters not allowed',acme cron 作业进入 .sh 文件
Running acme cron job into .sh file due to 'characters not allowed' for cron job command
我的托管服务提供商面板不允许添加下一个 cron 作业命令:
"/home/username/.acme.sh"/acme.sh --cron --home "/home/username/.acme.sh" > /dev/null
由于“某些字符不允许用于 cron 作业命令”错误。
阅读 this post 之后,我试图了解如何从脚本 (~/run-acme.sh
) 中 运行 并将其添加到 cron 作业中,但我不知道怎么做(示例使用 PHP 脚本)。
这里是run-acme.sh
脚本的内容但是不知道在命令(source
, .
or bash
)之前写什么 as this answer 建议:
选项 1:
#!/usr/bin/bash
bash "/home/username/.acme.sh"/acme.sh --cron --home "/home/username/.acme.sh" > /dev/null
选项 2:
#!/usr/bin/bash
source "/home/username/.acme.sh"/acme.sh --cron --home "/home/username/.acme.sh" > /dev/null
选项 3:
#!/usr/bin/bash
. "/home/username/.acme.sh"/acme.sh --cron --home "/home/username/.acme.sh" > /dev/null
以下哪个选项有效?他们 运行 结果相同吗?
重要说明:无权访问crontab/SSH
我相信您想要选项 1,因为您想要 运行 acme.sh
脚本。
选项 2 和选项 3 在 bash 中本质上是等价的,因为 source
是 bash 中 .
的别名。然而,不等同于sh
中的,因为.
存在于sh
中,而source
不存在(这是因为source
非 POSIX bash 扩展名)。
当使用source
或.
时,这类似于在Haskell的GHCi或Scala的REPL中使用:load
,或在load
中Lisp 或 Clojure。 source
或 .
命令告诉 shell 在当前 shell 的上下文中读取、解析和评估在单独的源文件 中编写的代码。本质上,它允许在单独文件中定义的函数和变量在“调用”shell 脚本的上下文中可用。
选项 1 的作用是 运行 acme.sh
。您需要此选项是因为您不希望 acme.sh
脚本在当前 shell 中成为 运行(您可能已经在当前 shell 中定义了一些别名或函数这可能会导致命名冲突)。 运行 bash acme.sh
类似于运行ning python my_code.py
:bash解释器会执行acme.sh
.
的内容
有关 source
和 .
的更多信息,请参阅:
help source
和 help .
在 bash 提示符下
- This superuser answer
- This askubuntu answer(遗憾的是这个答案没有解释
source
是非 POSIX)
我的托管服务提供商面板不允许添加下一个 cron 作业命令:
"/home/username/.acme.sh"/acme.sh --cron --home "/home/username/.acme.sh" > /dev/null
由于“某些字符不允许用于 cron 作业命令”错误。
阅读 this post 之后,我试图了解如何从脚本 (~/run-acme.sh
) 中 运行 并将其添加到 cron 作业中,但我不知道怎么做(示例使用 PHP 脚本)。
这里是run-acme.sh
脚本的内容但是不知道在命令(source
, .
or bash
)之前写什么 as this answer 建议:
选项 1:
#!/usr/bin/bash
bash "/home/username/.acme.sh"/acme.sh --cron --home "/home/username/.acme.sh" > /dev/null
选项 2:
#!/usr/bin/bash
source "/home/username/.acme.sh"/acme.sh --cron --home "/home/username/.acme.sh" > /dev/null
选项 3:
#!/usr/bin/bash
. "/home/username/.acme.sh"/acme.sh --cron --home "/home/username/.acme.sh" > /dev/null
以下哪个选项有效?他们 运行 结果相同吗?
重要说明:无权访问crontab/SSH
我相信您想要选项 1,因为您想要 运行 acme.sh
脚本。
选项 2 和选项 3 在 bash 中本质上是等价的,因为 source
是 bash 中 .
的别名。然而,不等同于sh
中的,因为.
存在于sh
中,而source
不存在(这是因为source
非 POSIX bash 扩展名)。
当使用source
或.
时,这类似于在Haskell的GHCi或Scala的REPL中使用:load
,或在load
中Lisp 或 Clojure。 source
或 .
命令告诉 shell 在当前 shell 的上下文中读取、解析和评估在单独的源文件 中编写的代码。本质上,它允许在单独文件中定义的函数和变量在“调用”shell 脚本的上下文中可用。
选项 1 的作用是 运行 acme.sh
。您需要此选项是因为您不希望 acme.sh
脚本在当前 shell 中成为 运行(您可能已经在当前 shell 中定义了一些别名或函数这可能会导致命名冲突)。 运行 bash acme.sh
类似于运行ning python my_code.py
:bash解释器会执行acme.sh
.
有关 source
和 .
的更多信息,请参阅:
help source
和help .
在 bash 提示符下- This superuser answer
- This askubuntu answer(遗憾的是这个答案没有解释
source
是非 POSIX)