Je voudrais démarrer un processus avec une belle valeur de -20. Cela nécessite que j'utilise une commande comme - sudo nice -n -20 matlab
. Cependant, cela démarre aussi matlab en tant que root. Existe-t-il un moyen d'avoir matlab en tant que non root?
Mon approche actuelle est - sudo nice -n -20 sudo -u myusername matlab
- qui, pour moi, ressemble à un hack. Existe-t-il une approche directe pour ce faire?
sudo
.root
n'est pas nécessaire pour optimiser votre propre processus.nice -n -20 matlab
et c'est la sortie nice: impossible de définir la gentillesse: autorisation refusée. Matlab démarre et la bonne valeur est 0.system('sudo renice ...')
dans MATLAB, mais matlab démarre 2 processus - MATLAB et matlab_helper. Je devrais peut-être le faire sur les deux. en outre, je souhaite également que tous mes processus MATLAB soient hautement prioritaires - lorsque je démarrematlabpool local
pour un traitement parallèle. @HaukeLaging - Je commence à penser que vous avez raison.Réponses:
Je le démarrerais normalement et utiliserais ensuite "renice" ...
Cependant, j'ai pu faire un hack rapide avec "su" qui fonctionne:
(Si vous n'avez pas besoin de donner un mot de passe à sudo - peut-être parce que vous venez de le donner - vous pouvez ajouter un "&" pour mettre le tout en arrière-plan.)
Puisque vous êtes déjà devenu root avec la commande sudo, su ne vous demandera pas de mot de passe. J'ai pu démarrer un programme X à partir d'un émulateur de terminal sous X. Si vous souhaitez exécuter le programme X en tant qu'un autre utilisateur que l'utilisateur propriétaire de la session X, vous devrez probablement dire explicitement à X de l'autoriser. (ouvert pour les clients X de cet utilisateur).
la source
sudo nice -n 19 su -c $(echo "test")
ne donne aucune sortie.sudo nice -n 19 su -c "echo 'test'"' When you want to run a function in
su -c do`, voir stackoverflow.com/a/3727572/2522849Un pas de plus @ Jordan, voici la solution élégante contre le
sudo nice -n -xx su <username> -c matlab
piratageCréer un répertoire de métadonnées matlab (PERPARE)
sudo mkdir /var/lib/matlab
Ajouter un utilisateur spécifié pour lancer matlab et persimisson droit
Définir le mot de passe utilisateur (Sid)
sudo passwd sid
Ajoutez le suivant à /etc/security/limits.conf
sid - priority -10
Configurer et copier la clé ssh pour automatiser la connexion (FACULTATIF)
Le shell de connexion d'Ajust Sid
sudo usermod -s /usr/local/bin/wmatlab sid
démarrer matlab en utilisant ssh avec Xforward
ssh -X sid@localhost
la source
J'ai trouvé que cela pouvait être fait en modifiant le fichier
/etc/security/limits.conf
(au moins sur certaines distributions Linux). Dans mon cas, j'ai simplement ajouté#<domain> <type> <item> <value> my_user - nice -20
alors vous pouvez exécuter
nice -n -20 matlab
la source
Comme l'a dit @jordanm drop sudo. Vous pouvez améliorer vos propres processus pour leur donner une priorité inférieure:
Non
sudo
.la source
system('ps a -o pid -o comm -o nice')
m'a compris13580 MATLAB 19
- MATLAB fonctionne avec la priorité la plus basse au lieu de la plus élevée. Ma question était de savoir comment augmenter la priorité et non la réduire.sudo
, c'est la bonne commande -nice -n -20 matlab
et c'est la sortienice: cannot set niceness: Permission denied
. Matlab démarre et la bonne valeur est 0.pam vous permet de fixer des limites sur nice par groupe son fichier de configuration:
Et assurez-vous que le groupe le processus s'exécute dans grnice.
la source
Ajoutez l'utilisateur à sudoers (en fait, un nouveau fichier dans /etc/sudoers.d, mais c'est la même prémisse):
Ensuite, en tant que "niceuser":
et il fait ce dont j'ai besoin (c'est-à-dire que mon utilisateur peut désormais augmenter la priorité de {commande ...}). Il prend en charge plusieurs utilisateurs, etc. - utilisez
man 5 sudoers
pour plus de détails.la source
Une autre option possible (simple, mais moins sécurisée) consiste à activer l'autorisation setuid / setgid pour l'
nice
exécutable.setuid attribue à tout utilisateur qui peut exécuter le fichier l'UID effectif du propriétaire du fichier (dans ce cas
root
) lors de l'exécution du fichier, est donc équivalent à l'exécution de cet utilisateur. setguid fait de même pour un GID efficace.Ou vous pouvez le faire en toute sécurité:
Attention, vous devez vous reconnecter à votre compte pour que le nouveau groupe prenne effet.
la source