необходимо вручную включить внутренний компоновщик в XFCE4, это не имеет никакого отношения драйверам VGA.
войти
Settings > Xfce 4 Settings Manager > Window Manager Tweaks
Как другие сказали, нет никакого способа ожидать на "не" идентификатор процесса. Однако этот шаблон кода не кажется, что плохо мне, таким образом, я предлагаю его как предложенный способ достигнуть того, что Вы после.
Это использует массивы Bash, которые можно затем дать как список к wait
команда.
Измененная версия Вашего примера кода, cmd.bash
.
!/bin/bash
array[0]=1
array[0]=2
sleep 30 &
pid=$!
pidArr=()
for i in ${array[@]}; do
for n in $(seq 3); do
if [ $n -eq 1 ]; then
sleep 31 > file &
pidArr+=($!)
else
sleep 32 >> file &
pidArr+=($!)
fi
done
done
echo ${pidArr[@]}
Я занял место sleep
команды в этом примере только для моделирования некоторых длительных заданий, что мы можем фон. Они не имеют никакого отношения к этому кроме действовать как заместители.
Также финал echo
команда там просто, таким образом, мы видим то, что происходит, когда для циклов завершаются. В конечном счете мы заменим его фактическим wait
команда, но позволяют нам не обогнать нас.
Поэтому давайте запустим нашу программу и посмотрим то, что происходит.
$ ./cmd.bash
24666 24667 24668
Теперь, если мы проверяем ps
:
$ ps -eaf|grep sleep
saml 24664 1 0 22:28 pts/9 00:00:00 sleep 30
saml 24666 1 0 22:28 pts/9 00:00:00 sleep 31
saml 24667 1 0 22:28 pts/9 00:00:00 sleep 32
saml 24668 1 0 22:28 pts/9 00:00:00 sleep 32
Если мы будем ожидать немного, то они в конечном счете закончатся. Но это показывает, что, если мы добавляем идентификаторы процесса к массиву, мы можем echo
их впоследствии.
Поэтому давайте изменим это echo
наметьте и загрузите a wait
выровняйте теперь, что-то вроде этого:
wait ${pidArr[@]}
Теперь, когда мы выполняем нашу измененную версию, мы видим, что она ожидает на ВСЕХ идентификаторах процесса:
$ ./cmd.bash
... после передач ~30 секунд
$
Мы возвращаем нашу подсказку. Таким образом, мы успешно ожидали всех процессов. Быстрая проверка ps
:
$ ps -eaf|grep sleep
$
Таким образом, это работало.
Что случилось только с
wait
Как help wait
примечания:
Ожидает процесса, определенного идентификатором, который может быть идентификатором процесса или спецификацией задания, и сообщает о ее состоянии завершения. Если идентификатор не дан, ожидает всех в настоящее время активных дочерних процессов, и статус возврата является нулем.
Вы хотите к, "все еще позволяют другому фоновому процессу продолжаться"? Просто disown
это. Следование Вашему примеру:
command1 & disown %1
command2 & command2 & command2 &
wait