Criando um script para modificar vários usuários crontabs

0

Eu corro uma caixa de sementes como uma máquina local com o Ubuntu 14.04LTS configurado com multiusuário rtorrent / rutorrent.

Eu instalei isso por meio de um script que também instalou entradas crontab para cada usuário, de modo que rtorrent & amp; o irrsi começaria automaticamente na inicialização.

A carga está muito alta (especialmente na rede) se todos os usuários rtorrent / irrsi estiverem sendo executados ao mesmo tempo. Então eu comecei a

su - user
password
crontab -e

& amp; então comente estas linhas rtorrent / irrsi para usuários A-D & amp; descomente-os para os usuários E-H.

Mais tarde, à noite, quando volto do trabalho, faço o mesmo, mas desfaço essas linhas para os usuários A-D & amp; comente estas linhas para os usuários E-H.

Toda essa edição me fez começar a me perguntar se não haveria uma maneira mais fácil de realizar isso ... Haveria uma maneira de criar um script que adiciona um # na frente de todas as linhas no crontab de todos os usuários que eu especificar. E então talvez um segundo script para remover esse # (se presente).

EDIT: o crontab de cada usuário contém apenas estas duas linhas.

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

Quando eu não quero que eles sejam executados na reinicialização ou mais tarde, quando o cron não os encontrar em execução, apenas comente estas linhas para que elas fiquem assim:

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

tornando-o efetivamente nem o irssi nem o rtorrent iniciam um boot nem iniciam mais tarde quando o cron não os encontra em execução.

    
por zotteken 24.07.2016 / 10:08

1 resposta

0

Provavelmente, a maneira mais simples de fazer isso com cron é:

  • inicie o serviço de torrent no tempo T1 para cada usuário no grupo de usuários A
  • interrompa o serviço de torrent na hora T2 > T1 para usuários no grupo A
  • inicie o serviço de torrent na hora T2 > T1 para usuários no grupo B
  • interrompa o serviço de torrent no momento T3 > T2 para usuários no grupo B

Escolher horários, por exemplo

  • O T1 está em qualquer ponto entre as 00:01 e as 13:59 no dia D
  • T2 é 14:00 no dia D
  • T3 são 23:59 no dia D

Você pode alterar isso da maneira que quiser para que o compartilhamento de tempo seja equitativo para todos os usuários do grupo A e B.

Para usuário "username" no grupo A:
1) Edite as entradas crontab existentes, comentando-as. Não os apague, apenas comente-os para que não sejam acionados.
2) Adicione novas entradas 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

Os detalhes do comando iniciando o daemon dependerão de vários fatores, por exemplo, se o cliente iniciando rtorrent é uma máquina de usuário único ou se vários usuários podem executar simultaneamente sua própria instância de rtorrent . Nesse caso, você pode querer salvar o pid do processo em um arquivo de execução para cada usuário, para que você possa gerenciar esses processos como uma unção de carga de tráfego. Olhe para this para realmente iniciar o processo de identificação do usuário, socket e pid do rtorrent .

Eu pude não testar essa solução, então é uma incursão no escuro no que diz respeito ao procedimento de início correto. Particularmente, eu assumo que yr /home/username/.rtorrent.rc está adequadamente configurado, e que irssi não oferece nenhum problema conforme detalhado em outro lugar .

HTH. Por favor, denuncie.

    
por Cbhihe 25.07.2016 / 18:50