J'utilise perl version 5.8.4. Je travaille avec un programme appelé JMP. Avant d'ouvrir le programme, je veux utiliser perl pour vérifier si un processus du programme est déjà en cours d'exécution. Si c'est en cours, je veux le fermer.Vérifier si le processus est en cours d'exécution et le tuer
Répondre
REWORK: (Idk comment je reçois ici, je viens de perdre)
Cela ne fonctionne que dans les fenêtres cause est une exécution shell (Taskkill).
system('taskkill /F /IM ImageName.exe >nul 2>&1');
double possible de:
How can I kill a program that might not exist from Perl on Win32?
perl> Documentation du système:
http://perldoc.perl.org/functions/system.html
documentation Taskkill:
A propos de la redirection de syntaxe (Basé dans un awnser de How can I kill a program that might not exist from Perl on Win32?):
Vous devez simplement ajouter ceci:
use autodie 'system';
system('killall', '-q', 'JMP');
ou
use autodie 'system';
system('pkill', 'JMP');
Si vous voulez gérer l'erreur vous vérifier au lieu d'utiliser autodie, il ressemblerait
die "Can't launch killall: $!\n" if $? < 0;
die "killall killed by signal ".($? & 0x7F)."\n" if $? & 0x7F;
die "killall exited with error ".($? >> 8)."\n" if $? >> 8;
En utilisant les commentaires utiles des autres sur cette question, réécrire la réponse pour qu'elle soit plus adaptée à la question à portée de main.
Il vérifie si le processus est en cours d'exécution, vous donnant la possibilité de faire plus de tuer (sortie d'impression à la console, tuer ses sous-processus, si nécessaire, etc.), court killall
que si le programme est en cours d'exécution, puis commence jmp
.
#!/usr/bin/perl
use warnings;
use strict;
# Read all script-name processes
open PROS, "ps -ef| grep jmp |";
# Iterate the processes
while ($line = <PROS>){
# If we match the process, kill all instances
unless ($line =~ m/grep/){
system 'killall jmp';
last;
}
}
# Finished with the processes
close PROS;
# Start jmp
exec 'nohup /path/to/jmp &';
Si vous utilisez Windows, vous aurez envie de regarder dans taskkill
au lieu de killall
.
Je reçois une erreur: 'ps' n'est pas reconnu comme une commande interne ou externe, un fichier exécutable ou un fichier séquentiel. – Vera
@Vera Donc, vous utilisez Windows? Aurait été utile de mettre dans la question. –
- 1. Vérifier si un processus spécifique est actif et le tuer
- 2. Inno installation, vérifier le processus pendant un .exe est en cours d'exécution et le tuer
- 3. Tuer ou terminer le processus en cours
- 4. Vérifiez si un processus est en cours toutes les 20 secondes et le tuer sur OSX
- 5. Comment vérifier si le processus est en cours
- 6. constamment vérifier si le processus est en cours d'exécution C#
- 7. linux kernel vérifier si le processus est toujours en cours
- 8. Comment vérifier si le processus est toujours en cours d'exécution?
- 9. Vérifier si le processus du démon est en cours d'exécution
- 10. Vérifier si le service externe est en cours d'exécution
- 11. Script shell pour vérifier si le processus est déjà en cours d'exécution et quitter si oui
- 12. Ruby EventMachine, tuer les processus en cours?
- 13. script pour exécuter le programme en boucle et tuer le processus en cours si la limite de temps est dépassée
- 14. comment trouver le processus en cours et tuer le processus dans QT?
- 15. .NET définir variable à processus en cours (si le processus est en cours d'exécution)
- 16. Vérifiez si le processus est en cours depuis l'application Cocoa
- 17. C++ Vérifier si un processus spécifique est en cours d'exécution
- 18. Comment m'assurer que le processus est toujours en cours pour que je puisse le tuer?
- 19. Comment tuer tous les autres processus python en cours d'exécution sans tuer le processus parent
- 20. Comment tuer le script Python et ses enfants si une autre instance est déjà en cours
- 21. vérifier si sous-processus est en cours d'exécution via cmd
- 22. Impossible de tuer le processus en cours dans Android
- 23. Vérifier le processus, sinon exécuter exécuter le processus, tuer le processus toutes les X secondes
- 24. Vérifiez si le processus est en cours d'exécution
- 25. Vérifiez si le processus est en cours d'exécution (en utilisant le nom du processus)
- 26. Java vérifier si le processus est en cours d'exécution, sinon exécuter le fichier?
- 27. Comment trouver et tuer des processus en cours depuis Java?
- 28. Vérifiez si le processus est en cours d'exécution - Windows
- 29. vérifier si le processus est en cours VBS, lorsqu'il est fermé se déconnecter
- 30. Bash: Démarrer et tuer le processus enfant
voir cela pourrait aider u http://stackoverflow.com/questions/11273636/check-if-program-is-running -and-run-it-if-not-in-perl – Developer
$ existe = tuer 0, 1525; print "Le processus s'exécute \ n" if ($ existe); de ce que vous pouvez également vérifier – Developer
qu'est-ce que cela signifie 0,1525? comment cela fait-il référence au processus spécifique? – Vera