Me gustaría comenzar un proceso con un buen valor de -20. Esto requiere que use un comando como - sudo nice -n -20 matlab
. Sin embargo, esto también inicia matlab como root. ¿Hay alguna manera de tener matlab como no root?
Mi enfoque actual es ... sudo nice -n -20 sudo -u myusername matlab
, que, para mí, parece un truco. ¿Hay un enfoque directo para hacer esto?
sudo
.root
No es necesario para completar su propio proceso.nice -n -20 matlab
y esta es la salida agradable: no se puede establecer la bondad: permiso denegado. Matlab se inicia y el buen valor es 0.system('sudo renice ...')
MATLAB, pero matlab inicia 2 procesos: MATLAB y matlab_helper. Puede que tenga que hacerlo en ambos. Además, también quiero que todos mis procesos de MATLAB sean de alta prioridad, cuando empiezomatlabpool local
a procesar en paralelo. @HaukeLaging: estoy empezando a pensar que tienes razón.Respuestas:
Lo comenzaría normalmente y luego usaría "renice" ...
Sin embargo, pude hacer un truco rápido junto con "su" que funciona:
(Si no tiene que darle una contraseña a sudo, tal vez porque ya la acaba de dar, puede agregar un "&" para dejar todo en segundo plano).
Como ya te has convertido en root con el comando sudo, su no te pedirá una contraseña. Pude iniciar un programa X desde un emulador de terminal bajo X. Si desea ejecutar el programa X como otro usuario que no sea el usuario propietario de la sesión X, probablemente deba decirle explícitamente a X que lo permita (abierto para clientes X de ese usuario).
fuente
sudo nice -n 19 su -c $(echo "test")
no da salida.sudo nice -n 19 su -c "echo 'test'"' When you want to run a function in
su -c do`, consulta stackoverflow.com/a/3727572/2522849Un paso más allá @ Jordania, aquí está la solución elegante contra el
sudo nice -n -xx su <username> -c matlab
hackCrear directorio de metadatos de matlab (PERPARE)
sudo mkdir /var/lib/matlab
Agregar usuario especificado para iniciar matlab y persimisson derecho
Establecer contraseña de usuario (sid)
sudo passwd sid
Agregue lo siguiente a /etc/security/limits.conf
sid - priority -10
Configurar y copiar ssh-key para automatizar el inicio de sesión (OPCIONAL)
Shell de inicio de sesión de Ajust sid
sudo usermod -s /usr/local/bin/wmatlab sid
iniciar matlab usando ssh con Xforward
ssh -X sid@localhost
fuente
He descubierto que esto podría hacerse modificando el archivo
/etc/security/limits.conf
(al menos en algunas distribuciones de Linux). En mi caso, simplemente agregué#<domain> <type> <item> <value> my_user - nice -20
entonces puedes ejecutar
nice -n -20 matlab
fuente
Como @jordanm dijo soltar sudo. Puede ajustar sus propios procesos para darles una prioridad más baja:
No se
sudo
.fuente
system('ps a -o pid -o comm -o nice')
me tiene13580 MATLAB 19
- MATLAB se ejecuta con la prioridad más baja en lugar de la más alta. Mi pregunta era cómo aumentar la prioridad y no reducirla.sudo
, este es el comando correcto,nice -n -20 matlab
y este es el resultadonice: cannot set niceness: Permission denied
. Matlab se inicia y el buen valor es 0.pam le permite establecer límites en nice por grupo su archivo de configuración:
Y asegúrese de que el grupo el proceso se ejecute de manera grnice.
fuente
Agregue el usuario a sudoers (en realidad, un nuevo archivo en /etc/sudoers.d, pero es la misma premisa):
Entonces, como el "niceuser":
y hace lo que necesito (es decir, mi usuario ahora puede aumentar la prioridad de {comando ...}). Es compatible con múltiples usuarios, etc. - se usa
man 5 sudoers
para más detalles.fuente
Otra opción posible (simple, pero menos segura) es habilitar el permiso setuid / setgid para el
nice
ejecutable.setuid asigna a cualquier usuario que pueda ejecutar el archivo el UID efectivo del propietario del archivo (en este caso
root
) al ejecutar el archivo, por lo tanto, es equivalente a ejecutarse como ese usuario. setguid hace lo mismo para un GID efectivo.O puede hacerlo de manera más segura:
Tenga en cuenta que debe volver a iniciar sesión en su cuenta para que el nuevo grupo surta efecto.
fuente