就像用户的Jens已经说过了,也从我的经验,除非您使用的是非常简单的,通常单个命令,你应该坚持脚本文件。所以,就你而言,我会用脚本文件去。我会给你一个例子。
#!/bin/bash
dir_where_files_are_or_not=/filespath
dir_where_files_should_go=/another/filespath
save_dir=/savefiles/path
# ok, lets start by checking if dir contains files
if [ "$(ls -A $dir_where_files_are_or_not)" ]; then
# dir contains files, so lets rsync and mv them
rsync -au $dir_where_files_are_or_not/ $dir_where_files_should_go
mv $dir_where_files_are_or_not/* $save_dir
else
# dir is empty, lets send email
mail -s "DIR IS EMPTY" [email protected] <<< "message"
fi
现在,我只是把这段代码放在一个文件中。给它一个名称,例如“chkfiles”并将其保存在一个目录中(我使用/ usr/local/sbin来存放所有脚本)。
接下来,在shell中运行命令chmod +x /usr/local/sbin/chkfiles
以使文件可执行。然后将脚本添加到您的crontab。
我建议里面的crontab下面一行:
*/5 6-18 * * 1-6 /bin/bash /usr/local/sbin/chkfiles
我用/斌/庆典呼吁该脚本正确解释。它现在应该按预期工作。
重要提示:
- 运行脚本之前,您需要更改
dir_where_files_are_or_not
,dir_where_files_should_go
和save_dir
瓦尔您的需求。
- 做不包括在迪尔斯尾随斜杠,否则的rsync和mv可能不会做你真正想做
问候
怎么样有这些条件合适的剧本,并从crontab中调用?像这样,跟踪和维护非常复杂。 – fedorqui
谢谢! :)现在我已经改变了两个命令到{}但它不帮助 – user3310114
只有当我的广告 退出0; 后面的两个表彰,我doent得到任何错误的邮件但是当文件在DIR我得到一个错误信息: /bin/sh:-c:line 0:语法错误附近意外的令牌'}' – user3310114