【问题标题】:Cron runs fine in shell, but fails when called by cron [duplicate]Cron 在 shell 中运行良好,但在被 cron 调用时失败 [重复]
【发布时间】:2021-11-24 12:22:00
【问题描述】:

我有以下脚本每晚对我的数据库进行备份。

如果我直接通过 shell 执行,一切正常。

但是,如果通过 cron 作为同一用户执行,我会在日志文件中收到此错误:nightly-backups.sh: 9: [[: not found

  1 
  2 timestamp=`date +%Y-%m-%d`;
  3
  4 ##### EXECUTE THE MYSQL BACKUP #####
  5 echo "Starting MySQL Backup:" `date`;
  6
  7 databases=`/usr/bin/mysql -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
  8 for db in $databases; do
  9     if [[ "$db" != "information_schema" ]] && [[ "$db" != _* ]] && [[ "$db" != "mysql" ]] && [[ "$db" != "performance_schema" ]] ; then
 10         echo "Dumping database: $db"
 11         /usr/bin/mysqldump --single-transaction --routines --triggers --databases $db > /home/db_backup/backup/mysql/$db-$timestamp.sql
 12         /usr/bin/pigz /home/db_backup/backup/mysql/$db-$timestamp.sql
 13     fi
 14 done
 15
 16 echo "Finished MySQL Backup:" `date`;

【问题讨论】:

  • 你忘了运行这个 bash 脚本。您应该通过usr/bin/bash /path/to/nightly-backups.sh 在您的 crontab 中调用它。

标签: mysql bash cron


【解决方案1】:
 [[: not found

[[ 是 bash 运算符。似乎 cron 使用另一个 shell 解释器执行脚本。 您可以在脚本的第一行提供解释器的路径:

#!/bin/bash

#!/usr/bin/env bash

【讨论】:

    猜你喜欢
    • 2014-11-24
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 2020-03-09
    • 2011-07-22
    • 2013-01-15
    相关资源
    最近更新 更多