【问题标题】:Crontab cannot execute openstack's commandscrontab 无法执行 openstack 的命令
【发布时间】:2026-01-30 13:30:01
【问题描述】:

我在 Openstack 中使用 Crontab 执行 CLI,我创建了一个 shell 脚本来执行所有命令。 使用 ./ 在 root 中执行时我的 shell 工作

./myfile.sh

但是: 当我使用 crontab 时它不起作用 crontab 的命令:在 root 中

crontab -e

*/1 * * * *         ./myfile.sh

myfile.sh 中的所有命令都可以工作,但是 Openstack CLI 的命令不起作用

例如:在 myfile.sh 中

1 echo "abc" > abc.txt

2 nova keypair-add --pub-key ~/.ssh/id_rsa.pub key_1

3 echo "def" > def.txt

4 nova floating-ip-create ext_net

1 & 3 效果很好,但是 2 & 4 不工作

【问题讨论】:

  • 在 crontab 行中添加脚本的完整路径:/home/user/.../myfile.sh。请注意,crontab 在非常小的环境中运行,因此您需要指明完整路径。
  • myfile.sh 正在运行,但 openstack 的命令不起作用
  • 正如@fedorqui 所说,您需要完整路径,要么设置路径以包含 nova 所在的目录,要么在脚本中使用 nova 的完整路径(crontab 中脚本的完整路径不也不疼)
  • root 中的 nova,fedorqui 帮助我
  • nova 在 /nova 或 /root/nova 中?您需要做的就是在您的脚本中使用 nova 可执行文件的完整路径

标签: shell crontab openstack


【解决方案1】:

如果您使用的是 OpenStack,您可能应该有一个可用的 openrc.sh 文件,您可以从您的 openstack 仪表板中检索该文件。这个脚本需要激活才能使用这些命令,这是 crontab 的一个问题,即使你在 rc.local 中运行它也不会激活这个脚本。如果您的 shell 中有可用的 rc 文件,请执行以下步骤。

  1. 打开你的shell脚本
  2. 在脚本顶部粘贴以下命令:source /Path/nameOfRC.sh
  3. 就是这样

我的脚本也遇到了完全相同的问题,这个解决方案对我有用。

【讨论】: