为什么我的 cron 作业会创建一个带有尾随问号的日志?

dav*_*jhp 5 linux php cron

我有以下 cron 工作:

 */5 8-20 * * * php /var/www/user/cron_email.php >> /var/www/log/log.txt
Run Code Online (Sandbox Code Playgroud)

它创建以下文件:

david@ubuntu:/var/www/log$ ls -l
-rw-r--r-- 1 root root   540 2011-05-30 17:10 log.txt?
Run Code Online (Sandbox Code Playgroud)

为什么它会创建一个尾随问号?我怎么能阻止呢?

(我正在登录控制台并在没有编辑器的情况下查看结果,所以我知道“?”在那里。)

这是唯一一个尾随 '?' 的文件。所以我知道这不是编辑器的问题。我什至没有使用任何编辑器,我只是查看控制台 CRT 屏幕。

Phi*_*ack 4

运行此命令将提供更多信息:

$ crontab -l | cat -tve
Run Code Online (Sandbox Code Playgroud)

我相当有信心您会在输出末尾看到额外的字符,如下所示:

*/5 8-20 * * * php /var/www/user/cron_email.php >> /var/www/log/log.txtM-U$
Run Code Online (Sandbox Code Playgroud)

美元符号只是表示行尾(cat 的 -e 选项)。.txt和之间的任何内容$都是额外的垃圾,可能是由于其他答案中列出的原因。

解决此问题的最简单方法是将您设置$EDITOR为简单的编辑器并重新编辑 crontab。例如:

$ EDITOR=/usr/bin/pico crontab -e
Run Code Online (Sandbox Code Playgroud)

然后删除行尾的任何无关字符。