Я пытаюсь ограничить разрешенный подпроцесс в сценарии ksh. Я пытаюсь использовать ulimit (жесткие или мягкие значения), но подпроцесс всегда нарушает лимит (если занимает больше времени, чем разрешено).
# value for a test
Sc_Timeout=2
Sc_FileOutRun=MyScript.log.Running
Sc_Cmd=./AScriptToRunInSubShell.sh
(
ulimit -Ht ${Sc_Timeout}
ulimit -St ${Sc_Timeout}
time (
${Sc_Cmd} >> ${Sc_FileOutRun} 2>&1
) >> ${Sc_FileOutRun} 2>&1
# some other command not relevant for this
)
результат:
1> ./MyScript.log.Running
ulimit -Ht 2
ulimit -St 2
1>> ./MyScript.log.Running 2>& 1
real 0m11.45s
user 0m3.33s
sys 0m4.12s
Я ожидаю ошибку тайм-аута с системным или пользовательским временем, например, 0m2.00s
Когда я делаю тест непосредственно из командной строки, ulimit Hard, похоже, эффективно ограничивает время, но не в сценарии.
Система тестирования/разработки - это AIX 6.1, но также должна работать и другая версия, а также на солнце и Linux.