Existe-t-il un moyen de configurer un processus de service Windows (par exemple squidNT, SQL Server, etc.) pour démarrer automatiquement avec une faible priorité sans modifier manuellement la priorité du processus via le Gestionnaire des tâches?
17
Réponses:
Le Gestionnaire de contrôle des services, qui gère le démarrage / l'arrêt des services, ne dispose d'aucun mécanisme (dans aucune version de Windows jusqu'à présent) pour spécifier la priorité des processus qu'il démarre.
Étant donné que vous pouvez modifier la priorité sur un processus déjà en cours d'exécution, votre meilleur pari pourrait être d'utiliser un outil pour le faire.
Je ne connais pas d'outil de ligne de commande Microsoft pour modifier la priorité du processus, mais la ligne de commande "PV" aussi, disponible sur http://www.teamcti.com/pview/prcview.htm a une fonction pour définir la priorité .
Cela donnerait à "process-name.exe" la priorité "Inférieur à la normale".
Si vous pouvez vivre avec le processus commençant à la priorité "Normal" jusqu'à ce que vous soyez prêt à le modifier, vous pouvez le faire avec un script exécuté en tant que "Tâche planifiée" pour se déclencher de temps en temps (dans le cas où le service obtient rebondi).
C'est un hack rapide et sale, mais je dois beaucoup de ma fortune dans la vie à des hacks rapides et sales qui font le travail!
la source
Les réponses ci-dessus n'ont pas fonctionné pour moi. J'ai fini de créer le script PowerShell suivant:
ChangePriority.ps1
Et puis j'ai créé une tâche planifiée qui l'appelle toutes les 5 minutes. À partir de l' invite de l' administrateur ou du script batch:
Vous avez tenté d'utiliser
wmic
comme indiqué ici pour que la tâche planifiée ne dépende pas du fichier a échoué. Similaire à l'aide du script powershell: je ne pouvais pas simplement créer une seule commande qui créait simplement une tâche avec le script en ligne. Apprécié si vous avez réussi à le faire et à ajouter une autre réponse.Les valeurs de priorité dans le script powershell peuvent être trouvées ici [1].
[1] https://docs.microsoft.com/en-us/windows/desktop/cimwin32prov/setpriority-method-in-class-win32-process
la source
Les éléments suivants pourraient également fonctionner. Modifiez la clé de registre ImagePath et utilisez la commande de démarrage de cmd.exe:
la source
ImagePath
doit respecter l'interface pour les services Windows, etstart
ne l'implémente pas et ne le routera pas vers l'exécutable en cours de lancement.J'ai dû faire ça pour que Teamcity prenne moins de CPU. Et, comme teamcity est la seule application java que nous utilisons, cette solution fonctionne parfaitement.
Créez un fichier de commandes, qui démarrera votre service et diminuera la priorité, comme:
net start tcbuildagent
net start teamcity
wmic process where name = "java.exe" CALL setpriority "below normal"
J'ai configuré le déclencheur TaskScheduler avec un délai d'une minute pour ne pas interférer avec le démarrage d'autres services.
ps vous pouvez également définir tous les services de démarrage comme manuels, et utiliser ce fichier batch pour les démarrer tous dans l'ordre que vous souhaitez! SQL, IIS, etc.
la source
Vous pouvez utiliser le script powershell suivant, le placer dans une tâche planifiée qui s'exécute au démarrage.
la source