`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

노트

관련 정보