Chciałbym rozpocząć proces z niezłą wartością -20. Wymaga to użycia polecenia takiego jak - sudo nice -n -20 matlab
. Jednak to zaczyna matlab również jako root. Czy istnieje sposób, aby Matlab nie był rootem?
Moje obecne podejście to - sudo nice -n -20 sudo -u myusername matlab
- które dla mnie wygląda na włamanie. Czy istnieje bezpośrednie podejście do tego?
sudo
.root
nie jest potrzebny do udoskonalenia własnego procesu.nice -n -20 matlab
i to jest dobre wyjście: nie można ustawić nicości: Odmowa zezwolenia. Matlab uruchamia się, a ładna wartość to 0.system('sudo renice ...')
w MATLAB, ale matlab uruchamia 2 procesy - MATLAB i matlab_helper. Być może będę musiał to zrobić na obu. ponadto chcę, aby wszystkie moje procesy MATLAB miały wysoki priorytet - kiedy rozpoczynammatlabpool local
przetwarzanie równoległe. @HaukeLaging - Zaczynam myśleć, że masz rację.Odpowiedzi:
Zaczynam normalnie, a potem używam „renice” ...
Byłem jednak w stanie zrobić szybki hack razem z „su”, który działa:
(Jeśli nie musisz podawać sudo hasła - być może dlatego, że już je nadałeś - możesz dodać znak „&”, aby umieścić całość w tle.)
Ponieważ już jesteś rootem za pomocą polecenia sudo, su nie poprosi cię o hasło. Byłem w stanie uruchomić program X z emulatora terminala pod X. Jeśli chcesz uruchomić program X jako inny użytkownik niż użytkownik będący właścicielem sesji X, prawdopodobnie będziesz musiał wyraźnie powiedzieć X, aby zezwolił na to (otwarte dla klientów X od tego użytkownika).
źródło
sudo nice -n 19 su -c $(echo "test")
daje danych wyjściowych.sudo nice -n 19 su -c "echo 'test'"' When you want to run a function in
su -c do`, patrz stackoverflow.com/a/3727572/2522849Krok dalej @Jordan, oto eleganckie rozwiązanie przeciwko
sudo nice -n -xx su <username> -c matlab
hakowaniuUtwórz katalog metadanych Matlab (PERPARE)
sudo mkdir /var/lib/matlab
Dodaj określonego użytkownika, aby uruchomić matlab i właściwą persimisson
Ustaw hasło użytkownika (sid)
sudo passwd sid
Dołącz następujące do /etc/security/limits.conf
sid - priority -10
Skonfiguruj i skopiuj klucz SSH, aby zautomatyzować logowanie (OPCJONALNIE)
Powłoka logowania Aid Sid
sudo usermod -s /usr/local/bin/wmatlab sid
uruchom matlab używając ssh z Xforward
ssh -X sid@localhost
źródło
Odkryłem, że można to zrobić, modyfikując plik
/etc/security/limits.conf
(przynajmniej w niektórych dystrybucjach Linuksa). W moim przypadku po prostu dodałem#<domain> <type> <item> <value> my_user - nice -20
wtedy możesz wykonać
nice -n -20 matlab
źródło
Jak powiedział @jordanm, upuść sudo. Możesz ładnie przetwarzać własne procesy, aby nadać im niższy priorytet:
Nie
sudo
.źródło
system('ps a -o pid -o comm -o nice')
masz mnie13580 MATLAB 19
- MATLAB działa z najniższym priorytetem zamiast z najwyższym. Moje pytanie dotyczyło sposobu zwiększenia priorytetu, a nie jego zmniejszenia.sudo
jest to właściwe polecenie -nice -n -20 matlab
i to jest wyniknice: cannot set niceness: Permission denied
. Matlab uruchamia się, a ładna wartość to 0.pam pozwala ustawić limity na plik konfiguracyjny nice dla grupy:
I upewnij się, że grupa proces przebiega w grnice.
źródło
Dodaj użytkownika do sudoers (tak naprawdę nowy plik w /etc/sudoers.d, ale to ta sama przesłanka):
Następnie jako „miły użytkownik”:
i robi to, czego potrzebuję (to znaczy, że mój użytkownik może teraz zwiększyć priorytet {polecenie ...}). Obsługuje wielu użytkowników itp. - użyj w
man 5 sudoers
celu uzyskania szczegółowych informacji.źródło
Inną możliwą opcją (prostą, ale mniej bezpieczną) jest włączenie uprawnień setuid / setgid dla
nice
pliku wykonywalnego.setuid przypisuje każdemu użytkownikowi, który może wykonać plik, efektywny identyfikator UID właściciela pliku (w tym przypadku
root
) podczas wykonywania pliku, a więc jest równoważny z uruchomieniem tego użytkownika. setguid robi to samo dla efektywnego GID.Lub możesz to zrobić bezpieczniej:
Pamiętaj, że musisz ponownie zalogować się na swoje konto, aby nowa grupa zaczęła obowiązywać.
źródło