Normalmente, o script catalina.sh é invocado por meio de um wrapper como um script sysvinit . Ele carrega a variável de ambiente e a usa como um argumento para o processo java que, no final das contas, chama o tomcat.
Eu executo o processo tomcat com este comando em python:
os.execve(cmd, [cmd, "run"], env)
A variável env define CATALINA_OPTS = -server -Xms512m -Xmx512m -Xss512k
Agora, quando eu executar o script seguinte processo java é mostrado na saída ps:
java -server -Xms512m -Xmx512m -Xss512k org.apache.catalina.startup.Bootstrap start
A minha pergunta é por que CATALINA_OPTS é mostrado na saída ps do processo java, mesmo que CATALINA_OPTS seja uma variável de ambiente?
Normalmente, o script catalina.sh é invocado por meio de um wrapper como um script sysvinit . Ele carrega a variável de ambiente e a usa como um argumento para o processo java que, no final das contas, chama o tomcat.
Eu abri o script catalina.sh
para ler o código:
Encontrou esta linha:
eval "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
O script catalina.sh
chama um processo java passando $CATALINA_OPTS
argumentos para o processo java.