Ich möchte einen Prozess mit einem schönen Wert von -20 starten. Dazu muss ich einen Befehl wie - verwenden sudo nice -n -20 matlab
. Dies startet matlab jedoch auch als root. Gibt es eine Möglichkeit, Matlab als Nicht-Root zu haben?
Mein aktueller Ansatz ist - sudo nice -n -20 sudo -u myusername matlab
- was für mich wie ein Hack aussieht. Gibt es dafür einen direkten Ansatz?
sudo
.root
ist nicht nötig um deinen eigenen Prozess zu pflegen.nice -n -20 matlab
und dies ist die Ausgabe nice: kann die Nizza nicht einstellen: Erlaubnis verweigert. Matlab startet und der nette Wert ist 0.system('sudo renice ...')
in MATLAB laufen , aber matlab startet 2 Prozesse - MATLAB und matlab_helper. Ich könnte es auf beiden tun müssen. außerdem möchte ich, dass alle meine MATLAB-Prozesse eine hohe Priorität haben - wenn ichmatlabpool local
zur Parallelverarbeitung beginne . @HaukeLaging - Ich fange an zu denken, dass Sie Recht haben.Antworten:
Ich würde es normal starten und danach "renice" verwenden ...
Allerdings konnte ich zusammen mit "su" einen schnellen Hack machen, der funktioniert:
(Wenn Sie sudo kein Passwort geben müssen - vielleicht weil Sie es bereits vergeben haben - können Sie ein "&" hinzufügen, um das Ganze in den Hintergrund zu stellen.)
Da Sie bereits mit dem Befehl sudo als root angemeldet sind, werden Sie von su nicht nach einem Passwort gefragt. Ich konnte ein X-Programm von einem Terminal-Emulator unter X starten. Wenn Sie das X-Programm als ein anderer Benutzer als der Benutzer ausführen möchten, der die X-Sitzung besitzt, müssen Sie X wahrscheinlich explizit anweisen, dies zuzulassen (Offen für X-Clients von diesem Benutzer).
quelle
sudo nice -n 19 su -c $(echo "test")
gibt es keine Ausgabe.sudo nice -n 19 su -c "echo 'test'"' When you want to run a function in
su -c do machen, siehe stackoverflow.com/a/3727572/2522849Einen Schritt weiter @Jordan, hier ist die elegante Lösung gegen
sudo nice -n -xx su <username> -c matlab
HackMatlab-Metadatenverzeichnis erstellen (PERPARE)
sudo mkdir /var/lib/matlab
Fügen Sie einen bestimmten Benutzer hinzu, um matlab & right persimisson zu starten
Legen Sie das Benutzer-Passwort (Sid-Passwort) fest
sudo passwd sid
Fügen Sie Folgendes an /etc/security/limits.conf an
sid - priority -10
Einrichten und Kopieren des SSH-Schlüssels zur Automatisierung der Anmeldung (OPTIONAL)
Ajust Sids Login-Shell
sudo usermod -s /usr/local/bin/wmatlab sid
starte matlab mit ssh mit Xforward
ssh -X sid@localhost
quelle
Ich habe festgestellt, dass dies durch Modifizieren der Datei
/etc/security/limits.conf
(zumindest in einigen Linux-Distributionen) möglich ist. In meinem Fall habe ich einfach hinzugefügt#<domain> <type> <item> <value> my_user - nice -20
dann kannst du ausführen
nice -n -20 matlab
quelle
Wie @jordanm sagte Drop Sudo. Sie können Ihre eigenen Prozesse optimieren, um ihnen eine niedrigere Priorität zuzuweisen:
Nein
sudo
.quelle
system('ps a -o pid -o comm -o nice')
hol mich13580 MATLAB 19
- MATLAB läuft mit der niedrigsten Priorität anstelle der höchsten. Meine Frage war, wie man die Priorität erhöht und nicht verringert.sudo
ist dies der richtige Befehl -nice -n -20 matlab
und dies ist die Ausgabenice: cannot set niceness: Permission denied
. Matlab startet und der nette Wert ist 0.Mit pam können Sie die Konfigurationsdatei von nice pro Gruppe begrenzen:
Und stellen Sie sicher, dass die Gruppe den Prozess in Grnice ausführt.
quelle
Fügen Sie den Benutzer zu sudoers hinzu (tatsächlich eine neue Datei in /etc/sudoers.d, aber dieselbe Voraussetzung):
Dann als "niceuser":
und es tut, was ich brauche (das heißt, mein Benutzer kann jetzt die Priorität von {command ...} erhöhen). Es unterstützt mehrere Benutzer usw. -
man 5 sudoers
für Details verwenden.quelle
Eine andere mögliche Option (einfach, aber weniger sicher) besteht darin, die Berechtigung setuid / setgid für die
nice
ausführbare Datei zu aktivieren .setuid weist jedem Benutzer, der die Datei ausführen kann, die effektive UID des Dateieigners zu (in diesem Fall
root
), wenn die Datei ausgeführt wird. Dies entspricht der Ausführung dieses Benutzers. setguid macht dasselbe für eine effektive GID.Oder Sie können es sicherer machen:
Beachten Sie, dass Sie sich erneut anmelden müssen, damit die neue Gruppe wirksam wird.
quelle