cronを使用して実行されたシェルスクリプトは、手動実行とは異なるサイズのファイルを生成します。

cronを使用して実行されたシェルスクリプトは、手動実行とは異なるサイズのファイルを生成します。

MySQLデータベースを実行するRHELサーバーがあります。mysqldumpバックアップファイルを作成するために実行されるBashスクリプトがあります。 Bashから直接スクリプトを実行したときに生成されるバックアップファイルのサイズは754259バイトです。 cronを介して同じスクリプトを実行すると、サイズはわずか20バイトです。

私が知っている限り、cronはスクリプトを手動で実行するためにログインするときに使用するのと同じユーザーコンテキストで実行されます。しかし、サイズの違いを考えると必ずしもそうではないようです。

同じスクリプトを実行するときにファイルサイズが異なるのはなぜですか?

シェルスクリプトの内容:

backup_path=/var/custom/db_backups
configFile=/var/custom/auth.cnf
db_name=[db_name]
date=$(date +"%d-%b-%Y")

sudo /opt/rh/mysql55/root/usr/bin/mysqldump --defaults-extra-file=$configFile $db_name | gzip -9  > $backup_path/$db_name-$date.sql.gz

クローン編集:

sudo crontab -e

クローンファイルの内容:

12 21 * * * /var/custom/maint_plan

これにより、毎晩午後9時13分にスクリプトが実行されます。

ベストアンサー1

このmysqldumpコマンドは何も返さず、パイプで接続されて空のgzipgzip ファイルで終わります。望むより:

$ echo -n "" | gzip -9  > test.gz
$ stat -c %s test.gz
20

これにより、20バイトサイズのファイルが作成されます。だから問題はmysqldumpコマンドにあります。ルートのcrontabなので、スクリプトはroot権限で実行されます。sudo必要ありません。それを使用する必要はありませんsudo

/opt/rh/mysql55/root/usr/bin/mysqldump --defaults-extra-file=$configFile $db_name | gzip -9  > $backup_path/$db_name-$date.sql.gz

おすすめ記事