如何在不使用 Crontab 的情况下定期运行 shell 脚本?

如何在不使用 Crontab 的情况下定期运行 shell 脚本?

我没有权限使用 crontab -e 来运行我的脚本。还有其他方法可以定期运行我的脚本吗?基本上我需要每周运行一次。

答案1

如果已启用并安装,您可以使用该at命令。但是,这是一次性的调度……您必须at在想要重新调度的事物中运行新命令。

查看man页面以获取有关该命令的帮助at

但请记住,它并不总是在所有 Linux/UNIX 系统上安装/启用。

答案2

真正的答案是联系您附近的系统管理员,解释您的问题,并要求他们为您启用 cron 访问权限。您应该解释您的程序如何运行、它的资源需求,并通常承诺如果您获得 cron 访问权限,您不会损害系统。

答案3

如果你不能或不想保持终端打开,你可以运行它GNU 屏幕/tmuxnohup

例子:

screen sh -c 'while sleep 7d; do mycommand; done'

或者

tmux 'while sleep 7d; do mycommand; done'

注意:这些命令将在mycommand第一次运行每周一次,然后定期进行,而不是直接进行。根据喜好进行更改。

有关连接/分离会话的更多信息,请参阅项目文档。

7d我相信是 GNU 特有的。604800如果版本只支持秒,就放在那里sleep。)

答案4

另一种方法是让 cronjob 在另一台机器上运行,用于ssh在目标服务器上执行某个命令。如果您设置了基于密钥的登录,这将很容易。

只需在另一台机器上设置一个 cronjob,如下所示

0 0 * * 7   /usr/bin/ssh remoteuser@remotehost mycommand

除执行时远程服务器处于离线状态外,这对于远程服务器重启和其他情况都是可靠的。

相关内容