【发布时间】:2021-12-15 23:13:23
【问题描述】:
这是我的期望脚本,名为 script.exp,从终端执行时成功运行。但是通过cronjob调度时它不运行。
#!/usr/bin/expect -f
set timeout -1
spawn /home/user1/sql_backup.sh
match_max 100000
expect -exact "Enter password: "
send -- "pass123\r"
expect eof
我的名为 sql_backup.sh 的 bash 脚本是:
#!/bin/bash
mysqldump -u root -p --all-databases > /home/user1/mysql/mysql-bkp.sql
我的 cronjob 是:
* * * * * /usr/bin/expect -f /home/user1/script.exp
谢谢
【问题讨论】:
-
对脚本中的所有可执行文件使用绝对路径,或者通过 cron 条目定义/设置 PATH。
-
@Jetchisel :我认为设置
PATH不会影响脚本的启动,因为如果通过提供相对路径启动程序,则不会使用 PATH 变量。当然,不正确的 PATH 设置可能会影响在调用的 shell 脚本中发生的事情。 -
@user1934428,对了,我忘了补充一点,如果您设置了 PATH,则不要将
./用于可执行文件。 -
@user1934428 两个脚本都在同一个目录中。我也尝试过设置完整路径。它不能与 cronjob 一起运行。但是从终端执行时运行成功。
标签: bash cron scripting expect