安排任务每天在 eJabberd 服务器上运行?

Posted

技术标签:

【中文标题】安排任务每天在 eJabberd 服务器上运行?【英文标题】:Schedule a task to run daily on eJabberd server? 【发布时间】:2015-08-05 01:18:42 【问题描述】:

我想设置一个任务来销毁我的 eJabberd 服务器上所有不活动的持久聊天室。是否可以设置这样的任务?

【问题讨论】:

【参考方案1】:

ejabberdctl 命令行工具可以在 ejabberd 中启用模块 mod_muc_admin 时为您提供 MUC 管理命令访问权限。该模块自 ejabberd 15.04 起默认可用。

启用后,您应该可以访问多个命令来销毁 MUC 房间:

destroy_room 销毁特定的 MUC 房间 destroy_rooms_file 销毁 MUC 房间列表。 rooms_unused_destroy销毁所有N天未使用的MUC房间。

ejabberd 文档中提供了命令列表:Multi User Chat Administration Commands。

您可能会使用命令rooms_unused_destroy,因为它似乎完全符合您的需要。

关于任务的调度,你应该依赖你的操作系统调度工具,例如cron。在自动执行命令之前,您应该小心并在几天内手动测试您的命令,以避免任何错误。

【讨论】:

感谢您的回复。你知道如何在 Unbuntu 上启用 mod_muc_admin 吗?一旦我将 mod_muc_admin, [] 添加到我的模块并重新启动我的 .cfg ,它就会破坏服务器。我在服务器上运行 ejabberd 2.1.11。 如前所述:“该模块自 ejabberd 15.04 起默认可用。”。您需要安装 ejabberd 15.04 及更高版本。它不适用于 ejabberd 2.1,因此您需要自己安装 ejabberd 才能使用该模块。 你不能。您需要使用较新的 ejabberd。 那么,您能否指出我在 Ubuntu 服务器上安装 eJabberd 15.04 的正确方向? 文档在此处:docs.ejabberd.im/admin/guide/installation,包含所有选项:二进制安装程序、实验性 deb 包和从源代码编译。下载页面为:process-one.net/en/ejabberd/downloads【参考方案2】:

如果服务器正在运行 linux,您可以在服务器上创建一个 cron 作业来杀死所有聊天室。我不知道 ejabbered 的命令是什么,但类似下面的一行。如果您希望它每天运行一次。

  1 1 * * * service ejabberd restart

分钟 小时 天 周 月

【讨论】:

我的 eJabberd 服务器在 Ubuntu 服务器上。我对此很陌生,cron 工作到底是什么? 这是一个每天在特定时间运行的命令。有关快速介绍,请参阅man crontab。 unixgeeks.org/security/newbie/unix/cron-1.html 如果我的命令是“service ejabberd restart”,所有空格会是什么样子? 所以我不需要在你发给我的链接中看到它的 root 前缀? ejabberd 重启不会破坏永久聊天室。它们是持久的,并且根据定义在重新启动时保持不变。

以上是关于安排任务每天在 eJabberd 服务器上运行?的主要内容,如果未能解决你的问题,请参考以下文章

安排每天运行 2 次的任务 [重复]

如何安排任务调用 gRPC 方法?

Celerybeat 每天两次在不同时间安排任务

如何安排 C# Windows 服务每天执行任务?

在 C# .NET Web 应用程序中每天安排任务的正确方法

如何安排不使用Windows任务计划程序运行bat文件?