安排自动运行shell脚本而不是ROOT

时间:2015-06-11 09:24:46

标签: python linux shell unix linux-kernel

我有一个shell脚本,我希望每天早上8点自动运行,我无权使用crontab,因为我没有root权限

我的主目录是/home/user1/

有什么建议吗?

4 个答案:

答案 0 :(得分:0)

即使您没有root权限,也可以设置cron作业。如果您可以修改它或抛出任何错误,请将这两个命令命名为user1。

crontab -l

如果你能看到,那么试试这个:

crontab -e

如果您可以打开并编辑,则可以使用cron运行该脚本。

添加以下行:

* 08 * * * /path/to/your/script

答案 1 :(得分:0)

理想情况下,您应该让系统管理员将您的用户帐户添加到/etc/cron.allow - 如果您没有权限使用crontab命令,就像您可能发现的那样。

如果那是不可能的,那么你可以沿着这些行使用包装shell脚本(注意:未经测试):

#!/bin/bash

TIME="tomorrow 8am"

while :; do
    # Get the current time in seconds since the Epoch
    CURRENT=$(date +%s)
    # Get the next start time in seconds
    NEXT=$(date +%s -d "$TIME")

    # Sleep for the intervening time
    sleep $((NEXT-CURRENT))

    # Execute the command to repeat
    /home/user1/mycommand.sh
done

您可以在后台启动包装器脚本,例如在screen会话中,只要它处于活动状态,它就会定期执行您的脚本。请记住:

  • cron非常相似,没有真正的准确性。开始时间。如果你关心时间到第二个,那么这不是可行的方法。
  • 如果脚本由于某种原因而中断,例如服务器重启,则必须以某种方式重新启动。通常我会在@reboot中建议crontab条目,但这似乎不适合您。
  • 如果某种过程清理机制会导致长期用户被处理,那么您可能会运气不佳。
  • 您的系统管理员可能只是忽略了允许用户访问cron - 或者它可能是一个明确的决定。在第二种情况下,为了绕过这种限制,他们可能不会在一夜之间留下一些过程。

答案 2 :(得分:0)

我认为创建一个cron作业不需要root权限。编辑不属于你的cronjob - 你需要root。

答案 3 :(得分:0)

在紧要关头,您可以使用at(1)。确保您运行的程序重新安排工作。警告:如果机器停机一段时间,就会发生这种情况。