Linux에서 실행하는 프로그램에 다른 프로그램보다 높은 우선순위를 부여하고 싶습니다. sudo 액세스 권한이 있고 sudo 및 Nice 명령을 사용해 보았습니다. 특히 다음 명령이 포함된 RUN.sh라는 bash 스크립트 파일을 실행했습니다.
나쁘지 않음 --10 nohup mpirun -np 1 ${bin}/pw.x < Cu8.30nc.crystal.in > Cu8.30nc.crystal.out
그래서 sudo RUN.sh를 입력했는데 mpirun이 내가 루트로 실행 중임을 감지했다고 말했는데 이는 매우 위험합니다. 오류 메시지는 다음과 같습니다.
mpirun이 루트로 실행하려는 시도를 감지했습니다. 루트에서 실행하는 것은강하게오류(예: TMPDIR 정의) 또는 오류로 인해 운영 체제 파일 시스템에 치명적인 손상이 발생하여 시스템을 사용할 수 없는 상태가 될 수 있으므로 이 방법은 사용하지 않는 것이 좋습니다.
cmd 라인에 --allow-run-as-root 옵션을 추가하여 이 보호를 무시할 수 있습니다. 그러나 우리는 그렇게 하지 말 것을 강력히 권고한다는 점을 거듭 강조합니다. 그렇게 할 때 발생하는 위험은 전적으로 귀하의 책임입니다.
기본적으로 시스템에 그러한 위험을 초래하지 않고 프로그램에 우선순위를 부여할 수 있는 방법이 있는지 알고 싶습니다. 도움을 주셔서 미리 감사드립니다.
답변1
권한이 없는 사용자로 실행한 다음 루트로 다시 시작할 수 있습니다.
$ sleep 100 &
[1] 8128
$ ps -fu steeldriver | grep [s]leep
steeldriver 8128 4353 0 14:54 pts/1 00:00:00 sleep 100
$ sudo renice -10 8128
8128 (process ID) old priority 0, new priority -10
다음을 수행하여 프로세스 소유자가 변경되지 않았는지 확인합니다.
$ ps -fu steeldriver | grep [s]leep
steeldriver 8128 4353 0 14:54 pts/1 00:00:00 sleep 100