Чтобы все работало, мне нужно было перезапустить httpd
дважды, а не один раз:
docker kill --signal="USR1" cgi_test # (x2)
Я подумал, может быть, это проблема USR1
сигнала (Graceful Restart), но у меня было то же самое с [113 ] сигнал (перезагрузить сейчас). Чтобы применить изменения, мне нужно отправить сигнал дважды. Так выглядит httpd
проблема с контейнером.
Я хотел бы немного расширить и уточнить ответ хаоса .
Если вы окружите свою команду обратными кавычками, вам не нужно (явно) вызовите system () вообще. Обратные апострофы выполняют команду и возвращают результат в виде строки. Затем вы можете присвоить значение переменной следующим образом:
output = `ls`
p output
или
printf output # escapes newline chars
Иначе:
f = open("|ls")
foo = f.read()
Обратите внимание, что это - символ "канала" прежде "ls" в открытом. Это может также использоваться для питания данных во вход стандарта программ, а также чтение его стандартного вывода.
Я обнаружил, что следующее полезно, если вам нужно возвращаемое значение:
result = %x[ls]
puts result
Я специально хотел вывести список идентификаторов всех процессов Java на моем компьютере , и использовал это:
ids = %x[ps ax | grep java | awk '{ print $1 }' | xargs]
В качестве прямой замены системы (...) вы можете использовать Open3.popen3 (...)
Дальнейшее обсуждение: http://tech.natemurray.com/2007/03/ruby-shell-commands.html