如何以-20的nice值啟動一個進程而不給它root權限?

如何以-20的nice值啟動一個進程而不給它root權限?

我想以 -20 的良好值啟動一個進程。這需要我使用類似的命令

sudo nice -n -20 matlab

但是,這也會以 root 身分啟動 matlab。有沒有辦法讓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 提供密碼 - 也許是因為您剛剛已經提供了密碼 - 您可以添加一個&來將整個過程放在後台。

由於您已經使用 sudo 命令成為 root,因此su不會要求您輸入密碼。我能夠從 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 shell 包裝器(修復靜默失敗錯誤
    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”的登入shell
    sudo usermod -s /usr/local/bin/wmatlab sid
    
  8. ssh使用with啟動 matlabXforward
    ssh -X sid@localhost
    

答案4

正如 @jordanm 所說,放棄 sudo。您可以優化自己的進程以給予它們較低的優先順序:

nice -20 matlab

sudo

相關內容