macos 终端提示 “You have new mail”

每次打开Terminal第二行都会提示“You have new mail”:

原因是使用了cron, cron是以发送mail的形式实现输出的, 具体可以看这里: Linux cron运行原理

我的cron每周一会运行一个python脚本, 脚本执行过程中间会输出一些信息, cron把这些信息通过mail的形式发到我的用户上

在控制台输入mail指令可以查看这些信息:

可以看到一共有四条message

可以使用mail内部指令查看、删除message:

  • t——查看第一条message,
  • n——跳到下一条message
  • d——删除message
  • q——退出mail

打开message就可以发现其内容其实就是脚本中print出来的信息:

不太理解的是, 发送方为什么要注明为cron的守护程序(Cron Daemon) 可能就是为了区别发送方和接收方吧

由 Linux cron运行原理 中所示, 发送mail是第四次fork()后执行的步骤, 而cron是第一次fork()后成为守护进程, 所以脚本标准输出前的这些信息是哪一步生成的