![我的 shell 脚本通过 putty 命令完美运行,但当我将其放入 crontab 中时,它不起作用](https://linux22.com/image/715176/%E6%88%91%E7%9A%84%20shell%20%E8%84%9A%E6%9C%AC%E9%80%9A%E8%BF%87%20putty%20%E5%91%BD%E4%BB%A4%E5%AE%8C%E7%BE%8E%E8%BF%90%E8%A1%8C%EF%BC%8C%E4%BD%86%E5%BD%93%E6%88%91%E5%B0%86%E5%85%B6%E6%94%BE%E5%85%A5%20crontab%20%E4%B8%AD%E6%97%B6%EF%BC%8C%E5%AE%83%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我有两个 shell 脚本,分别名为:backup_inventory_sourcecode.sh
和backup_bash.sh
。我使用 putty 运行这两个 .sh 文件,如下所示:
sh /var/www/html/backup_inventory_sourcecode.sh
sh /var/www/html/backup_bash.sh
成功运行,分别生成zip文件和sql文件,backup_inventory_sourcecode.sh内容为:
#!/bin/bash
NOW=$(date +"%m_%d_%Y")
sudo zip -r /inventory_sourcecode_backup/inventory_backup_${NOW}.zip /var/www/html/inventory -x ".git"
sync
/var/www/html/ftpupload.sh /inventory_sourcecode_backup/inventory_backup_${NOW}.zip
backup_bash.sh的内容为:
#!/bin/bash
NOW=$(date +"%m_%d_%Y_%H_%M_%S")
NOW=${NOW}_Inventory
mysqldump -u root -pAplrootuser db_apl_inventory >/db_backup/${NOW}.sql
#sleep 30
/var/www/html/ftpupload.sh /db_backup/${NOW}.sql
现在我将这两行放入crontab中:
*/1 * * * * sh /var/www/html/backup_inventory_sourcecode.sh
*/1 * * * * sh /var/www/html/backup_bash.sh
这些应该分别创建 .zip 和 .sql 文件。但它只生成 .sql 文件。事实证明它只*/1 * * * * sh /var/www/html/backup_bash.sh
起作用,但不起作用 */1 * * * * sh /var/www/html/backup_inventory_sourcecode.sh
。问题是什么。
答案1
Cron 的默认路径取决于实现,因此请检查您的手册页。
PATH
您可以在 crontab 文件中定义自己的变量。
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
*/1 * * * * sh /var/www/html/backup_inventory_sourcecode.sh
*/1 * * * * sh /var/www/html/backup_bash.sh