Linux에서 실행중인 프로그램의 실행 시간을 제한하고 싶습니다. 내 SCons는 스크립트에 라인처럼 넣어 :시간 제한이있는 Scons 명령
명령 (","COM "", "ulimit를 1 -t, myprogram")
및 무한 루프 프로그램을 테스트 : 그것은하지 않았다 일과 프로그램은 영원히 달렸다.
내가 누락 된 항목이 있습니까?
는 - TSF
Linux에서 실행중인 프로그램의 실행 시간을 제한하고 싶습니다. 내 SCons는 스크립트에 라인처럼 넣어 :시간 제한이있는 Scons 명령
명령 (","COM "", "ulimit를 1 -t, myprogram")
및 무한 루프 프로그램을 테스트 : 그것은하지 않았다 일과 프로그램은 영원히 달렸다.
내가 누락 된 항목이 있습니까?
는 - TSF
ulimit -t 1
한계가 CPU 시간을 1 초로 설정되는 것을 의미한다. 무한 루프 프로그램이 어떤 종류의 내부 루프에 sleep
을 사용하면 CPU 시간을 거의 사용하지 않습니다. 이것은 시계 시간에 진짜의 1 초안에 죽지 않을 것이라는 것을 의미합니다. 실제로 1 초 할당을 사용하는 데 몇 분 또는 몇 시간이 걸릴 수 있습니다.
SCons 외부에서 명령을 실행하면 어떻게됩니까?
bash: ulimit: cpu time: cannot modify limit: Operation not permitted
편집 : 아마도 당신은 한계가 이미 0으로 설정되어있는 경우
ulimit -t 1; ./myprogram
는 예를 들어, 다음과 같은 말을 할 수있다 ... 모두의 제한을 변경할 수있는 권한이 없습니다 그것은 그런 것 같습니다 the -t option is broken on Ubuntu 9.04. 수정본은 2009 년 6 월 5 일에 커밋되었지만 업데이트가 적용될 때까지 다소 시간이 걸릴 수 있습니다. 9.10까지는 수정되지 않을 수 있습니다.
역사적으로이 문제는 Ubuntu 10.04에서 더 이상 존재하지 않습니다.
또한이 스크립트 사용할 수 있습니다:
(http://newsgroups.derkeiler.com/Archive/Comp/comp.sys.mac.system/2005-12/msg00247.html에서 촬영)
#!/bin/sh
# timeout script
#
usage()
{
echo "usage: timeout seconds command args ..."
exit 1
}
[[ $# -lt 2 ]] && usage
seconds=$1; shift
timeout()
{
sleep $seconds
kill -9 $pid >/dev/null 2>/dev/null
}
eval "[email protected]" &
pid=$!
timeout &
wait $pid
.
내 프로그램 무한 루프가 (C에서) 같은되었다 : 동안 (1) X = 1; 그래서 잠을 자지 못했습니다. - tsf – Tsf
이것은 Scons의 문제가 아닌 것 같습니다! 시도했지만 ulimit -t 1; ./myprogram 리눅스 페도라 설치에서 작동했지만 (중단되었습니다) 우분투에서는 작동하지 않았습니다. 나는 그것이 어떤 설정 값에 달려 있는지 확인해야한다. 감사합니다. – Tsf
아! 나는 openSuse에서 그것을 시험해 보았고 효과가 있었다. 우분투에서 ... 아무것도. 1 초 후에도 오류는 발생하지 않지만 kill은 발생하지 않습니다. – richq