Eu tenho um script que eu configurei para executar uma série de tarefas, uma das quais é configurar uma tabela em um banco de dados e depois removê-lo (para testes automatizados).
A questão é que em apenas alguns dos usuários que eu uso o comando su - user -c
, a chamada para db2 falha. O mais estranho é que usar su - user
e executar o comando db2 funciona bem (fora do script). Isso só acontece depois de eu ter executado o script uma vez e durante o processo de execução do script (embora não haja nada que possa causar alterações de alguma forma, infelizmente não posso compartilhar o código exato, embora eu possa compartilhar um exemplo / recreação se isso ajudar), que contém apenas alguns loops básicos e um monte de comandos su - user -c
chamando comandos IBM mq.
Por exemplo, isso falha:
su - user -c "db2 connect to database USER user USING pass; db2 'CREATE TABLE LETABLE (LEFIELD VARCHAR (16))'"
Erro:
DB21016E The Command Line Processor encountered a system error while sending the command to the backend process.
DB21018E A system error occurred. The command line processor could not continue processing.
No entanto, isso funciona bem:
su - user
db2 connect to database USER user USING pass
db2 'CREATE TABLE LETABLE (LEFIELD VARCHAR (16))'
Eu tentei gerar o comando env nos dois casos, para ver se há alguma coisa diferente, mas eles correspondem como seria de se esperar. Também tentei ajustar a ordem em que os diferentes usuários são executados, mas isso também não parece ajudar.
Estou realmente confuso e qualquer ajuda seria muito apreciada.
Estou usando um shell ksh.