
Gostaria de iniciar um processo com um bom valor de -20. Isso exige que eu use um comando como
sudo nice -n -20 matlab
No entanto, isso também inicia o matlab como root. Existe uma maneira de ter o matlab como não-root?
Minha abordagem atual é
sudo nice -n -20 sudo -u myusername matlab
o que para mim parece um hack. Existe uma abordagem direta para fazer isso?
Responder1
Eu começaria normalmente e usaria "renice" depois...
Porém consegui fazer um hack rápido junto com "su" que funciona:
sudo nice -n -20 su -c command_to_run user_to_run_as
Se você não precisa fornecer uma senha ao sudo - talvez porque você já a tenha fornecido - você pode adicionar um &
para colocar tudo em segundo plano.
Como você já se tornou root com o comando sudo, su
não será solicitada uma senha. Consegui iniciar um programa X a partir de um emulador de terminal em X. Se você deseja executar o programa X como outro usuário que não seja o usuário proprietário da sessão X, provavelmente precisará informar explicitamente ao X para permitir isso (aberto para clientes X desse usuário).
Responder2
Descobri que isso poderia ser feito modificando o arquivo /etc/security/limits.conf
(pelo menos em algumas distros Linux). No meu caso, simplesmente adicionei:
#<domain> <type> <item> <value>
my_user - nice -20`
então você pode executar
nice -n -20 matlab
Saia e entre novamente depois de salvar as alterações em /etc/security/limits.conf
.
Esseresponderexplica o porquê.
Responder3
Um passo adiante @Jordan: Aqui está a solução elegante contra sudo nice -n -xx su <username> -c matlab
hack.
Nota: Usando username=
sid
, matlab meta-data dir=/var/lib/matlab
, nice=-10
-- mude à sua vontade
- Criar diretório de metadados matlab
sudo mkdir /var/lib/matlab
- Adicione o usuário especificado para iniciar o matlab e permissão correta
sudo useradd -d /var/lib/matlab sid sudo chown sid:sid /var/lib/matlab
- Definir senha do usuário
sudo passwd sid
- Anexe o seguinte a
/etc/security/limits.conf
sid - priority -10
- Configure e copie a chave ssh para automatizar o login (opcional)
ssh-keygen -t rsa #following key passwd misc ssh-copy-id sid@localhost #using sid's passwd
- Criar wrapper de shell matlab (corrigirerro de falha silenciosa)
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
- Ajuste o shell de login do “sid”
sudo usermod -s /usr/local/bin/wmatlab sid
- Inicie o matlab usando
ssh
comXforward
ssh -X sid@localhost
Responder4
Como @jordanm disse, solte o sudo. Você pode aprimorar seus próprios processos para dar-lhes uma prioridade mais baixa:
nice -20 matlab
Não sudo
.