Wie starte ich einen Prozess mit einem Nice-Wert von -20, ohne ihm Root-Rechte zu erteilen?

Wie starte ich einen Prozess mit einem Nice-Wert von -20, ohne ihm Root-Rechte zu erteilen?

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, suwerden 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 matlabHack.

Hinweis: Verwenden Sie username= sid, Matlab-Metadaten dir= /var/lib/matlab, nice= -10– ändern Sie es nach Belieben

  1. Erstellen Sie ein Matlab-Metadatenverzeichnis
    sudo mkdir /var/lib/matlab
    
  2. 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
    
  3. Benutzer Passwort festlegen
    sudo passwd sid
    
  4. Folgendes anfügen an/etc/security/limits.conf
    sid - priority -10
    
  5. 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
    
  6. Matlab Shell Wrapper erstellen (Fixstiller Fehler)
    sudo -i
    cat &lt;&lt;EOF &gt;&gt;/usr/local/bin/wmatlab
    #!/bin/bash --
    # A wrapper to launch matlab
    /usr/local/MATLAB/&lt;version&gt;/bin/matlab -desktop
    EOF
    chmod +x /usr/local/bin/wmatlab
    
  7. Passen Sie die Login-Shell von "sid" an
    sudo usermod -s /usr/local/bin/wmatlab sid
    
  8. Starten Sie Matlab sshmitXforward
    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.

verwandte Informationen