schedule automate shell script 运行 不是 ROOT
schedule automate shell script running not as ROOT
我有一个 shell 脚本,我希望每天早上 8 点自动 运行,但我无权使用 crontab,因为我没有 root
许可
我的主目录是 /home/user1/
。
有什么建议吗?
即使您没有 root 权限,您也可以设置 cron 作业。如果您可以修改它或抛出任何错误,请将这 2 个命令作为 user1 检查。
crontab -l
如果你能看到,那么也试试这个:
crontab -e
如果您可以打开和编辑,那么您可以 运行 使用 cron 的脚本。
通过添加此行:
* 08 * * * /path/to/your/script
理想情况下,您应该让您的系统管理员将您的用户帐户添加到 /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
,没有真正的准确性w.r.t。开始时间。如果您关心精确到秒的时间,那么这不是要走的路。
- 如果脚本由于某种原因中断,例如服务器重启,您将不得不以某种方式重新启动。通常我会建议
crontab
中的 @reboot
条目,但这似乎不适合你。
- 如果有某种进程清理机制可以终止长期用户处理,那你可能就不走运了。
- 您的系统管理员可能只是忽略了允许用户访问
cron
- 或者这可能是一个明确的决定。在第二种情况下,他们可能不会接受您为了绕过该限制而在一夜之间留下几个流程。
我认为创建 cron 作业不需要 root 权限。编辑不属于您的 cronjob - 您需要 root 权限。
在紧要关头,您可以使用 at
(1)。确保您 运行 的程序重新安排了 at 作业。警告:如果机器停机任何时间,这都会很糟糕。
我有一个 shell 脚本,我希望每天早上 8 点自动 运行,但我无权使用 crontab,因为我没有 root
许可
我的主目录是 /home/user1/
。
有什么建议吗?
即使您没有 root 权限,您也可以设置 cron 作业。如果您可以修改它或抛出任何错误,请将这 2 个命令作为 user1 检查。
crontab -l
如果你能看到,那么也试试这个:
crontab -e
如果您可以打开和编辑,那么您可以 运行 使用 cron 的脚本。
通过添加此行:
* 08 * * * /path/to/your/script
理想情况下,您应该让您的系统管理员将您的用户帐户添加到 /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
,没有真正的准确性w.r.t。开始时间。如果您关心精确到秒的时间,那么这不是要走的路。 - 如果脚本由于某种原因中断,例如服务器重启,您将不得不以某种方式重新启动。通常我会建议
crontab
中的@reboot
条目,但这似乎不适合你。 - 如果有某种进程清理机制可以终止长期用户处理,那你可能就不走运了。
- 您的系统管理员可能只是忽略了允许用户访问
cron
- 或者这可能是一个明确的决定。在第二种情况下,他们可能不会接受您为了绕过该限制而在一夜之间留下几个流程。
我认为创建 cron 作业不需要 root 权限。编辑不属于您的 cronjob - 您需要 root 权限。
在紧要关头,您可以使用 at
(1)。确保您 运行 的程序重新安排了 at 作业。警告:如果机器停机任何时间,这都会很糟糕。