分页: 1 / 2
ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-04 17:56
由 xsuii
最近在弄脚本为ubuntu备份,并使用另一个脚本上传至dropbox,并且用cron做定时任务,有三个脚本,详细如下:
1、备份脚本 backup.sh:用来执行特定的备份任务,但这个不是重点。
2、上传脚本 dropbox_uploader.sh(
https://github.com/andreafabrizi/Dropbox-Uploader):
已关联dropbox API了,只需按命令格式来就可以对dropbox文件单一处理——上传、下载、删除……。
3、备份上传脚本BackupUpload.sh:
这里写了我一次运行所要对dropbox处理的所有文件,脚本内容如下:
代码: 全选
#!/bin/bash
#Upload
/backup/dropbox_uploader.sh upload /backup/$(date +"%Y.%m.%d.%a").tgz
#Delete backup-file 2-week-ago
/backup/dropbox_uploader.sh delete $(date -d '2 week ago' "+%Y.%m.%d.%a").tgz
如果直接运行脚本“./BackupUpload.sh”是成功的,但是不知道为什么加入cron后虽然有运行记录,但是不成功,即dropbox端没反应。运行记录见附件:
crontab:* * * * * bash /backup/BackupUploda.sh(鉴于试验,设置每分钟运行一次)
求大牛解救啊~~

Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-04 23:32
由 needle
真奇怪~~~
用set打日志吧
Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 0:37
由 xsuii
needle 写了:真奇怪~~~
用set打日志吧
可以详细些吗?set好像是设置环境变量的,你是说可能和环境变量有关?
初学者,多多指教

Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 0:45
由 needle
我不知道set可不可以设置环境变量~
环境变量我一般用export
我只知道set的两个用法:
一个是设置非脚本环境下的命令行参数
一个是启动调试模式:
在脚本内的开头set -x #开启调试模式(把脚本运行过程打印出来)
在脚本内的结尾set +x #关闭调试模式
接着在crontab中把正常输出和错误输出导向文件,可查看脚本运行全过程:
&>~/crontabrun.log
Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 2:19
由 xsuii
needle 写了:
在脚本内的开头set -x #开启调试模式(把脚本运行过程打印出来)
在脚本内的结尾set +x #关闭调试模式
接着在crontab中把正常输出和错误输出导向文件,可查看脚本运行全过程:
&>~/crontabrun.log
嗯,我试过你的方法了,日志信息如下:
大概知道什么原因了,就是第一次我要使用dropbox的上传脚本时,是需要和dropbox账户那边关联API的。我之前是在shell里面进行关联过,所以可以运行成功。但是当用cron的root运行时,从信息得知,它并没关联API,这就头痛了,应该怎样设置才能使cron执行时是关联了dropbox的API呢?
Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 3:32
由 needle
请问这个API要如何关联~
是要用到命令,还是环境变量?
Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 11:10
由 daf3707
crontab 中的%要转义
Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 11:53
由 xsuii
needle 写了:请问这个API要如何关联~
是要用到命令,还是环境变量?
这里是我关联API的一次过程:
首先需要运行一次上传脚本来激活次过程,然后就根据shell中的提示和dropbox端交叉进行关联,分别需要从dropbox端获取App key、App secret、选择创建app的类型……
Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 11:57
由 xsuii
daf3707 写了:crontab 中的%要转义
我的crontab中没有%啊,那是我的shell脚本。而且我在shell中调试过,是没问题的...现在我也大致知道原因了,你可以看看我帖子的回复。
Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 13:25
由 needle
脚本运行时,应该不用交互吧~
如果直接运行可以成功,那试试:
代码: 全选
#!/bin/bash
#Upload
su -lc "/backup/dropbox_uploader.sh upload /backup/$(date +"%Y.%m.%d.%a").tgz"
#Delete backup-file 2-week-ago
su -lc "/backup/dropbox_uploader.sh delete $(date -d '2 week ago' "+%Y.%m.%d.%a").tgz"
Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 13:33
由 eexpress
cron里面,需要设置执行路径。cron可不是shell。
/backup/??你这啥路径哦。
Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 15:31
由 xsuii
needle 写了:
代码: 全选
#!/bin/bash
#Upload
su -lc "/backup/dropbox_uploader.sh upload /backup/$(date +"%Y.%m.%d.%a").tgz"
#Delete backup-file 2-week-ago
su -lc "/backup/dropbox_uploader.sh delete $(date -d '2 week ago' "+%Y.%m.%d.%a").tgz"
这个我试了下,确实可以
虽然不太明白具体怎样发生的,还是要感谢啊~
而且我之后试了试使用“su root”登录超级用户进行API的关联,对于我之前的脚本运行也可以通过,难道和你所讲的命令是一个道理?通过“su -l”登录root然后“su -c”执行后面的命令,再退出?
但好像又说不通啊~既然要用超级用户来关联,那么如果我只是在管理员的情况下关联了,然后再“su -l”登录root,不是还是没关联吗?
有点晕了,对于里面的关系
我想听听你是怎么分析的?
Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 15:33
由 xsuii
eexpress 写了:cron里面,需要设置执行路径。cron可不是shell。
/backup/??你这啥路径哦。
我的cron是这样写的
代码: 全选
* * * * * bash /backup/BackupUploda.sh
不过问题现在解决了...还是要感谢你的围观啊~
Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 15:40
由 eexpress
估计只是表明解决。
设置环境变量,至少要设置SHELL PATH;分清是哪个帐号的cron,谁的cron做谁的事情,不应该指望脚本里面还使用su。
Re: ubuntu使用脚本调用脚本,并用cron做定时任务,为什么执行不了?
发表于 : 2013-04-05 15:54
由 xsuii
eexpress 写了:估计只是表明解决。
设置环境变量,至少要设置SHELL PATH;分清是哪个帐号的cron,谁的cron做谁的事情,不应该指望脚本里面还使用su。
嗯,确实...我对于一些概念还是挺模糊的,就如“sudo -s”和“su root”的区别,又或者环境变量和它们的执行机理
如果要使脚本里不用su,那就要使用超级用户(su root)关联了...
还在不停的学习、研究中啊
