创建用于修改多个用户 crontab 的脚本

创建用于修改多个用户 crontab 的脚本

我运行一个类似本地机器的种子箱,其中安装了 Ubuntu 14.04LTS 并安装了多用户 rtorrent/rutorrent。

我通过一个脚本安装了它,该脚本还为每个用户安装了 crontab 条目,以便 rtorrent 和 irrsi 会在启动时自动启动。

如果所有用户 rtorrent/irrsi 同时运行,负载会过高(尤其是在网络上)。所以我开始

su - user
password
crontab -e

然后为用户 AD 注释掉这些 rtorrent/irrsi 行,并为用户 EH 取消注释它们。

晚上晚些时候,当我下班回来时,我做了同样的事情,但取消了对用户 AD 的这些行的注释,并注释掉了用户 EH 的这些行。

所有这些编辑让我开始怀疑是否有更简单的方法来实现这一点... 是否有办法创建一个脚本,在我指定的所有用户的 crontab 中的所有行前面添加一个 #。然后也许还有第二个脚本来删除该 #(如果存在)。

编辑:每个用户的 crontab 只包含这两行。

@reboot sleep 10; /usr/local/bin/rtcheck irssi rtorrent
*/5 * * * * /usr/local/bin/rtcheck irssi rtorrent

当我不希望它们在重新启动或稍后运行时,当 cron 发现它们没有运行时,我只需注释掉这些行,使它们看起来像这样:

#@reboot sleep 10; /usr/local/bin/rtcheck irssi rtorrent
#*/5 * * * * /usr/local/bin/rtcheck irssi rtorrent

这使得 irssi 和 rtorrent 在 cron 发现它们没有运行时都不会有效地启动或稍后启动。

答案1

可能最简单的方法cron是:

  • 在时间 T1 为用户组 A 中的每个用户启动 torrent 服务
  • 在时间 T2>T1 时停止 A 组用户的 torrent 服务
  • 在时间 T2>T1 为 B 组用户启动 torrent 服务
  • 在 T3>T2 时刻停止 B 组用户的 torrent 服务

选择时间,例如

  • T1 位于 D 日凌晨 0:01 至下午 1:59 之间
  • T2 是 D 日下午 2:00
  • T3 是 D 日晚上 11:59

您可以以任何您想要的方式进行更改,以使所有 A 组和 B 组用户的时间共享公平。

对于组 A 中的用户“用户名”:
1)crontab通过注释掉现有条目来编辑它们。不要删除它们,只需将它们注释掉,这样它们就不会触发。2
) 添加新crontab条目:

# => either start daemon, while checking that (i) startup takes place between 0:01 am
#+ and 2:00pm and (i) no 'rtorrent' process owned by "username" already runs. 
*/10 0-14 * * * [ -z $(/bin/ps -eF | /usr/bin/awk '/rtorrent/ && /username/') ] && /sbin/start-stop-daemon -S /usr/local/bin/rtorrent  
# => or start client-app based on similar conditions
*/10 0-14 * * * [ -z $(/bin/ps -eF | /usr/bin/awk '/rtorrent/ && /username/') ] && /usr/bin/env DISPLAY=:0.0 /usr/local/bin/rtorrent  

# stop 'rtorrent' process if it exists and is owned by "username"
#+ Check every 5 minutes between 2pm and midnight
*/5 14-24 * * * /usr/bin/kill "$(/bin/ps -eF | /usr/bin/awk '/rtorrent/ && /username/ printf "%s",$2')"  > /dev/null 2>&1

启动守护进程的命令的详细信息将取决于许多因素,例如,启动的客户端rtorrent是单用户计算机还是多个用户可同时运行自己的实例rtorrent。在这种情况下,您可能希望将进程 pid 保存在每个用户的运行文件中,以便您可以将这些进程作为流量负载的一部分进行管理。查看实际启动rtorrent识别用户、套接字和 pid 的进程。

我可以不是尝试过这个解决方案,所以就正确的启动过程而言,这有点像在黑暗中摸索。特别是我假设 yr/home/username/.rtorrent.rc已充分配置,这irssi不会给你带来麻烦,因为详细的别处

HTH。请报告。

相关内容