[英]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
或者在进行cp
或rm
/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.