você está provavelmente querendo o comando timeout
.
timeout 12h s3cmd sync FOO s3://MyBucket
man timeout
para mais informações.
pelo menos no fedora, isto é instalado com o pacote "coreutils", que você deve ter por padrão.
Estou fazendo backups diários para o S3. Eu gostaria apenas de consumir a largura de banda de upload somente das 20h às 8h. Qualquer corrida individual pode demorar mais de 12 horas, porque o nosso envio é péssimo. Eu não estou preocupado em matar o s3cmd arbitrariamente porque ele irá se recuperar corretamente na próxima execução.
Meu crontab seria assim:
# 0 20 * * * s3cmd sync FOO s3://MyBucket
Como eu testo e faço parar se são 8 da manhã? Idealmente, eu gostaria de poder fazer algo como:
# 0 20 * * * time --limit 12H "s3cmd sync FOO s3://MyBucket"
Estou usando o Ubuntu Server.
Obrigado!
EDITAR:
Baseado na resposta do quanta. Para vários comandos de upload, acho que devo fazer?
# 0 20 * * * s3cmd sync FOO s3://MyBucket; s3cmd sync BAR s3://MyBucket; s3cmd sync FOOBAR s3://MyBucket;
# 0 8 * * * pkill s3cmd; sleep 1; pkill s3cmd; sleep 1; pkill s3cmd;
?
EDITAR:
NM, gosto do tempo limite melhor.
EDITAR:
Aqui está uma fraqueza da solução de tempo limite. Se eu tiver 12 backups para fazer e uma janela de 12 horas para fazer isso, não necessariamente preciso para alocar 1 hora por backup. Alguns backups podem demorar 5 horas, cerca de 20 minutos. Eu não me importo. Tudo o que me importa é às 8 da manhã, tudo pára. Não acredito que a opção de tempo limite permita essa flexibilidade para definir de maneira adaptável o valor de tempo limite. A opção kill baseada na resposta do quanta deve ser capaz de lidar com isso.