tar 文件未归档
我正在 shell 脚本中执行以下操作:
tar cvzf mytar.tgz *
当我从终端运行 shell 脚本时,它工作正常。当它使用 crontab 从 cron 作业运行 shell 脚本时,它看起来像是已存档,因为 tgz 文件在那里,但文件大小什么都没有,当我解压它时,那里什么也没有。但是,当我通过终端运行 shell 脚本时,tgz 具有更大的文件大小,我可以解压它们。
有人知道为什么它不能通过 cronjob 工作吗?
I am doing the following in a shell script:
tar cvzf mytar.tgz *
It works fine when I run the shell script from a terminal. When it runs the shell script from a cron job using crontab it looks like it is archived because the tgz file is there but the filesize is nothing and when I untar it there is nothing there. However, when I run the shell script via terminal the tgz has a larger filesize and I can untar them.
Anyone know why it won't work via the cronjob?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
尝试指定要归档的文件的完整路径:
tar cvzf mytar.tgz /path/to/your/files/*
Cron 从与 $HOME 不同的目录运行。
Try specifying the complete path to the files you want to archive:
tar cvzf mytar.tgz /path/to/your/files/*
Cron runs from a different directory from your $HOME.
cronjob 进程的工作目录是什么?如果其中没有任何内容,则该命令将归档所有内容。
What's the working directory of the cronjob process? If there's nothing in it, then the command will archive all of the nothing.
首先,cron 中不需要冗长。
其次,看起来您在那里使用相对路径。考虑使用绝对路径,即使对于 tar 命令本身也是如此。
最后,哪个用户正在运行 cron?是否存在潜在的权限问题或配额问题?
First, no need to be verbose in a cron.
Second, it looks like you are using relative pathing there. Consider using absolute paths, even for the tar command itself.
Last, which user is running the cron? Is there a potential for a permissions issue or a quota issue?
到目前为止,其他答案都给出了很好的建议。 Cron 有很多关于命令中允许的特殊规则。当我制作一个简单的 shell 脚本并将其放入 $HOME/cron 中,chmox 755 并将其完整路径放入 cron 中时,我取得了最大的成功。确保测试脚本 - 确保根据需要进行 cd'ing。请注意,cron 不仅不一定会从您的家中运行该命令,而且它也可能具有不同的路径,并且其他环境设置也会丢失。
The other answers so far give good advice. Cron has a lot of special rules wrt what is allowed in the command. I have he most success when I make a simple shell script, and put it in $HOME/cron, chmox 755 it and put the full path to it in cron. Making sure to test the script - ensuring to cd'ing as necessary. Be aware that cron not only won't necessarily run the command from your home, but it will also likely have a different PATH and other environment settings will be missing.