Я использую ruby для запуска фонового сервиса. Я сохраняю PID для этого сервиса, чтобы прекратить его позже. Допустим, для простоты мне нужно запустить фоновый сервис "sleep 1000"
. Я использую эту команду, и она работает правильно
child_pid = fork {exec("sleep 1000")} # => 7845
ps
7845 pts/15 00:00:00 sleep
child_pid
хранит PID сна. Однако когда я пытаюсь перенаправить стандартный вывод в файл (для ведения журнала), он ведет себя по-другому.
child_pid = fork {exec("sleep 1000 > sleep.log")} # => 7829
В этом случае child_pid
- это PID процесса sh, а процесс ожидания принимает другой PID.
ps
7829 pts/15 00:00:00 sh
7832 pts/15 00:00:00 sleep
Есть ли объяснения этому?