
我想以 -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
-- 隨意更改
- 建立 matlab 元資料目錄
sudo mkdir /var/lib/matlab
- 新增指定使用者啟動matlab並授予權限
sudo useradd -d /var/lib/matlab sid sudo chown sid:sid /var/lib/matlab
- 設定用戶密碼
sudo passwd sid
- 將以下內容附加到
/etc/security/limits.conf
sid - priority -10
- 設定並複製 ssh 密鑰以自動登入(可選)
ssh-keygen -t rsa #following key passwd misc ssh-copy-id sid@localhost #using sid's passwd
- 建立 matlab shell 包裝器(修復靜默失敗錯誤)
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
- 調整“sid”的登入shell
sudo usermod -s /usr/local/bin/wmatlab sid
ssh
使用with啟動 matlabXforward
ssh -X sid@localhost
答案4
正如 @jordanm 所說,放棄 sudo。您可以優化自己的進程以給予它們較低的優先順序:
nice -20 matlab
不sudo
。