我想在 crontab 中运行我的脚本,但我有一些问题...
在我的脚本中,我运行以下命令:
db2 connect to myDB2
Run Code Online (Sandbox Code Playgroud)
当我以db2inst1用户身份运行它时,这工作正常,但是当我在db2inst1 crontab 中运行此脚本时,我得到了这个:
db2:找不到命令。
我该如何解决这个问题?
Lek*_*eyn 55
为了避免输入命令的绝对路径,shell 引入了$PATH环境变量,每个目录用 a 分隔,:从左到右进行搜索。cron经常清除整个环境,包括这个$PATH变量。因此,与 shell 中的行为相比,脚本在您的 cron 中的行为可能有所不同。
which db2以db2inst1用户身份运行以获取程序的完整路径db2。如果输出为/usr/bin/db2,则您的 cron 命令将如下所示:
/usr/bin/db2 connect to myDB2
Run Code Online (Sandbox Code Playgroud)
echo "$PATH"以db2inst1用户身份运行以获取$PATH变量并确保该变量在您的 cron 脚本中也可用。例如,如果输出为/usr/local/bin:/usr/bin:/bin,则将下一行放在 shell 脚本的顶部:
export PATH="/usr/local/bin:/usr/bin:/bin"
Run Code Online (Sandbox Code Playgroud)
小智 11
正如在https://askubuntu.com/a/23438/227839 中回答的那样,你应该PATH在你的 shell 脚本中设置:
#!/bin/bash
PATH="/usr/local/bin:/usr/bin:/bin"
# rest of script follows
Run Code Online (Sandbox Code Playgroud)
或在 crontab 文件中,这将适用于所有 cron 作业:
PATH="/usr/local/bin:/usr/bin:/bin"
0 1 * * * db2 connect to myDB2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66723 次 |
| 最近记录: |