(OSX 10.7) Используемое приложение позволяет назначать сценарии для вызова, когда определенные действия происходят в приложении. Я назначил bash script и он называется, проблема в том, что мне нужно выполнить несколько команд, подождать 30 секунд, а затем выполнить еще несколько команд. Если у меня есть bash script сделать "sleep 30", все приложение замерзает в течение 30 секунд, пока мой script закончит.
Я попытался перевести 30-секундное ожидание (и второй набор команд) в отдельный script и вызвать "./secondScript &". но приложение все еще сидит там в течение 30 секунд, ничего не делая. Я предполагаю, что приложение ожидает завершения script и всех дочерних процессов.
Я пробовал эти варианты для вызова второго script из основного script, все они имеют одинаковую проблему:
- nohup./secondScript &
- ((./secondScript и) и)
- (./secondScript и)
- nohup script -q/dev/null secondScript &
У меня нет возможности изменить приложение и сообщить ему, чтобы он запустил мой script и не дождался его завершения.
Как запустить процесс (я бы предпочел, чтобы процесс был на языке сценариев), так что новый процесс не является дочерним элементом текущего процесса?
Спасибо, Крис
p.s. Я попробовал команду "отменить", и это тоже не помогло. Мой главный script выглядит следующим образом:
[initial commands]
echo Launching second script
./secondScript &
echo Looking for jobs
jobs
echo Sleeping for 1 second
sleep 1
echo Calling disown
disown
echo Looking again for jobs
jobs
echo Main script complete
и что я получаю для вывода:
Launching second script
Looking for jobs
[1]+ Running ./secondScript &
Sleeping for 1 second
Calling disown
Looking again for jobs
Main script complete
и на этом этапе вызывающее приложение сидит там в течение 45 секунд, ожидая завершения второго скрипта.
p.p.s
Если в верхней части основного script я выполняю "ps", единственное, что он возвращает, это идентификатор процесса интерактивного сеанса bash, который я открывал в отдельном окне терминала.
Значение $SHELL:/bin/bash
Если я выполняю "ps -p $$", он правильно сообщает мне
PID TTY TIME CMD
26884 ?? 0:00.00 mainScript
Если я выполняю "lsof -p $$", он дает мне все виды результатов (я не вставлял все столбцы здесь, считая их не соответствующими):
FD TYPE NAME
cwd DIR /private/tmp/blahblahblah
txt REG /bin/bash
txt REG /usr/lib/dyld
txt REG /private/var/db/dyld/dyld_shared_cache_x86_64
0 PIPE
1 PIPE -> 0xffff8041ea2d10
2 PIPE -> 0xffff 8017d21cb
3r DIR /private/tmp/blahblah
4r REG /Volumes/DATA/blahblah
255r REG /Volumes/DATA/blahblah