J'ai un script dans bash pour démarrer un programme java et je veux obtenir le pid du programme après son exécution. Le pid sera sauvegardé dans un fichier texte.Bash: Obtenir le pid d'un processus en utilisant un autre utilisateur
En ce moment, j'ai quelque chose comme ceci:
if [ "$USER" == "root" ]
then
su $APP_USER -c "nohup java $JAVA_OPTS >> $LOG_OUT 2>> $LOG_ERR &"
su $APP_USER -c "echo $! > $PID_PATH/$CAT.pid"
else
nohup java $JAVA_OPTS >> $LOG_OUT 2>> $LOG_ERR &
echo $! > "$PID_PATH/$CAT.pid"
fi
J'ai aussi essayé comme ça, mais ça ne marche pas non plus.
if [ "$USER" == "root" ]
then
su $APP_USER -c "(nohup java $JAVA_OPTS >> $LOG_OUT 2>> $LOG_ERR &); (echo $! > $PID_PATH/$CAT.pid)"
else
nohup java $JAVA_OPTS >> $LOG_OUT 2>> $LOG_ERR &
echo $! > "$PID_PATH/$CAT.pid"
fi
quand je lance mon APP_USER tout fonctionne très bien, quand je lance en tant que root mon programme java démarre mais le fichier pid est créé vide.
Cette commande fonctionne, mais le fichier est vide. Je ne comprends pas le pid. – fabio
Numéro trouvé ... mis à jour .. Vérifier maintenant .. – anishsane
Ça marche !! : D Tu étais rigth, 'echo' donnait une chaîne vide. C'est pourquoi le fichier pid était vide. – fabio