Bash Script, Kill processus en tirant du fichier PID
C'est ce que j'ai en ce moment dans le script bash:
ps aux | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9
Le problème avec cela est que si quelqu'un d'autre est connecté et en tirant quelque chose lié à glassfish, il wil tirer la PID. Donc en tuant le mal PID.
Donc Ma question est comment puis-je corriger ce que je n'ai qu'à tirer la bonne PID, et comment dois-je réécrire à tirer le PID du fichier PID que glassfish génère.
source d'informationauteur Joshua Sutton
Vous devez vous connecter pour publier un commentaire.
Modifier le script qui commence glassfish et place quelque chose comme
echo $$ > /path/to/PID-file
(il peut contenir des~
du répertoire ou d'un autre mécanisme comme$USER
faire spécifique à l'utilisateur) sur la ligne qui suit immédiatement la ligne de départ du processus. Vous pouvez ensuite tuer le processus à l'aide dekill $(cat /path/to/PID-file)
.Ci-dessous j'ai fait l'erreur avec
ps
commutateurs, donc au-dessus de grep doit être fine.ah c'est pas de travail,ps
pourrait être utiliser comme cetteps -ao pid,tty,comm -u $USER
ce grep ci-dessus devrait être bon ...Si oui, ajoutez le commutateur -u$USER est le nom de l'utilisateur qui seront sélectionnés et répertoriés, par défaut doivent être déjà mis en environnement de système d'exploitation. Plusieurs utilisateurs pourraient être sélectionnés par des virgulesps aux -u root,$USER
Prendre une remarque: Si il n'y a pas de nom d'utilisateur dans le système, le ps va lancer d'ERREUR: nom d'Utilisateur n'existe pas.Lireman ps
pour plus.