它只是为了控制被调用脚本的权限还是也会影响脚本运行的时间或是否运行?我假设如果我为非 root 用户设置一个 cron,它应该始终运行,即使我自重新启动后没有以该用户身份登录,对吧?
答案1
请记住,Unix 最初被设计为多用户系统,即多个人使用同一台物理计算机。 (与今天不同,大多数 Unix 系统仅由一个人使用,多个用户帐户只是为了限制漏洞。)
因此,每个用户 crontab 的最初目的是让每个人都可以安排他们想要定期运行的作业(而无需授予他们编辑系统 crontab 的权限,从而干扰其他人的作业)。但现在,它主要只是为了控制正在运行的作业的权限。
所以是的,一旦保存了 crontab,无论该用户是否登录(或曾经登录),作业都将运行。主 cron 守护进程运行每用户 crontab 以及系统 crontab。
答案2
另请注意,非 root crontab 中的作业将以该用户身份执行。而在/etc/crontab
和/etc/cron.d
等/etc/cron.daily
目录中,系统管理员可以选择作业将运行的用户帐户,因为它有一个附加条目。
从man 5 crontab
:
The format of a cron command is very much the V7 standard, with
a number of upward-compatible extensions. Each line has five
time and date fields, followed by a user name if this is the
system crontab file, followed by a command.
答案3
基本上,它允许非特权用户执行 cron 作业。是的,如果你想完成常规的事情,你会需要 cron 作业。是的,它会在重新启动后持续存在。
如果您不想要“定期永远”语义,at/batch 提供类似的功能。