繁体   English   中英

如何在Linux中将文件移动到cron.d?

[英]How to move a file to cron.d in Linux?

直接/etc/cron.d/ 创建 my_cron -file 即可

sudo nano /etc/cron.d/my_cron

# Add content:
* * * * * username /path/to/python /path/to/file 2>/path/to/log

但是当我将其复制/移动到目录时,不起作用

sudo cp ./my_cron /etc/cron.d/my_cron

ls -l /etc/cron.d两次都输出相同的权限-rw-r--r-- 这些文件归root拥有。

我目前无法想象的唯一原因是我必须在复制后刷新/激活某些内容,这在创建时会自动发生。

在Ubuntu和Raspbian上测试。

任何想法? 谢谢!

较旧的cron守护程序仅在看到该目录或/etc/crontab文件的上次修改时间戳自cron上次对其进行扫描以来已更改时,才检查/etc/cron.d的更新内容。 最近的cron守护程序还检查/etc/cron.d各个文件的时间戳,但也许您在这里处理的是旧文件。

如果您使用的是旧的cron ,那么如果您将一个全新的文件复制到/etc/cron.d则目录的时间戳应该更改,并且cron应该注意到新文件。 但是,如果您的cp仅覆盖现有文件,则不会更改目录时间戳记,而cron不会获取新文件的内容。

/etc/cron.d中就地编辑文件不一定会更新目录时间戳,但是某些编辑器(一定是vi ,除非您进行了其他配置,否则会在目录中创建临时工作文件和备份文件)被编辑的文件有效。 这些其他文件的创建和删除将导致目录时间戳记的更新,并使cron使编辑后的文件生效。 这可以解释为什么编辑对您的行为不同于cp

要强制更新时间戳,您可以执行sudo touch /etc/crontab或者在进行cprm /etc/cron.d后在/etc/cron.d创建并立即删除暂存文件(或目录)。文件在那里。 显然touch更容易。 如果您想执行create + delete路由,那么mktemp将是一个不错的工具,以避免破坏他人的合法文件。

如果您真的很偏执,那么您至少要等一秒钟,然后再进行文件更改,然后再进行选择以强制进行时间戳更新的操作。 那应该避免cron重新扫描,文件更新以及touch或草稿创建+删除都可能在时间戳的粒度内发生的情况。

如果想查看您的cron实际在做什么,可以使用sudo strace -p <pid-of-cron> 主要是它的睡在一分钟时间,但你会看到它stat了一些文件和目录(包括/etc/crontab/etc/cron.d ),每次它唤醒。 当然,如果它决定需要执行某项工作,您也会看到该活动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM