搞了一天时间,最后还是请教了朋友,终于把定时器crontab运行sh文件搞定,以防以后用,记录一下。
首先写好了sh文件,因为是从本地window系统写好以后复制到linux上面去的,需要把文件权限修改成可执行权限
chmod 777 文件名
运行./ss.sh命令发现无法运行,后来网站找资料是文件编码问题(linux编码问题很烦人)
vi ss.sh命令进去文件,在非编辑模式下运行
:set ff
看到的是
fileformat=dos
需要修改问unix,运行命令
set ff=unix
成功,再次运行./ss.sh文件成功执行。
接着就是加入定时任务中,这里耗费我半天的时间。
按照正常流程:
crontab -e
然后写入要执行的命令和时间(怎么写定时任务网上可以找很多)
加入以后可是死活不能不执行sh文件,网上找了很多方法,有说环境变量不对,有说路径不对的,反正我按照网上搜的方法都试一下,还是不行,都是以失败告终。
我把同样的代码放到另外一个服务器又可以成功执行,这个是我比较郁闷的事情,就这样浪费了一天时间。
第二天请教之前的一个同事帮忙,之前知道他对linux比较熟悉,差不多半个小时的时间,他找到了问题,问题立马解决。非常感谢他,还是文件编码问题。
解决方法:
首先crontab -e 进入定时文件,在非编辑的模式下
:set ff
发现不是unix(就是这个原因,导致定时任务无法找到sh文件)
set ff=unix 修改编码
最后运行定时任务,终于成功了。