Existem três maneiras de fazer isso.
Use um comando de carregamento de corrente adequado.
Em vez de usar o comando interno shell ulimit
, use comandos que foram desenvolvidos para esse propósito, a partir de vários conjuntos de ferramentas daemontools-family :
-
softlimit
do daemontools -
softlimit
do freedt -
softlimit
do daemontools-encore -
softlimit
do nosh -
s6-softlimit
de s6 -
chpst
do runit -
runlimit
do perp
Então, um seria executado, usando softlimit
do conjunto de ferramentas como um exemplo:
gnome-terminal -t A --tab -e "softlimit --coresize unlimited ./app1"
Use um subshell dentro do script.
Isso também aplica o limite ao processo do emulador de terminal. Neste caso, isso será bastante benigno. Mas se alguém estiver aplicando outros limites, como limites de identificadores de arquivos abertos ou limites de bifurcação de processos, isso pode ser problemático.
(ulimit -c unlimited ; urxvt -e "./app1")
Note que isto não funcionará com o Terminal GNOME ou com a variante cliente-servidor do Unicode RXVT . Ambos não invocam diretamente o emulador de terminal como filho do seu script. Eles executam uma chamada remota por meio de um processo do servidor, que não terá nem adquirirá os limites de recursos definidos no seu script.
Faça o Terminal GNOME executar um shell que executa ulimit
.
Lembre-se de que você precisa construir isso de baixo para cima.
- Você deseja que o shell real que executa o trabalho execute a lista de comandos
ulimit -c unlimited ; exec "./app1"
- Para passar essa lista de comandos para
sh
, ele precisa ser todos um argumento após-c
, portanto, precisa ser citado:sh -c "ulimit -c unlimited ; exec \"./app1\""
- Para passar a invocação
sh
para o Terminal GNOME, isso também precisa ser todos um argumento após-e
, então um segundo nível de cotação precisa ser aplicado:gnome-terminal -e 'sh -c "ulimit -c unlimited ; exec \"./app1\""'