今天的心情完全能用一万个草泥马来形容!
为了添加个计划任务,我特么从上午搞到凌晨现在!
没有办法,我刚接触linux,因为不熟,遇到各种坑,为了搞定它,研究了wdcp控制面板、linux常用命令、shell命令、vim命令、crontab任务计划命令。。。。。个中的艰辛真是有苦难言!我特么就感觉自己像爱迪生发明灯泡一样,进行了无数次尝试!$^%$%^&%^&*^*&
言归正传,最终我的问题的结症是:shell 脚本的格式问题!shell脚本是我在windows电脑上编辑出来的,格式默认是dos格式,而linux里面的计划任务只能执行unix格式的 。(不过直接在linux窗口下执行sh脚本好像是没有问题的!)
如果shell脚本是dos格式,则追踪到的结果报如下错误:
/bin/bash^M: bad interpreter: No such file or directory
判断你的shell脚本就近是dos格式还是unix格式的方法是:
///
在执行shell脚本时提示这样的错误主要是由于shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识。
查看脚本文件是dos格式还是unix格式的几种办法。
(1)cat -A filename 从显示结果可以判断,dos格式的文件行尾为^M$,unix格式的文件行尾为$。
(2)od -t x1 filename 如果看到输出内容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,则是unix格式。
(3)vi filename打开文件,执行 : set ff,如果文件为dos格式在显示为fileformat=dos,如果是unxi则显示为fileformat=unix。
解决方法:
(1)使用linux命令dos2unix filename,直接把文件转换为unix格式
(2)使用sed命令sed -i "s/\r//" filename 或者 sed -i "s/^M//" filename直接替换结尾符为unix格式
(3)vi filename打开文件,执行 : set ff=unix 设置文件为unix,然后执行:wq,保存成unix格式。
或者参考这篇文章:http://www.cnblogs.com/zyb-pp/p/6429448.html
///
最后有几点补充事项说一下:
1、用crontab做任务计划时,最好将执行结果转向(追踪写入)到第三方文件,如我的做法:
*/1 */1 * * * /www/wdlinux/wdcp/shell/sendemail.sh >>/home/mylog.txt
(你可以通过 cat /home/mylog.txt 方法查看执行结果。)
2、清空日志文件的命令: echo >/home/mylog.txt
3、crontab 常用命令见这里:http://www.cnblogs.com/sxmcACM/p/3789145.html
4、linux 几个与任务相关的小命令:
查看已经创建的任务计划:crontab -l
查看任务执行的历史记录:tail /var/log/cron实时查看任务计划执行记录:tail -f /var/log/cron
5、vi 命令:http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html
。。。。。。。。。。。。。。。。。。。。。。。。。