¿Cómo se encuentra One Find the PID de un process iniciado con startproc?

Tengo entendido que, en general, es una buena idea crear un file PID para los processs de daemon y que startproc es una buena forma de iniciar estos daemons.

Sé que startproc toma arguments -i y -p que se refieren a files PID pero no crea un file PID ni lo actualiza con el ID del process del daemon que se inicia. ¡Haciéndose eco de $! tampoco proporciona el identificador de process correcto cuando se utiliza startproc .

¿Alguien tiene algún consejo sobre cómo se puede get el PID de un daemon iniciado con startproc ?


Por lo que vale, estoy escribiendo un script de rc y quiero iniciar una JVM como un usuario sin privilegios. Realmente no quiero darle a este usuario un shell de inicio de session (así que su -c "java ..." user no es una opción) y realmente no quiero un process de raíz mientras el daemon se está ejecutando (que descarta sudo -Eu user java ... ). Entonces, aunque reconozco que estas son posibles soluciones, no creo que ninguna de ellas sea ideal. No obstante, siéntete libre de corregirme si mis suposiciones sobre estas alternativas son incorrectas.

Solutions Collecting From Web of "¿Cómo se encuentra One Find the PID de un process iniciado con startproc?"

Parece que nadie sabe una manera de hacer esto, entonces.

En cambio, simplemente hice lo que Tomcat hace básicamente; escribir un script de shell e invocarlo desde mi service en lugar de invocar java directamente.

Este script de shell también se encarga de crear el file PID usando echo $! después de comenzar la JVM. Para el cierre, he escrito una secuencia de commands similar que comtesting este file PID y lo elimina después de un cierre exitoso. Ambos scripts se invocan usando sudo -Eu $USER script_name.sh del service.

Técnicamente, esto no responde mi pregunta porque la solución no usa startproc en absoluto, pero funciona y evita la incómoda tarea de comparar líneas de command de processs en ejecución.

tuvo el mismo problema, intenté algo:

 PID=$(startproc -p $PID_FILE <some parameters>) echo $PID > $PID_FILE 

y funcionó … lo probé en SLES 11 SP4

pero en SLES 12 todo funciona completamente diferente 🙁