Форум программистов, компьютерный форум CyberForum.ru

С++ под Linux

Войти
Регистрация
Восстановить пароль
 
KepDbIk
2 / 2 / 0
Регистрация: 28.03.2014
Сообщений: 16
#1

Скрипт для запуска программы - C++ Linux

27.12.2016, 02:34. Просмотров 540. Ответов 9
Метки нет (Все метки)

Всем привет! Не знаю, куда правильнее написать, поэтому пока сюда.
Написал программу в windows, но ее нужно запустить на линуксе (запуск удаленный, если что). Я в скриптах ничего не понимаю, поэтому мне дали два файла для запуска. Один из них:
Bash
1
2
3
4
5
6
7
8
#!/bin/sh
#PBS -l nodes=10:ppn=1
#PBS -e node-037:
#PBS -o node-037:
export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:/usr/lib64/openmpi/lib/openmpi
 
hostname
/usr/lib64/openmpi/bin/mpiexec -mca btl openib,self -x LD_LIBRARY_PATH==/usr/lib64/openmpi/lib:/usr/lib64/openmpi/lib/openmpi -machinefile $PBS_NODEFILE $PBS_O_WORKDIR/rent_main_2
Да, программа выполнилась, но в ней (rent_main_2) было запрограммировано создание файла (.txt) с результатами работы, который, собственно, и не создается. (Этот скрипт создает логи выполнения программы (файл успешного выполнения и файл ошибок), поэтому сразу подумал на него). Возможно, дело и не в скрипте. Но если в нем, то напишите пожалуйста, как мне решить проблему создания этого файла. Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2016, 02:34     Скрипт для запуска программы
Посмотрите здесь:

Параметр запуска программы - C++ Linux
Здравствуйте. Программа получает на вход поток данных через cat (cat file | prog). Но в программе argc == 1 -> argv == null. Что не так...

Ошибка "Permission denied" при попытке запуска программы - C++ Linux
Не могу запустить свой "Hello world". Написал программу в текстовом файле, как положено. Hello.cpp Далее в терминале, запущенном из папки...

Программы для програмирования на С++ - C++ Linux
Использую линукс убунту.Подскажите приложение похожее на Object Pascal.Тип чтоб кнопки тягать и тд))Язык должен быть С++

[C++] Какие флаги указать линкеру для компиляции программы? - C++ Linux
Делаю программу,которая использует внешнюю библиотеку SDL. В настройках проекта (работаю в Code::Blocks) указал в опциях линкера...

Написание программы для того чтобы парсить логи Squid - C++ Linux
Кто сможет помочь или полностью написать минимальный набор функций или кто-то может быть уже писал такую программу, буду рад любой помощи!

Создать две программы для записи информации в FIFO и чтения из нее - C++ Linux
/* Программа 05-4.с, осуществляющая однонаправленную связь через FIFO между процессом-родителем и процессом-ребенком */ #include...

Контроль запуска одной копии приложения - C++ Linux
Привет всем! Я только учусь писать на С++ под Linux, поэтому не могли бы вы мне помощь в следующей проблемме. Как в Линуксе...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RefSol
228 / 167 / 40
Регистрация: 31.10.2010
Сообщений: 532
27.12.2016, 03:11     Скрипт для запуска программы #2
KepDbIk, а компилировали программу на C++ тоже в Windows?
вопрос снят
KepDbIk
2 / 2 / 0
Регистрация: 28.03.2014
Сообщений: 16
27.12.2016, 03:23  [ТС]     Скрипт для запуска программы #3
RefSol, я не написал - на удаленном компьютере есть компилятор для с и с++.
я просто закидываю туда мой *.срр или *.с и два файлика со скриптами (первый, как я понял, для запуска компиляции и выполнения, а второй для создания файлов ("успешности" и ошибок) после выполнения программы. его текст я представил выше)
RefSol
228 / 167 / 40
Регистрация: 31.10.2010
Сообщений: 532
27.12.2016, 03:55     Скрипт для запуска программы #4
KepDbIk, тогда для понимания что Вам надо прикрепите листинг С++. Проще всего написать простую программу на С++, точно работающую как надо и на ней уже отлаживать скрипт.
Humanoid
Почетный модератор
9819 / 3817 / 162
Регистрация: 12.06.2008
Сообщений: 11,434
27.12.2016, 11:10     Скрипт для запуска программы #5
Из какой директории запускаете скрипт? Может, он создаёт в текущей директории... например, в /home/<user> ?
KepDbIk
2 / 2 / 0
Регистрация: 28.03.2014
Сообщений: 16
27.12.2016, 11:43  [ТС]     Скрипт для запуска программы #6
Humanoid, да нет, я облазил все что можно и нигде не нашел. да и создаваться он должен, я думаю, как и в windows, в папке с исходным кодом (т.е. собственно туда, куда я и закидываю все мои файлы)
п.с. все скрипты и остальные файлы я закидываю в одну "рабочую" папку на том компьютере.

