Linux

CentOS root 使用者 crontab 用於 mysqldump

  • June 1, 2015

我正在使用 CentOS 6.6。我正在嘗試設置一個 crontab。我製作了一個 .sh 腳本,它在手動執行時完美執行。命令如下:

mysqldump --skip-lock-tables --single-transaction --hex-blob --flush-logs --master-data=2 -u root -p'password' database1 > database2.sql

但是,當我嘗試在 /etc/crontab 文件中設置它時,它不會執行。這是 crontab 文件的內容。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
* * * * * root /home/user/public_html/default1.sh

另外,我希望這個腳本在目錄中執行

/home/user/public_html

我的腳本叫做default1.sh,我把它放在/home/user/public_html 目錄下。

我的目標是每分鐘在 /home/user/public_html 中以 root 使用者身份執行此命令(或現在的 default1.sh 腳本)。

您需要檢查幾件事:

  1. 確保您的腳本具有適當的權限。您需要有一個x(至少對於使用者)是可執行的。
  2. 確保mysqldump在 crontab 內PATH。否則,請在腳本中指定絕對路徑。
  3. 我建議為輸出文件指定絕對路徑以確認它是否生成成功。否則,您可能會對文件位置感到困惑。

此外, -u root 是錯誤的語法。應該是-uroot AFAIK。

無論如何,嘗試通過添加來記錄您的 cron 條目

>> /somefile.log 2>&1

到 cron 線

引用自:https://serverfault.com/questions/695753