`ulimit -e`と`renice`の違いは何ですか?

`ulimit -e`と`renice`の違いは何ですか?

低CPUとディスクI / Oでバックアップスクリプトを実行したいです。

次の間に違いはありますか?

#!/bin/bash

ulimit -e 19
ionice -c3 -p $$

これ:

#!/bin/bash

ionice -c3 -p $$
renice -n 19 -p $$

ベストアンサー1

それらの間に大きな違いがあります。

  • ulimit -eRLIMIT_NICE設定は、プロセスで使用または設定できる良い値の上限です。setprioritynice

  • renice実行中のプロセスの優先順位を変更します。

行為strace:

$ cat test.sh
#!/bin/bash

ulimit -e 19

それから:

$ strace ./test.sh
...................................................
read(255, "#!/bin/bash\n\nulimit -e 19\n", 26) = 26
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
getrlimit(RLIMIT_NICE, {rlim_cur=0, rlim_max=0}) = 0
getrlimit(RLIMIT_NICE, {rlim_cur=0, rlim_max=0}) = 0
setrlimit(RLIMIT_NICE, {rlim_cur=19, rlim_max=19}) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
read(255, "", 26)                       = 0
exit_group(0)

ご覧のとおり、syscallは値を変更するためにulimit呼び出されるだけです。setrlimitRLIMIT_NICE

ノート

おすすめ記事