Добавлено через 4 минуты
RefSol, текст программы не из самых маленьких, поэтому для отладки механизма запуска я использую самую упрощенную версию, в которой в .txt записывается результат 2+2) да и от самого текста моей программы ничего не зависит, как мне объяснили.
RefSol
228 / 167 / 40
Регистрация: 31.10.2010
Сообщений: 532
27.12.2016, 11:49     Скрипт для запуска программы #7
KepDbIk, программа может запускаться, но работать не корректно, или ни чего не выводить, поэтому проверять скрипт лучше на программе которая работает просто и выводит любые тестовые данные, хоть "2х2". Об этом Вам и писал ранее.
Есть ли у пользователя от имени которого запускается скрипт права на запись в данную директорию?
AlexVRud
442 / 152 / 38
Регистрация: 04.07.2014
Сообщений: 426
27.12.2016, 13:44     Скрипт для запуска программы #8
KepDbIk, для начала вам прислали не просто скрипт запуска, а пример скрипта-задания для системы управления заданиями PBS Pro (или Torque).

Вычисления, вы собираетесь запускать на кластере.

Поэтому рекомендация: связаться с администраторами вашего вычислительного кластера и пройти у них мини курс по основам запуска MPI заданий на кластере.

В вашем случае:

Bash
1
#!/bin/sh
- большинство скриптов в Linux начинаются с такой строки-комментария в которой говорится какой программой он должен выполняться.
Поучите написание скриптов на bash: http://rus-linux.net/nlib.php?name=/...uide-02-2.html

Bash
1
2
3
#PBS -l nodes=10:ppn=1
#PBS -e node-037:
#PBS -o node-037:
Эти строки-комментарии предназначены для системы управления заданиями на кластере. Первая просит 10 узлов по одному процессору на каждом. Ни или по простому: вы просите выделить вам 10 ядер процессоров, на любых серверах (хоть на одном, хоть на нескольких).
Следующие две строки задают имена выходных файлов. Мой совет их убрать из скрипта.

Bash
1
export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:/usr/lib64/openmpi/lib/openmpi
Таким образом вы говорите где лежат библиотечные файлы OpenMPI. Способ очень странный, обычно можно встреть более универсальный module load opnempi, но для этого должен быть настроен кластер. Уточните пример запуска заданий в справке по работе с кластером.

Bash
1
hostname
Просто выведет имя сервера на котором PBS/Torque запустил реально вашу задачу.

Bash
1
/usr/lib64/openmpi/bin/mpiexec -mca btl openib,self -x LD_LIBRARY_PATH==/usr/lib64/openmpi/lib:/usr/lib64/openmpi/lib/openmpi -machinefile $PBS_NODEFILE $PBS_O_WORKDIR/rent_main_2
В этой строке вам надо менять только rent_main_2 на имя вашей скомпилированной программы.

Хотя у меня опять претензия ко всей этой строке. Большинство параметров здесь должны были быть настроены администратором кластера.
На большинстве кластеров такой скрип сводится к

Bash
1
2
3
4
5
6
7
8
9
#!/bin/bash
#PBS -N mpi_hello
#PBS -l select=10
 
module load openmpi
 
cd $PBS_O_WORKDIR
 
mpiexec ./mpi_hello_program_name
KepDbIk
2 / 2 / 0
Регистрация: 28.03.2014
Сообщений: 16
27.12.2016, 19:15  [ТС]     Скрипт для запуска программы #9
RefSol, AlexVRud, большое спасибо за ответы! буду пробовать отлаживать мою программу.
AlexVRud, спасибо, что расписал, что все это значит (да, я уже читал про скрипты и пытался разобраться как они пишутся). Скрипт запускает другой, тестовый проект, который есть на кластере, поэтому полагаю, что он должен быть корректным. Если будут еще вопросы, а они наверняка появятся)) , то напишу сюда.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2017, 15:46     Скрипт для запуска программы
Еще ссылки по теме:

Скрипт для запуска программы и автоматической идентификации пользователя - AutoIt
Всем добрый вечер. Поставили задачу такого плана (решить надо срочно, вот и обращаюсь) Есть программа, которая отвечает за охрану...

Запустить скрипт после запуска другой программы - VBScript/JScript
Подскажите пожалуйста, как прикрепить этот файл к приложению, чтоб при запуске этого приложения он срабатывал. Зарание спасибо.

Скрипт для запуска скайпа - Ubuntu Linux
Помогите решить проблему пожалуйста) Необходимо превратить ubuntu 11.04 rus в скайп-машину.Должен быть компьютер, предназначенный только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gavrasio
-16 / 14 / 0
Регистрация: 22.01.2013
Сообщений: 154
23.02.2017, 15:46     Скрипт для запуска программы #10
А просто:

$ wine file.exe

или что-то подобное в Вашем дибустриве.
Yandex
Объявления
23.02.2017, 15:46     Скрипт для запуска программы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru