
プロセスをnice値-20で開始したいのですが、これには次のようなコマンドを使用する必要があります。
sudo nice -n -20 matlab
ただし、これにより matlab も root として起動します。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 プログラムを起動できました。X セッションを所有しているユーザーとは別のユーザーとして X プログラムを実行する場合は、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シェルラッパーを作成する(修正)サイレントフェイルエラー)
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」のログインシェルを調整する
sudo usermod -s /usr/local/bin/wmatlab sid
ssh
使用してmatlabを起動しますXforward
ssh -X sid@localhost
答え4
@jordanm が言ったように、sudo はやめてください。自分のプロセスに nice を付けて優先度を下げることができます。
nice -20 matlab
いいえsudo
。