Как запустить процесс со значением nice -20 и не предоставить ему привилегии root?

Как запустить процесс со значением nice -20 и не предоставить ему привилегии root?

Я хотел бы начать процесс с хорошим значением -20. Для этого мне нужно использовать команду типа

sudo nice -n -20 matlab

Однако это запускает Matlab как root тоже. Есть ли способ сделать Matlab не root?

Мой текущий подход таков:

sudo nice -n -20 sudo -u myusername matlab

что для меня выглядит как хак. Есть ли прямой подход, чтобы сделать это?

решение1

Я бы запустил его как обычно, а потом использовал бы «renice»...

Однако мне удалось сделать быстрый хак с помощью «su», который работает:

sudo nice -n -20 su -c command_to_run user_to_run_as

Если вам не нужно указывать пароль для sudo (возможно, потому что вы уже его указали), вы можете добавить , &чтобы перевести все это в фоновый режим.

Поскольку вы уже стали root с помощью команды sudo, suпароль спрашиваться не будет. Мне удалось запустить X-программу из эмулятора терминала под X. Если вы хотите запустить X-программу как другой пользователь, а не как пользователь, владеющий X-сессией, вам, вероятно, придется явно указать X разрешить это (открыть для X-клиентов от этого пользователя).

решение2

Я обнаружил, что это можно сделать, изменив файл /etc/security/limits.conf(по крайней мере, в некоторых дистрибутивах Linux). В моем случае я просто добавил:

#<domain>    <type>  <item>  <value>
my_user        -     nice       -20`

затем вы можете выполнить

nice -n -20 matlab

Выйдите из системы и войдите снова после сохранения изменений в /etc/security/limits.conf.

Этототвечатьобъясняет почему.

решение3

Еще один шаг вперед @Jordan: вот элегантное решение против sudo nice -n -xx su <username> -c matlabвзлома.

Примечание: использование username= sid, matlab meta-data dir= /var/lib/matlab, nice= -10-- измените по своему желанию

  1. Создать каталог метаданных Matlab
    sudo mkdir /var/lib/matlab
    
  2. Добавить указанного пользователя для запуска Matlab и предоставить необходимые разрешения
    sudo useradd -d /var/lib/matlab sid
    sudo chown sid:sid /var/lib/matlab
    
  3. Установить пароль пользователя
    sudo passwd sid
    
  4. Добавить следующее к/etc/security/limits.conf
    sid - priority -10
    
  5. Настройте и скопируйте ssh-ключ для автоматического входа (необязательно)
    ssh-keygen -t rsa #following key passwd misc   
    ssh-copy-id sid@localhost #using sid's passwd
    
  6. Создать оболочку Matlab (исправить)ошибка молчаливого сбоя)
    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. Настройте оболочку входа "sid"
    sudo usermod -s /usr/local/bin/wmatlab sid
    
  8. Запустите Matlab sshс помощьюXforward
    ssh -X sid@localhost
    

решение4

Как сказал @jordanm, отбросьте sudo. Вы можете настроить собственные процессы, чтобы задать им более низкий приоритет:

nice -20 matlab

Нет sudo.

Связанный контент