linux中的cronjob与守护进程。何时使用?

linux中的cronjob与守护进程。何时使用?,linux,Linux,将进程后台监控有很多好处,因为它与终端分离。但同样的事情也可以通过cronjob实现。[如果没有,请纠正我] 在使用cronjob或daemon进程时,我能够区分场景的最佳需求是什么?cronjob和daemon的区别在于执行时间范围 cronjob是偶尔执行一次的过程。cronjob的一个例子可以是偶尔删除临时文件夹内容的脚本,也可以是每天上午9点向大量设备发送推送通知的程序 而守护进程是一个独立于任何用户运行的进程,但在结束时不会重新启动。守护进程可以通过缓存状态、延迟磁盘写入或与客户端进行

将进程后台监控有很多好处,因为它与终端分离。但同样的事情也可以通过cronjob实现。[如果没有,请纠正我]


在使用cronjob或daemon进程时,我能够区分场景的最佳需求是什么?

cronjob和daemon的区别在于执行时间范围

cronjob是偶尔执行一次的过程。cronjob的一个例子可以是偶尔删除临时文件夹内容的脚本,也可以是每天上午9点向大量设备发送推送通知的程序


守护进程是一个独立于任何用户运行的进程,但在结束时不会重新启动。

守护进程可以通过缓存状态、延迟磁盘写入或与客户端进行长时间会话来利用其寿命


守护进程还必须没有内存泄漏,因为它们可能会随着时间的推移而累积并导致问题。

如果您需要一个对其他人永久可用的服务,那么您需要运行守护进程。这是一项相当复杂的编程任务,因为守护进程需要能够永久性地与世界通信(例如,通过监听套接字或TCP端口),并且需要编写守护进程以干净地处理每个作业,而不会泄漏甚至长时间锁定资源

相比之下,如果您有一个特定的作业,它的描述可以提前很好地确定,并且可以在没有进一步信息的情况下自动操作,并且是自包含的,那么拥有一个定期运行任务的cron作业可能就足够了。这是非常简单的设计,因为您只需要一个程序,在有限的时间内运行一次,然后退出


简而言之:守护进程是一个永远运行的进程。cron作业是一种定期启动新的短期流程的机制。

通常,如果您的任务需要每小时运行几次以上(也许这不是一个愚蠢的问题。我希望我能投票取消关闭它。你是对的@MarkR,但它与编程无关;更适合unix。stackexchange.com守护进程/services也可以作为登录用户运行。你可以将用户服务放在
~/.config/systemd/user/
下,并用
systemctl--user
控制它们。不确定这是否符合“守护进程”的定义,但用户服务在后台运行,它们不受直接用户控制,与系统服务完全相同(但它们在用户空间中运行)。如果出现故障,守护进程/服务也可以自动重新启动(至少在我的Ubuntu系统上,默认情况下许多守护进程都会这样做,例如syslog和sshd)。