Como podemos escrever um script que generalize o ulimit do bash para ser um utilitário de carregamento em cadeia?

0

Em Como posso alterar meu comando para executar sem privilégios de superusuário, mas com o valor de limite alterado? , descobri que posso executar sleep 100 com limite de tamanho de arquivo principal alterado como

sudo sh -c "ulimit -c 1024 && sleep 100"

ou melhor ainda com privilégios reduzidos:

sudo sh -c "ulimit -c 1024 && sudo -u nobody sleep 100"
  1. Como posso escrever um script chamado my_ulimit para que possa ser chamado pela sintaxe semelhante como ulimit do bash mas também é um utilitário de carregamento de corrente, assim como a sintaxe de link

    my_ulimit [-H] [-S] [limits...] {next-prog}
    
  2. Mais geralmente, é possível não apenas para o bash ulimit , mas também para outro comando que funciona de maneira semelhante a ulimit , como:

    mywrapper {command-name} [command-arg] {next-prog}
    

A parte difícil para mim é como especificar e manipular os argumentos para ulimit , o nome do programa carregado por cadeia e seus argumentos, com relação à expansão de parâmetro e divisão de palavras. Aqui está o meu experimento, aprecio qualquer melhoria nele

$ cat mywrapper.sh 
#/bin/bash

setup_command="$1"
chained_command="$2"
eval "$setup_command" && sudo -u nobody bash -c "$chained_command"

$ sudo ./mywrapper.sh "ulimit -c 1024" "sleep 100"
^\Quit

Obrigado.

    
por Tim 30.05.2018 / 14:21

0 respostas