
Ich möchte einen Prozess mit einem netten Wert von -20 starten. Dazu muss ich einen Befehl wie verwenden
sudo nice -n -20 matlab
Allerdings wird Matlab dadurch auch als Root gestartet. Gibt es eine Möglichkeit, Matlab als Nicht-Root zu starten?
Mein aktueller Ansatz ist
sudo nice -n -20 sudo -u myusername matlab
was für mich wie ein Hack aussieht. Gibt es einen direkten Ansatz, um dies zu tun?
Antwort1
Ich würde es normal starten und anschließend "renice" verwenden...
Ich konnte jedoch schnell einen Hack mit „su“ erstellen, der funktioniert:
sudo nice -n -20 su -c command_to_run user_to_run_as
Wenn Sie sudo kein Kennwort geben müssen – vielleicht weil Sie es gerade bereits eingegeben haben – können Sie ein hinzufügen, &
um das Ganze in den Hintergrund zu stellen.
Da Sie mit dem sudo-Befehl bereits Root werden, su
werden Sie nicht nach einem Passwort gefragt. Ich konnte ein X-Programm von einem Terminalemulator unter X aus starten. Wenn Sie das X-Programm als ein anderer Benutzer als der Benutzer ausführen möchten, dem die X-Sitzung gehört, müssen Sie X wahrscheinlich ausdrücklich anweisen, dies zuzulassen (für X-Clients dieses Benutzers öffnen).
Antwort2
Ich habe festgestellt, dass dies durch Ändern der Datei möglich ist /etc/security/limits.conf
(zumindest bei einigen Linux-Distributionen). In meinem Fall habe ich einfach hinzugefügt:
#<domain> <type> <item> <value>
my_user - nice -20`
dann können Sie ausführen
nice -n -20 matlab
Melden Sie sich ab und wieder an, nachdem Sie die Änderungen gespeichert haben /etc/security/limits.conf
.
DasAntworterklärt warum.
Antwort3
Einen Schritt weiter @Jordan: Hier ist die elegante Lösung gegen sudo nice -n -xx su <username> -c matlab
Hack.
Hinweis: Verwenden Sie username=
sid
, Matlab-Metadaten dir=/var/lib/matlab
, nice=-10
– ändern Sie es nach Belieben
- Erstellen Sie ein Matlab-Metadatenverzeichnis
sudo mkdir /var/lib/matlab
- Fügen Sie den angegebenen Benutzer hinzu, um Matlab zu starten und die entsprechende Berechtigung zu erhalten.
sudo useradd -d /var/lib/matlab sid sudo chown sid:sid /var/lib/matlab
- Benutzer Passwort festlegen
sudo passwd sid
- Folgendes anfügen an
/etc/security/limits.conf
sid - priority -10
- Einrichten und Kopieren des SSH-Schlüssels zum Automatisieren der Anmeldung (optional)
ssh-keygen -t rsa #following key passwd misc ssh-copy-id sid@localhost #using sid's passwd
- Matlab Shell Wrapper erstellen (Fixstiller Fehler)
sudo -i cat <<EOF >>/usr/local/bin/wmatlab #!/bin/bash -- # A wrapper to launch matlab /usr/local/MATLAB/<version>/bin/matlab -desktop EOF chmod +x /usr/local/bin/wmatlab
- Passen Sie die Login-Shell von "sid" an
sudo usermod -s /usr/local/bin/wmatlab sid
- Starten Sie Matlab
ssh
mitXforward
ssh -X sid@localhost
Antwort4
Wie @jordanm sagte, lassen Sie sudo fallen. Sie können Ihren eigenen Prozessen eine niedrigere Priorität geben:
nice -20 matlab
NEIN sudo
.