В начале моего bash-скрипта я запускаю flock, чтобы гарантировать, что скрипт не запустится дважды одновременно. Часть скрипта показывает xclock, но как фоновую команду. Итак, я вижу часы, и скрипт завершается (часы все еще отображаются, очевидно). Но когда я хочу перезапустить скрипт, он не позволяет мне это сделать, потому что он все еще заблокирован. Похоже, что блокировка снимается только при закрытии xclock.
Чего я не понимаю, так это почему блокировка остается, когда я запускаю x-приложение в качестве фонового процесса и скрипт завершается. Является ли процесс x-app дочерним по отношению к процессу, выполняющему скрипт? Вот сценарий
#!/bin/bash
fd=200
eval "exec $fd>/tmp/test.lock"
if flock -n $fd; then
xclock &
else
echo "locked"
fi
Я был бы очень признателен, если бы кто-нибудь мог объяснить это?
Спасибо, Ральф
eval
. - person Charles Duffy   schedule 24.10.2015&
не определен и не задокументирован, чтобы сделать процесс полностью независимым. - person Charles Duffy   schedule 24.10.2015