java多线程    Java入门    vsftp    ftp    linux配置    centos    FRP教程    HBase    Html5缓存    webp    zabbix    分布式    neo4j图数据库    

crontab 定时命令不执行,手工可以执行怎么办

无论如何质疑不如先看看日志

tail -300 /var/log/cron

想起来上几天有同事把/etc/crontab 给改了,他习惯把linux文件下载到windows上改,然后就多了这个传说的^M

所有得命令行失效

尽管crontab -l 能看到很多命令行,其实一条也不好用

清楚这个M的一组命令行

cat -v  /etc/crontab | tr -d "^M" > /etc/crontab1
rm /etc/crontab
mv /etc/crontab1 /etc/crontab
crontab /etc/crontab
crontab -l

生效了。

Windows下保存的文本文件,上传到Linux/Unix下后总会在末尾多了一个换行符^M,导致一些xml、ini、sh等文件读取错误,造成linux命令无法正确执行。

windows换行是\r\n,十六进制数值是:0D0A。

LINUX换行是\n,十六进制数值是:0A

一、使用vi编辑器,vi是类Unix系统下功能强大的编辑器,利用vi,可以替我们解决很多问题:

1. vi 文件名

2.按下 Esc

3. 输入以下字符串: %s/^M//g (注意,^M = Ctrl v + Ctrl m,而不是手动输入^M)

4. 直接回车 enter ( ^M 清除成功)

5. :wq(保存退出)

二、使用cat+tr生成新文件,然后再用mv命令重新覆盖原文件:

cat -v 原文件| tr -d "^M" > 新文件

mv 新文件 原文件

三、使用sed工具:

sed 's/^M//原文件>新文件

mv 新文件 原文件

注意:一跟三两种方法中的^M都是ctrl+v再ctrl+m后产生的,是一个单独的字符;第二种可以直接shift+6再加字母M生成。


This entry was posted in JAVA and tagged , , , . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/crontab-run-on-time/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.

One Response to crontab 定时命令不执行,手工可以执行怎么办

Leave a Reply