在Ubuntu上使用shell脚本附加到crontab

Fil*_*cks 44 ubuntu cron debian crontab

我正在尝试在Ubuntu上的crontab中添加一行.

现在,我正在crontab -e那里编辑crontab.

但是,我似乎无法找到真正的crontab文件,因为crontab -e似乎给你一个临时的工作副本.

/etc/crontab 看起来像系统crontab.

crontab -e保存到的crontab的路径是什么?

谢谢!

jer*_*ent 118

你也可以在没有临时文件的情况下完成:

(crontab -l ; echo "0 4 * * * myscript")| crontab -
Run Code Online (Sandbox Code Playgroud)

  • `crontab -`是什么意思? (5认同)
  • `crontab -`表示用标准输入替换crontab. (5认同)
  • 应该是`(crontab -l 2>/dev/null; echo"0 4***myscript")| 如果没有crontab已经存在,则crontab -`否则`'$ user`的crontab可能会写入输出 (3认同)
  • @LuGo不是这样,没有crontab消息是stderr和crontab-从管道写入stdin。但是,`((crontab -l || true; echo“ 0 4 * * * myscript”)| 如果设置了set -e,则crontab-是必需的,因为子外壳将在不存在的crontab上出错,并且无声地不写回显部分。 (2认同)

ale*_*der 27

使用crontab -l > file列出当前用户的crontab来的file,并crontab file,安装新的crontab.

  • 例如,这一行将添加一个在每次重新启动时运行 script.sh 的作业:`crontab -l > file; echo "@reboot /home/user/script.sh" >> 文件; crontab 文件;rm 文件` (4认同)

小智 14

如果你的crontab是空的,你应该使用2>/dev/null:

(crontab -l 2>/dev/null; echo "0 4 * * * myscript")| crontab -
Run Code Online (Sandbox Code Playgroud)

  • 在典型的 shell 行为中,管道已经省略了 stderr:所以如果不接触 stderr,错误 msg 仍然不会在 crontab 中结束。例如,如果您*想要*在管道中使用 stderr,则在 Bash 中,您可以在管道后添加一个“&”:|& (2认同)