Gostaria de iniciar um processo com um bom valor de -20. Isso requer 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 raiz?
Minha abordagem atual é - sudo nice -n -20 sudo -u myusername matlab
- que, para mim, parece um hack. Existe uma abordagem direta para fazer isso?
sudo
.root
não é necessário para agradar seu próprio processo.nice -n -20 matlab
e este é o resultado legal: não é possível definir a gentileza: permissão negada. O Matlab inicia e o bom valor é 0.system('sudo renice ...')
no MATLAB, mas o matlab inicia 2 processos - MATLAB e matlab_helper. Eu posso ter que fazer isso em ambos. além disso, também quero que todos os meus processos MATLAB sejam de alta prioridade - quando inicio omatlabpool local
processamento paralelo. @HaukeLaging - Estou começando a pensar que você está certo.Respostas:
Eu começaria normalmente e usaria "renice" depois ...
No entanto, eu fui capaz de fazer um hack rápido junto com "su", que funciona:
(Se você não precisar 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, o su não solicitará uma senha. Consegui iniciar um programa X a partir de um emulador de terminal no X. Se você deseja executar o programa X como outro usuário que não seja o proprietário da sessão X, provavelmente precisará informar explicitamente o X para permitir (aberto para clientes X desse usuário).
fonte
sudo nice -n 19 su -c $(echo "test")
não dá saída.sudo nice -n 19 su -c "echo 'test'"' When you want to run a function in
su -c do`, consulte stackoverflow.com/a/3727572/2522849Um passo adiante, Jordan, aqui está a solução elegante contra o
sudo nice -n -xx su <username> -c matlab
hackCriar dir de metadados do matlab (PERPARE)
sudo mkdir /var/lib/matlab
Adicione o usuário especificado para iniciar o matlab e o persimisson direito
Definir senha do usuário (sid)
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)
Shell de login do Ajust sid
sudo usermod -s /usr/local/bin/wmatlab sid
inicie o matlab usando ssh com o Xforward
ssh -X sid@localhost
fonte
Eu descobri que isso poderia ser feito modificando o arquivo
/etc/security/limits.conf
(pelo menos em algumas distros do linux). No meu caso, eu simplesmente adicionei#<domain> <type> <item> <value> my_user - nice -20
então você pode executar
nice -n -20 matlab
fonte
Como @jordanm disse drop sudo. Você pode agregar seus próprios processos para dar a eles uma prioridade mais baixa:
Não
sudo
.fonte
system('ps a -o pid -o comm -o nice')
entendi13580 MATLAB 19
- o MATLAB está sendo executado com a prioridade mais baixa em vez da mais alta. Minha pergunta era sobre como aumentar a prioridade e não reduzi-la.sudo
, este é o comando certo -nice -n -20 matlab
e esta é a saídanice: cannot set niceness: Permission denied
. O Matlab inicia e o bom valor é 0.O pam permite definir limites em nice por grupo seu arquivo de configuração:
E certifique-se de que o grupo o processo seja executado em grnice.
fonte
Adicione o usuário aos sudoers (na verdade, um novo arquivo em /etc/sudoers.d, mas é a mesma premissa):
Então, como o "niceuser":
e faz o que eu preciso (ou seja, meu usuário agora pode aumentar a prioridade de {command ...}). Ele suporta vários usuários, etc. - use
man 5 sudoers
para obter detalhes.fonte
Outra opção possível (simples, mas menos segura) é ativar a permissão setuid / setgid para
nice
executável.O setuid atribui a qualquer usuário que possa executar o arquivo o UID efetivo do proprietário do arquivo (neste caso
root
) ao executar o arquivo; portanto, é equivalente à execução como esse usuário. setguid faz o mesmo para GID efetivo.Ou você pode fazê-lo com mais segurança:
Lembre-se de que você precisa fazer login novamente na sua conta para que o novo grupo entre em vigor.
fonte