La solution simple consiste à exécuter le processus avec un autre utilisateur . Alors, vous (en tant qu'utilisateur actuel) n'auriez pas la permission de tuer tous les processus appelés java
à moins que vous ne soyez root
.
I, deltik
n'ont pas de java
processus en cours. top
montre :
Processes: 80 total, 3 running, 1 stuck, 76 sleeping, 435 threads 21:22:54
Load Avg: 1.66, 1.47, 1.40 CPU usage: 33.49% user, 2.65% sys, 63.85% idle
SharedLibs: 7552K resident, 4480K data, 0B linkedit.
MemRegions: 15059 total, 1858M resident, 32M private, 372M shared.
PhysMem: 298M wired, 2332M active, 1289M inactive, 3918M used, 176M free.
VM: 164G vsize, 1041M framework vsize, 490174(73) pageins, 7225(0) pageouts.
Networks: packets: 1543452/932M in, 1286039/414M out.
Disks: 103231/3309M read, 218839/2343M written.
PID COMMAND %CPU TIME #TH #WQ USER
1159 java 108 02:28:38 45/2 1 somebody
1769 top 4.0 00:10.32 1/1 0 root
765 bash 0.0 00:00.00 1 0 deltik
...
Voici ce que j'obtiens lorsque j'essaie killall -9 java
:
Deltik-iMac:~ deltik$ killall -9 java
No matching processes belonging to you were found
Je ne peux pas tuer un java
processus appartenant à somebody
.
2 votes
Créer un programme qui ne peut pas être arrêté à partir de l'invite de commande semble un peu... dangereux.
1 votes
-9 est SIGTERM, et je crois qu'il n'y a aucun moyen de l'ignorer. Et c'est le PROCESSUS qui est tué au lieu du THREAD.
0 votes
@Jeffrey c'est ce que je pense aussi :-)
1 votes
Vous pourriez exécuter un autre processus (non-Java) pour relancer votre processus Java lorsqu'il se ferme inopinément.
0 votes
Je pense que la meilleure réponse est "ne le faites pas". (Comme vous ne lanceriez pas "rm -rf" dans le répertoire racine !)
0 votes
Bonjour Jilen, pouvez-vous modifier votre question et ajouter un peu de contexte sur ce que vous essayez d'atteindre ?