LINUX.ORG.RU

Запуск приложения wine в фоне или под другим пользователем

 ,


0

1

Всем привет. Система Ubuntu 16.04 (i386). Использую связку wine@etersoft + 1C 8.2.19.130(локальная, ут 10.3). Все работает замечательно и без особых нареканий, за исключением шрифтов (но это отдельная тема и сильно не беспокоит). До этого на windows, использовал для обмена bat'ник вызываемый по расписанию, стандартными средствами винды под другим пользователем - переписал в скрипт sh. Запускаю, все отрабатывает.Вот собственно команда:

#!/bin/sh
wine "/home/administrator/wine_c/Program Files/1cv82/8.2.19.130/bin/1cv8.exe" 
ENTERPRISE /F/home/administrator/wine_c/1C_Data/Base /NObmen /P12345 
/Execute "/home/administrator/wine_c/1C_Data/Base/1c_obmen_rib.epf"
Она запускает 1С под пользователем Obmen, открывает обработку «1c_obmen_rib.epf», которая выполняет обмен и после закрывает открытую 1С. В винде это делалось через обычный планировщик заданий под другим пользователем и было совершенно не заметно. И собственно проблема в том, что не хватает знаний у меня еще, как запустить этот скрипт/команду так чтобы окно 1С не вылезало на весь экран при каждом обмене у текущего пользователя. С расписанием все понятно - cron. а вот как можно в фоне под текущим или под другим пользователем запустить ума не приложу, все облазил, дельного не нашел для себя ничего. Подскажите, уважаемые, в какую сторону смотреть и возможно ли это вообще?


Да возможно sudo -u youranotheruser wine чего-то там.

Но:

1. Оно требует пароль - твой пароль. Можно обойти отредактировав в команде visudo (man visudo) почитаешь что и как.

2. У того пользователя от которого ты собираешься пускать команду wine должен быть профиль wine в домашнем каталоге (или как настроишь переменную окружения WINEPREFIX, но важно что бы у этого пользователя были там права) с запускаемой командой.

3. Вместо планировщика задач можно использовать cron. man cron. man crontab

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

под пользователем Obmen

Если этот пользователь уже существует, проще от него сразу сделать crontab и оно будет пускать что укажешь по распорядку, как укажешь.

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

Спасибо, за направление! буду сейчас пробовать, по результату отпишу

eii ()
Ответ на: комментарий от teod0r

Мне отчего то на ум пришло sudo, тем более что его можно пускать без пароля, настроив visudo.

Ygor ★★★★★ ()

как запустить этот скрипт/команду так чтобы окно 1С не вылезало на весь экран при каждом обмене у текущего пользователя. С расписанием все понятно - cron. а вот как можно в фоне под текущим или под другим пользователем запустить ума не приложу

погугли как создавать иксовую сессию в xvfb. с помощью переменной DISPLAY запускать графическое приложение в xvfb, пусть оно обменивается там, завершается и закрывает за собой иксы.

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

Так пробовал, для wine все равно окно с обменом настырно открывается.. имхо все дело в wine

eii ()
Ответ на: комментарий от bl

А вот это очень интересно, почитаю сегодня. Я если правильно понял, доп иксовая сессия будет создаваться под текущим пользователем? Тогда вообще прекрасно, минимум телодвижений и доп пользователя не надо создавать

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

Можно всё сделать в отдельной X сессии:

xinit script.sh -- :2
А в скрипте что-то вроде:
#!/bin/sh
/usr/bin/xterm &
XTERM_PID=$!
/usr/bin/wine "/home/administrator/wine_c/Program Files/1cv82/8.2.19.130/bin/1cv8.exe" ENTERPRISE /F/home/administrator/wine_c/1C_Data/Base /NObmen /P12345 /Execute "/home/administrator/wine_c/1C_Data/Base/1c_obmen_rib.epf"
kill -9 $XTERM_PID

Ввиду того, что приложение на wine запускается довольно долго открытая x сессия из-за отсутствия клиентов закроется сразу после открытия. Поэтому я запуская в фоне любое X приложение, например xterm.

Для запуска в xini пути в скрипте лучше указывать полные до запускаемых программ. Да и путь до самого скрипта тоже.

kostik87 ★★★★★ ()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

Спасибо огромное за подробный пример! на счет полных путей уже на опыте вчера выяснил. Что получится обязательно напишу

eii ()
Ответ на: комментарий от kostik87

В общем так..

в скрипте написал

#!/bin/sh
/usr/bin/xterm &
XTERM_PID=$!
/usr/bin/wine "/home/administrator/wine_c/Program Files/1cv82/8.2.19.130/bin/1cv8.exe" ENTERPRISE /F/home/administrator/wine_c/1C_Data/Base /NObmen /P12345 /Execute "/home/administrator/wine_c/1C_Data/Base/1c_obmen_rib.epf"
kill -9 $XTERM_PID

запускаю из консоли командой

xinit /usr/local/bin/exchange.sh -- :2

запускается x-сессия, но не в фоне, а вот что вижу перед собой: https://ibb.co/fnxxCa

обмен идет, все отрабатыевается и закрывается окно 1С и сессия, и вот что пишет в консоли.. https://ibb.co/df6JJF

Друзья мои, что я не доделал? подскажите, пожалуйста

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