Shell脚本和CRON问题

Pet*_*ete 3 bash shell ubuntu cron

我为我们的本地开发服务器(运行Ubuntu服务器版本9.10)编写了一个备份脚本,只是一个简单的脚本来tar&gzip本地root并将其粘贴到备份文件夹中.我运行时工作正常:

$ bash backups.sh
Run Code Online (Sandbox Code Playgroud)

但是当我通过crontab运行它时它不会工作.

59 23 *  *  *  bash /home/vnc/backups/backup.sh >> /home/vnc/backups/backup.log 2> $1
Run Code Online (Sandbox Code Playgroud)

我收到错误消息

/bin/sh: cannot create : nonexistent
Run Code Online (Sandbox Code Playgroud)

该脚本在其运行的文件夹(/ home/user1)中生成tar.gz,但后来尝试将其从网络驱动器复制到已安装的共享(/ home/backups,实际上是192.168.0.6/backups) ,通过使用fstab.已安装的共享具有权限777,但所有者和组与运行该脚本的用户和组不同.我正在使用bash来运行脚本而不是sh以解决我过去曾遇到过的"错误替换"错误的另一个问题

该文件的前两行是

! /bin/bash

cd /home/vnc/backups
Run Code Online (Sandbox Code Playgroud)

我可能还没有提供足够的信息来完全回答这篇文章,但我可以根据需要发布更多信息,但我真的不知道接下来要去哪里看.

Pau*_*ce. 5

线索在错误消息中:

/bin/sh: cannot create : nonexistent
Run Code Online (Sandbox Code Playgroud)

注意它说"sh".Bourne shell不支持某些特定于Bash的功能.如果您正在使用Bash功能,那么您需要告诉Bash运行该脚本.

制作文件的第一行:

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

或者在你的crontab条目中执行以下操作:

* * * * * /bin/bash scriptname
Run Code Online (Sandbox Code Playgroud)

如果没有看到你的crontab条目和你的脚本,就很难更具体了.