LINUX.ORG.RU

Bash+wine(вылет)

 , , ,


1

1

Приветствую, светлые головы. Встала задача написать скрипт, который будет запускать обновление программы ГАРАНТ. Сам ГАРАНТ крутится на Play On Linux.

#!/bin/bash
del_zips(){
	echo Delta deleting...
	rm -rf /home/admins/.PlayOnLinux/wineprefix/Garant/drive_c/Program\ Files/Garant-Server/delta/*
}
del_zips
wait
start_download_tool(){
	echo Downloading update. Please wait.....
	/usr/share/playonlinux/playonlinux --run "download" %F -auto -dsc 90 -nofinalmessage
	echo done
}
start_download_tool
wait
update_tool(){
    echo Updating Garant...
    /usr/share/playonlinux/playonlinux --run "dataupd" %F -auto -nobackup -nofinalmessage
}
download_delta(){
    if pgrep "F1Download.run" > /dev/null
    then download_delta
    else update_tool
    fi
}
download_delta
wait
exit 0

[/cut]

Итак, что я пытаюсь здесь делать... Удаляю уже скачанные обновления. Запускаю программу загрузки обновления с ключами самой программы. Затем после окончания работы download, запускаю функцию с условием. Если процесс с именем "F1Download.run" существует, тогда проверять снова и снова, пока не произойдет его завершение и после этого запускаем утилиту dataupd.
Проблема в том, что программа запускается и тут же закрывается и процесс самоуничтожается.

[cut=Вот выхлоп консоли]

admins@garant:~$ ./garant.sh 
Delta deleting...
Done!
Downloading update. Please wait.....
Looking for python... 2.7.15+ - wxversion(s): 3.0-gtk3
selected
[main] Message: PlayOnLinux (4.2.12) is starting
[clean_tmp] Message: Cleaning temp directory
Script started /home/admins/.PlayOnLinux/shortcuts/download
[POL_System_CheckFS] Message: Checking filesystem for download.exe
[POL_Wine] Message: Running wine- download.exe %F -auto -dsc 90 -nofinalmessage (Working directory : /home/admins/.PlayOnLinux/wineprefix/Garant/drive_c/Program Files/Garant-Server)
[POL_Wine] Message: Notice: PlayOnLinux deliberately disables winemenubuilder. See http://www.playonlinux.com/fr/page-26-Winemenubuilder.html
[POL_Wine] Message: Wine return: 0
done
Updating Garant...
Looking for python... 2.7.15+ - wxversion(s): 3.0-gtk3
selected
[main] Message: PlayOnLinux (4.2.12) is starting
[clean_tmp] Message: Cleaning temp directory
Script started /home/admins/.PlayOnLinux/shortcuts/dataupd
[POL_System_CheckFS] Message: Checking filesystem for dataupd.exe
[POL_Wine] Message: Running wine- dataupd.exe %F -auto -nobackup -nofinalmessage (Working directory : /home/admins/.PlayOnLinux/wineprefix/Garant/drive_c/Program Files/Garant-Server)
[POL_Wine] Message: Notice: PlayOnLinux deliberately disables winemenubuilder. See http://www.playonlinux.com/fr/page-26-Winemenubuilder.html
[POL_Wine] Message: Wine return: 0
Updating Garant...
Looking for python... 2.7.15+ - wxversion(s): 3.0-gtk3
selected
[main] Message: PlayOnLinux (4.2.12) is starting
[clean_tmp] Message: Cleaning temp directory
Script started /home/admins/.PlayOnLinux/shortcuts/dataupd
[POL_System_CheckFS] Message: Checking filesystem for dataupd.exe
[POL_Wine] Message: Running wine- dataupd.exe %F -auto -nobackup -nofinalmessage (Working directory : /home/admins/.PlayOnLinux/wineprefix/Garant/drive_c/Program Files/Garant-Server)
[POL_Wine] Message: Notice: PlayOnLinux deliberately disables winemenubuilder. See http://www.playonlinux.com/fr/page-26-Winemenubuilder.html
[POL_Wine] Message: Wine return: 0
admins@garant:~$ 

[/cut]

Не могу понять, что не так. Почему происходит вылет. Пробовал запускать из консоли только одну утилиту - вылет. С ярлыка - работает.


Последнее исправление: markovnik007 (всего исправлений: 5)

мне нравится ваш стиль

download_delta(){
    if pgrep "F1Download.run" > /dev/null
    then download_delta
    else update_tool
    fi
}
download_delta
wait
exit 0
anonymous
()
Ответ на: мне нравится ваш стиль от anonymous

Блииииин)))))) Поторопился) Очень забавно))) В общем проблемы 3: 1) Мои руки и мои мозги. 2) Вылет приложения после запуска 3) Как мне реализовать ожидание выполнения функции..

markovnik007
() автор топика
Ответ на: комментарий от markovnik007

Поправил. Убрал белеберду с функцией

download_delta(){
    if pgrep "F1Download.run" > /dev/null
    then download_delta
    else update_tool
    fi
}
download_delta

Добавил вместо этого

while pgrep "F1Download.run" > /dev/null; do sleep 1; done

Теперь осталось понять почему происходит самопроизвольное закрытие процесса. Подскажите в какую сторону хотя бы попытаться копнуть. Не знаю в чем именно проблема, но пока ваял это поделие у меня нормально работала утилита download. А потом крашиться уже начала. Я грешу, что падает wine.

markovnik007
() автор топика

Что значит с ярлыка работает? Там, наверное, параметры нужные есть или переменные окружения, которых у тебя нет.

turtle_bazon ★★★★★
()
Ответ на: комментарий от turtle_bazon

Все заработало. Проблему я нашел. Отдельное спасибо за стеб))) Он натолкнул меня на то, что я написал фигню)

markovnik007
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.